UNPKG

@uniswap/v4-core

Version:

🦄 Core smart contracts of Uniswap v4

1 lines • 115 kB
{"abi":[{"type":"constructor","inputs":[{"name":"_manager","type":"address","internalType":"contract IPoolManager"}],"stateMutability":"nonpayable"},{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSelectors","inputs":[],"outputs":[{"name":"excludedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"executor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract NestedActionExecutor"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzArtifactSelector[]","components":[{"name":"artifact","type":"string","internalType":"string"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"unlock","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unlockCallback","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x60803461012b57601f614dd438819003918201601f19168301916001600160401b038311848410176101175780849260209460405283398101031261012b57516001600160a01b038116810361012b57600c805460ff19166001908117909155601f80546001600160a81b03191660089390931b610100600160a81b0316929092171790819055602180546001600160a01b03191633179055604051906133fa8083016001600160401b038111848210176101175760409284926119da843960081c6001600160a01b031681523360208201520301905ff0801561010c57602080546001600160a01b0319166001600160a01b03929092169190911790556040516118aa90816101308239f35b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c9081631ed7831c14610ecc575080632ade388014610c9e5780633e5e3c2314610bf65780633f7286f414610b4e57806348c8949114610a8c57806366d9a9a01461092f57806385226c8114610886578063916a17c6146107b057806391dd7346146103d0578063b0464fdc146102fb578063b5508aa914610253578063ba414fa614610210578063c34c08e5146101bf578063e20c9f71146101065763fa7626d4146100c3575f80fd5b3461010357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010357602060ff601f54166040519015158152f35b80fd5b503461010357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101035760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b8181106101935761018f8561018381870382611230565b60405191829182610f70565b0390f35b825473ffffffffffffffffffffffffffffffffffffffff1684526020909301926001928301920161016c565b503461010357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010357602073ffffffffffffffffffffffffffffffffffffffff815416604051908152f35b503461010357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101035760206102496116c1565b6040519015158152f35b503461010357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101035760195461028e81611271565b9161029c6040519384611230565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b8383106102de576040518061018f87826110c6565b6001602081926102ed85611289565b8152019201920191906102c9565b503461010357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010357601c5461033681611271565b916103446040519384611230565b818352601c81527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b838310610386576040518061018f8782611143565b60026020600192604051610399816111e7565b73ffffffffffffffffffffffffffffffffffffffff86541681526103be85870161141d565b83820152815201920192019190610371565b503461074d576103df36611002565b8101919060208184031261074d5780359067ffffffffffffffff821161074d570182601f8201121561074d5780359061041782611271565b936104256040519586611230565b82855260208501916020839460051b82010191821161074d57602001915b818310610797575050508251600181149081610751575b501561064e5750905061048f61048a73ffffffffffffffffffffffffffffffffffffffff601f5460081c1661179a565b61181a565b806040517f5090d6c6000000000000000000000000000000000000000000000000000000006020820152600481526104c8602482611230565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561064b578161052391604051809381927ff28dceb3000000000000000000000000000000000000000000000000000000008352602060048401526024830190610fbf565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156106405761062b575b508073ffffffffffffffffffffffffffffffffffffffff601f5460081c166044604051809581937f48c89491000000000000000000000000000000000000000000000000000000008352602060048401528160248401525af191821561061e5761018f926105fe575b506105d961048a73ffffffffffffffffffffffffffffffffffffffff601f5460081c1661179a565b604051906105e8602083611230565b8152604051918291602083526020830190610fbf565b610619903d8084833e6106118183611230565b81019061138c565b6105b1565b50604051903d90823e3d90fd5b8161063591611230565b61010357805f610548565b6040513d84823e3d90fd5b50fd5b73ffffffffffffffffffffffffffffffffffffffff6020541690813b1561074d576040517f7938323a00000000000000000000000000000000000000000000000000000000815260206004820152935160248501819052849160448301915f905b8082106106f75750505091815f81819503925af180156106ec576106d8575b61018f91506105d9565b505f6106e391611230565b61018f5f6106ce565b6040513d5f823e3d90fd5b9180945092909251906007821015610720576020816001938293520194019201869392916106af565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f80fd5b90501561076a578051600781101561072057155f61045a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8235600781101561074d57815260209283019201610443565b3461074d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261074d57601d546107ea81611271565b906107f86040519283611230565b80825260208201601d5f527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f5f915b83831061083c576040518061018f8782611143565b6002602060019260405161084f816111e7565b73ffffffffffffffffffffffffffffffffffffffff865416815261087485870161141d565b83820152815201920192019190610827565b3461074d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261074d57601a546108c081611271565b906108ce6040519283611230565b808252601a5f9081527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b838310610912576040518061018f87826110c6565b60016020819261092185611289565b8152019201920191906108fd565b3461074d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261074d57601b5461096981611271565b906109776040519283611230565b808252602082019081601b5f527f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc15f915b838310610a5157848660405191829160208301906020845251809152604083019060408160051b85010192915f905b8282106109e657505050500390f35b91936020610a41827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0600195979984950301865288519083610a318351604084526040840190610fbf565b9201519084818403910152611071565b96019201920185949391926109d7565b60026020600192604051610a64816111e7565b610a6d86611289565b8152610a7a85870161141d565b838201528152019201920191906109a8565b3461074d57601f5f610a9d36611002565b908183604473ffffffffffffffffffffffffffffffffffffffff875460081c16937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604051988997889687947f48c89491000000000000000000000000000000000000000000000000000000008652602060048701528160248701528686013785858286010152011681010301925af180156106ec57610b3957005b610b4c903d805f833e6106118183611230565b005b3461074d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261074d5760405180602060175491828152019060175f527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15905f5b818110610bca5761018f8561018381870382611230565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610bb3565b3461074d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261074d5760405180602060185491828152019060185f527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e905f5b818110610c725761018f8561018381870382611230565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610c5b565b3461074d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261074d57601e54610cd881611271565b90610ce66040519283611230565b808252602082019081601e5f527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3505f915b838310610e3457848660405191829160208301906020845251809152604083019060408160051b85010192915f905b828210610d5557505050500390f35b91939092947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09082030182528451906020604082019273ffffffffffffffffffffffffffffffffffffffff81511683520151916040602083015282518091526060820190602060608260051b8501019401925f5b828110610deb5750505050506020806001929601920192018594939192610d46565b9091929394602080610e27837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087600196030189528951610fbf565b9701950193929101610dc9565b604051610e40816111e7565b73ffffffffffffffffffffffffffffffffffffffff8354168152600183018054610e6981611271565b91610e776040519384611230565b81835260208301905f5260205f20905f905b838210610eaf575050505060019282602092836002950152815201920192019190610d17565b600160208192610ebe86611289565b815201930191019091610e89565b3461074d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261074d57601654808252602082019060165f527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289905f5b818110610f445761018f8561018381870382611230565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610f2d565b60206040818301928281528451809452019201905f5b818110610f935750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101610f86565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b9060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261074d5760043567ffffffffffffffff811161074d578260238201121561074d5780600401359267ffffffffffffffff841161074d576024848301011161074d576024019190565b90602080835192838152019201905f5b81811061108e5750505090565b82517fffffffff0000000000000000000000000000000000000000000000000000000016845260209384019390920191600101611081565b602081016020825282518091526040820191602060408360051b8301019401925f915b8383106110f857505050505090565b9091929394602080611134837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187528951610fbf565b970193019301919392906110e9565b602081016020825282518091526040820191602060408360051b8301019401925f915b83831061117557505050505090565b90919293946020806111d8837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187526040838b5173ffffffffffffffffffffffffffffffffffffffff815116845201519181858201520190611071565b97019301930191939290611166565b6040810190811067ffffffffffffffff82111761120357604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761120357604052565b67ffffffffffffffff81116112035760051b60200190565b90604051915f8154908160011c9260018316928315611382575b60208510841461135557848752869390811561131557506001146112d1575b506112cf92500383611230565b565b90505f9291925260205f20905f915b8183106112f95750509060206112cf928201015f6112c2565b60209193508060019154838589010152019101909184926112e0565b602093506112cf9592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f6112c2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b93607f16936112a3565b60208183031261074d5780519067ffffffffffffffff821161074d570181601f8201121561074d5780519067ffffffffffffffff821161120357604051926113fc601f84017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200185611230565b8284526020838301011161074d57815f9260208093018386015e8301015290565b90604051918281549182825260208201905f5260205f20925f905b806007830110611634576112cf9454918181106115fe575b8181106115c8575b818110611592575b81811061155c575b818110611526575b8181106114f0575b8181106114bb575b1061148e575b500383611230565b7fffffffff000000000000000000000000000000000000000000000000000000001681526020015f611486565b9260206001917fffffffff0000000000000000000000000000000000000000000000000000000085831b168152019301611480565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560401b168152019301611478565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560601b168152019301611470565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560801b168152019301611468565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560a01b168152019301611460565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560c01b168152019301611458565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560e01b168152019301611450565b9160089193506101006001917fffffffff000000000000000000000000000000000000000000000000000000008754818160e01b168352818160c01b166020840152818160a01b166040840152818160801b166060840152818160601b166080840152818160401b1660a0840152818160201b1660c08401521660e0820152019401920185929391611438565b60085460ff1680156116d05790565b506040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d60048201527f6661696c656400000000000000000000000000000000000000000000000000006024820152602081604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9081156106ec575f91611768575b50151590565b90506020813d602011611792575b8161178360209383611230565b8101031261074d57515f611762565b3d9150611776565b602073ffffffffffffffffffffffffffffffffffffffff916024604051809481937ff135baaa0000000000000000000000000000000000000000000000000000000083527fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab236004840152165afa9081156106ec575f916117685750151590565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561074d57604051907ff7fe347700000000000000000000000000000000000000000000000000000000825215156004820152600160248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156106ec576118935750565b5f6112cf9161123056fea164736f6c634300081a000a60a06040523461020b57604051601f6133fa38819003918201601f19168301916001600160401b038311848410176101f757808492604094855283398101031261020b578051906001600160a01b038216820361020b57602001516001600160a01b038116919082900361020b57600160ff19600c541617600c55600160ff19601f541617601f556080525f606061009561020f565b607719815260786020820152670de0b6b3a7640000604082015201526378ffff8865ffffffffffff196024541617602455670de0b6b3a76400006025555f6026555f60606100e161020f565b607719815260786020820152670de0b6b3a763ffff19604082015201526378ffff8865ffffffffffff196027541617602755670de0b6b3a763ffff196028555f6029556040516060810181811060018060401b038211176101f7576bb504f333f9de6484597d89b39160409182526001815260631960208201520152600160ff19602a541617602a55606319602b556bb504f333f9de6484597d89b360018060a01b0319602c541617602c556402dfd1c040602d55633ade57d0602e5560018060a01b031960235416176023556040516131cb908161022f823960805181818161066f015281816108d101528181610cc901528181610ff7015281816112e60152818161165001528181611bd60152612ccc0152f35b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b60405190608082016001600160401b038111838210176101f75760405256fe6080806040526004361015610012575f80fd5b5f3560e01c9081631b9ec89e14612020575080631ed7831c14611f785780632ade388014611d4a5780633e5e3c2314611ca25780633f7286f414611bfa578063481c6a7514611b8c57806366d9a9a014611a2f5780637938323a1461059b57806385226c81146104f2578063916a17c61461041c57806391dd734614610389578063b0464fdc146102b3578063b5508aa91461020a578063ba414fa6146101c8578063e20c9f71146101105763fa7626d4146100cc575f80fd5b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c57602060ff601f54166040519015158152f35b5f80fd5b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c5760405180602060155491828152019060155f527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475905f5b81811061019c576101988561018c8187038261223e565b6040519182918261227f565b0390f35b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610175565b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c576020610200612855565b6040519015158152f35b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c5760195461024481612366565b90610252604051928361223e565b80825260195f9081527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b8383106102965760405180610198878261237e565b6001602081926102a58561249f565b815201920192019190610281565b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c57601c546102ed81612366565b906102fb604051928361223e565b80825260208201601c5f527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a2115f915b83831061033f576040518061019887826123fb565b6002602060019260405161035281612222565b73ffffffffffffffffffffffffffffffffffffffff86541681526103778587016125a2565b8382015281520192019201919061032a565b3461010c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c5760043567ffffffffffffffff811161010c573660238201121561010c57806004013567ffffffffffffffff811161010c573691016024011161010c5761019860405161040560208261223e565b5f81526040519182916020835260208301906122ce565b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c57601d5461045681612366565b90610464604051928361223e565b80825260208201601d5f527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f5f915b8383106104a8576040518061019887826123fb565b600260206001926040516104bb81612222565b73ffffffffffffffffffffffffffffffffffffffff86541681526104e08587016125a2565b83820152815201920192019190610493565b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c57601a5461052c81612366565b9061053a604051928361223e565b808252601a5f9081527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b83831061057e5760405180610198878261237e565b60016020819261058d8561249f565b815201920192019190610569565b3461010c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c5760043567ffffffffffffffff811161010c573660238201121561010c5780600401356105f581612366565b91610603604051938461223e565b8183526024602084019260051b8201019036821161010c57602401915b818310611a16578373ffffffffffffffffffffffffffffffffffffffff60205416156119ee575f5b81518110156119ec5760208160051b8301015160078110156119bf57600181036108c657507f0000000000000000000000000000000000000000000000000000000000000000906106a061069b83612abe565b612b3e565b6040517f5090d6c6000000000000000000000000000000000000000000000000000000006020820152600481526106d860248261223e565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561010c575f61073391604051809381927ff28dceb30000000000000000000000000000000000000000000000000000000083526020600484015260248301906122ce565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156108ab576108b6575b506040517f48c89491000000000000000000000000000000000000000000000000000000008152602060048201525f60248201525f816044818373ffffffffffffffffffffffffffffffffffffffff88165af180156108ab576107cb575b506107c561069b600193612abe565b01610648565b913d805f853e6107db818561223e565b83019260208185031261010c5780519067ffffffffffffffff821161010c570183601f8201121561010c5780519167ffffffffffffffff831161087e576040519461084e601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0166020018761223e565b8386526020848401011161010c576001945f6020856107c5968261069b97018386015e83010152509350506107b6565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040513d5f823e3d90fd5b5f6108c09161223e565b83610758565b60028103610cbe57507f0000000000000000000000000000000000000000000000000000000000000000906108fd61069b83612abe565b73ffffffffffffffffffffffffffffffffffffffff6020541673ffffffffffffffffffffffffffffffffffffffff602354169061093b338383612ca7565b9591505061098073ffffffffffffffffffffffffffffffffffffffff60215416610975610969338784612ca7565b96915050863091612ca7565b969150503091612ca7565b96915050604051937ff3cd914c000000000000000000000000000000000000000000000000000000008552610a256004860173ffffffffffffffffffffffffffffffffffffffff60205416815260215473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60225416910152565b60ff602a5416151560a4860152602b5460c486015273ffffffffffffffffffffffffffffffffffffffff602c541660e48601526101206101048601525f610124860152602085610144815f73ffffffffffffffffffffffffffffffffffffffff88165af19485156108ab575f95610c8b575b5073ffffffffffffffffffffffffffffffffffffffff6020541690610b56610b4d73ffffffffffffffffffffffffffffffffffffffff6023541692610b44610ae0338688612ca7565b9a91505073ffffffffffffffffffffffffffffffffffffffff6021541697610b3c610b0c33898c612ca7565b93915050610b2a610b1e308b8d612ca7565b9d9150508a3091612ca7565b9e915050610b3661292e565b91612d79565b610b36612969565b602b5490612aa3565b84610b366129bc565b60628801975f60628a129112908015821691151617610c5e5783610c1a610c2094610c15610c5999610b8d60019d8b610b366129f7565b89604091610bd78351610ba0858261223e565b600c81527f537761702064656c7461203000000000000000000000000000000000000000006020820152868360801d600f0b612d79565b610be38351938461223e565b600c83527f537761702064656c7461203100000000000000000000000000000000000000006020840152600f0b612d79565b612a61565b92612e1e565b73ffffffffffffffffffffffffffffffffffffffff602154169073ffffffffffffffffffffffffffffffffffffffff60235416916130b7565b6107c5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b9094506020813d8211610cb6575b81610ca66020938361223e565b8101031261010c57519388610a97565b3d9150610c99565b60048103610fec57507f0000000000000000000000000000000000000000000000000000000000000000610cf461069b82612abe565b73ffffffffffffffffffffffffffffffffffffffff602054169073ffffffffffffffffffffffffffffffffffffffff60235416610d32338285612ca7565b915050610d7673ffffffffffffffffffffffffffffffffffffffff60215416610d6b610d5f338684612ca7565b98915050853091612ca7565b959150503091612ca7565b93915050604051917f5a6bcfda000000000000000000000000000000000000000000000000000000008352610df760048401602073ffffffffffffffffffffffffffffffffffffffff60026080928281541685526001810154838116602087015262ffffff8160a01c16604087015260b81c820b6060860152015416910152565b6024548060020b60a485015260181c60020b60c484015260255460e48401526026546101048401526101406101248401525f61014484015260408361016481800301815f73ffffffffffffffffffffffffffffffffffffffff8a165af19384156108ab5785935f95610fbb575b5060205473ffffffffffffffffffffffffffffffffffffffff169460235473ffffffffffffffffffffffffffffffffffffffff169333610ea5908689612ca7565b9a91505060215473ffffffffffffffffffffffffffffffffffffffff169433610ecf908888612ca7565b9291505030610edf90898c612ca7565b98915050883090610eef92612ca7565b9d915050610efb61292e565b90610f0592612d79565b610f0d612969565b90610f1792612d79565b8160801d600f0b610f2791612aa3565b83610f306129bc565b90610f3a92612d79565b600f0b610f4691612aa3565b86610f4f6129f7565b90610f5992612d79565b610f6290612a61565b91610f6c93612e1e565b60215473ffffffffffffffffffffffffffffffffffffffff169160235473ffffffffffffffffffffffffffffffffffffffff1690610fa990612a61565b91610fb393612e1e565b6001906107c5565b610fdd91955060403d8111610fe5575b610fd5818361223e565b810190612a8d565b509389610e64565b503d610fcb565b600581036112db57507f000000000000000000000000000000000000000000000000000000000000000061102261069b82612abe565b73ffffffffffffffffffffffffffffffffffffffff6020541673ffffffffffffffffffffffffffffffffffffffff6023541661105f338284612ca7565b91505061109873ffffffffffffffffffffffffffffffffffffffff60215416610d6b61108c338684612ca7565b97915050853091612ca7565b6040517f5a6bcfda00000000000000000000000000000000000000000000000000000000815260205473ffffffffffffffffffffffffffffffffffffffff9081166004830152602154808216602484015260a081901c62ffffff16604484015260b81c60020b60648301526022541660848201529094925090506027548060020b60a483015260181c60020b60c482015260285460e48201526029546101048201526101406101248201525f61014482015260408161016481800301815f73ffffffffffffffffffffffffffffffffffffffff8b165af19384156108ab5786915f956112ba575b5060205473ffffffffffffffffffffffffffffffffffffffff169460235473ffffffffffffffffffffffffffffffffffffffff1693336111c0908689612ca7565b9991505060215473ffffffffffffffffffffffffffffffffffffffff1696336111ea90888a612ca7565b92915050306111fa90898c612ca7565b9a91505088309061120a92612ca7565b9c91505061121661292e565b9061122092612d79565b611228612969565b9061123292612d79565b8160801d600f0b61124291612aa3565b8561124b6129bc565b9061125592612d79565b600f0b61126191612aa3565b8561126a6129f7565b9061127492612d79565b61127d936130b7565b60215473ffffffffffffffffffffffffffffffffffffffff169160235473ffffffffffffffffffffffffffffffffffffffff1690610fb3936130b7565b6112d391955060403d8111610fe557610fd5818361223e565b50938961117f565b6003810361163f57507f000000000000000000000000000000000000000000000000000000000000000061131161069b82612abe565b73ffffffffffffffffffffffffffffffffffffffff602054169073ffffffffffffffffffffffffffffffffffffffff6023541661134f338285612ca7565b91505061137c73ffffffffffffffffffffffffffffffffffffffff60215416610d6b610d5f338684612ca7565b915050602d5491602e54604051937f234266d70000000000000000000000000000000000000000000000000000000085526114276004860173ffffffffffffffffffffffffffffffffffffffff60205416815260215473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60225416910152565b60a485015260c484015261010060e48401525f610104840152602083610124815f73ffffffffffffffffffffffffffffffffffffffff8a165af19182156108ab5785935f93611609575b5060205473ffffffffffffffffffffffffffffffffffffffff169460235473ffffffffffffffffffffffffffffffffffffffff1693336114b2908689612ca7565b9a91505060215473ffffffffffffffffffffffffffffffffffffffff1694336114dc908888612ca7565b92915050306114ec90898c612ca7565b989150508830906114fc92612ca7565b9d91505061150861292e565b9061151292612d79565b61151a612969565b9061152492612d79565b602d549182611532916129a4565b8461153b6129bc565b9061154592612d79565b602e549283611553916129a4565b8961155c6129f7565b9061156692612d79565b8060801d61157390612a32565b600f0b604092835190611586858361223e565b600e82527f446f6e6174652064656c7461203000000000000000000000000000000000000060208301526115b992612d79565b600f0b6115c590612a32565b600f0b918151916115d6908361223e565b600e82527f446f6e6174652064656c746120310000000000000000000000000000000000006020830152610f5992612d79565b935091506020833d8211611637575b816116256020938361223e565b8101031261010c578492519189611471565b3d9150611618565b60061461164e576001906107c5565b7f000000000000000000000000000000000000000000000000000000000000000061167b61069b82612abe565b773200000000000000000000000000000000000000000000007fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff602154161760215560a06040516116cb81612206565b73ffffffffffffffffffffffffffffffffffffffff60205416815260215473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff81841c16604083015260b81c60020b606082015273ffffffffffffffffffffffffffffffffffffffff602254166080820152206117468183612bc1565b505050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561010c5773ffffffffffffffffffffffffffffffffffffffff604051917f98296c540000000000000000000000000000000000000000000000000000000083521660048201525f60248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156108ab576119af575b506040517f6276cbbe0000000000000000000000000000000000000000000000000000000081526118746004820173ffffffffffffffffffffffffffffffffffffffff60205416815260215473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60225416910152565b6bb504f333f9de6484597d89b360a482015260208160c4815f73ffffffffffffffffffffffffffffffffffffffff88165af180156108ab57611971575b506118bb91612bc1565b50505090737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561010c5773ffffffffffffffffffffffffffffffffffffffff604051927f98296c540000000000000000000000000000000000000000000000000000000084521660048301526bb504f333f9de6484597d89b360248301525f82604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9182156108ab57600192611961575b509050610fb3565b5f61196b9161223e565b83611959565b6020813d82116119a7575b816119896020938361223e565b8101031261010c5751918260020b830361010c5791506118bb6118b1565b3d915061197c565b5f6119b99161223e565b846117d3565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b005b7f9096cccb000000000000000000000000000000000000000000000000000000005f5260045ffd5b8235600781101561010c57815260209283019201610620565b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c57601b54611a6981612366565b90611a77604051928361223e565b808252602082019081601b5f527f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc15f915b838310611b5157848660405191829160208301906020845251809152604083019060408160051b85010192915f905b828210611ae657505050500390f35b91936020611b41827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0600195979984950301865288519083611b3183516040845260408401906122ce565b9201519084818403910152612311565b9601920192018594939192611ad7565b60026020600192604051611b6481612222565b611b6d8661249f565b8152611b7a8587016125a2565b83820152815201920192019190611aa8565b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c5760405180602060175491828152019060175f527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15905f5b818110611c76576101988561018c8187038261223e565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201611c5f565b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c5760405180602060185491828152019060185f527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e905f5b818110611d1e576101988561018c8187038261223e565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201611d07565b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c57601e54611d8481612366565b90611d92604051928361223e565b808252602082019081601e5f527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3505f915b838310611ee057848660405191829160208301906020845251809152604083019060408160051b85010192915f905b828210611e0157505050500390f35b91939092947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09082030182528451906020604082019273ffffffffffffffffffffffffffffffffffffffff81511683520151916040602083015282518091526060820190602060608260051b8501019401925f5b828110611e975750505050506020806001929601920192018594939192611df2565b9091929394602080611ed3837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0876001960301895289516122ce565b9701950193929101611e75565b604051611eec81612222565b73ffffffffffffffffffffffffffffffffffffffff8354168152600183018054611f1581612366565b91611f23604051938461223e565b81835260208301905f5260205f20905f905b838210611f5b575050505060019282602092836002950152815201920192019190611dc3565b600160208192611f6a8661249f565b815201930191019091611f35565b3461010c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c5760405180602060165491828152019060165f527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289905f5b818110611ff4576101988561018c8187038261223e565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201611fdd565b3461010c5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010c5761205881612206565b60043573ffffffffffffffffffffffffffffffffffffffff81169081810361010c57825260243573ffffffffffffffffffffffffffffffffffffffff81169081810361010c5760208401526044359062ffffff8216820361010c57816040850152606435928360020b840361010c5783606086015260843573ffffffffffffffffffffffffffffffffffffffff81169586820361010c57608001527fffffffffffffffffffffffff000000000000000000000000000000000000000060205416176020557fffffffffffffffffffffffff000000000000000000000000000000000000000060215416176021557fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff76ffffff00000000000000000000000000000000000000006021549260a01b169116176021557fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff6021549160b81b60190b79ffffff0000000000000000000000000000000000000000000000169116176021557fffffffffffffffffffffffff000000000000000000000000000000000000000060225416176022555f80f35b60a0810190811067ffffffffffffffff82111761087e57604052565b6040810190811067ffffffffffffffff82111761087e57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761087e57604052565b60206040818301928281528451809452019201905f5b8181106122a25750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101612295565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b90602080835192838152019201905f5b81811061232e5750505090565b82517fffffffff0000000000000000000000000000000000000000000000000000000016845260209384019390920191600101612321565b67ffffffffffffffff811161087e5760051b60200190565b602081016020825282518091526040820191602060408360051b8301019401925f915b8383106123b057505050505090565b90919293946020806123ec837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0866001960301875289516122ce565b970193019301919392906123a1565b602081016020825282518091526040820191602060408360051b8301019401925f915b83831061242d57505050505090565b9091929394602080612490837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187526040838b5173ffffffffffffffffffffffffffffffffffffffff815116845201519181858201520190612311565b9701930193019193929061241e565b90604051915f8154908160011c9260018316928315612598575b60208510841461256b57848752869390811561252b57506001146124e7575b506124e59250038361223e565b565b90505f9291925260205f20905f915b81831061250f5750509060206124e5928201015f6124d8565b60209193508060019154838589010152019101909184926124f6565b602093506124e59592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f6124d8565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b93607f16936124b9565b90604051918281549182825260208201905f5260205f20925f905b8060078301106127b9576124e5945491818110612783575b81811061274d575b818110612717575b8181106126e1575b8181106126ab575b818110612675575b818110612640575b10612613575b50038361223e565b7fffffffff000000000000000000000000000000000000000000000000000000001681526020015f61260b565b9260206001917fffffffff0000000000000000000000000000000000000000000000000000000085831b168152019301612605565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560401b1681520193016125fd565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560601b1681520193016125f5565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560801b1681520193016125ed565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560a01b1681520193016125e5565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560c01b1681520193016125dd565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560e01b1681520193016125d5565b9160089193506101006001917fffffffff000000000000000000000000000000000000000000000000000000008754818160e01b168352818160c01b166020840152818160a01b166040840152818160801b166060840152818160601b166080840152818160401b1660a0840152818160201b1660c08401521660e08201520194019201859293916125bd565b9081602091031261010c575190565b60085460ff1680156128645790565b506040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d60048201527f6661696c656400000000000000000000000000000000000000000000000000006024820152602081604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9081156108ab575f916128fc575b50151590565b90506020813d602011612926575b816129176020938361223e565b8101031261010c57515f6128f6565b3d915061290a565b6040519061293d60408361223e565b600e82527f43616c6c65722064656c746120300000000000000000000000000000000000006020830152565b6040519061297860408361223e565b600e82527f43616c6c65722064656c746120310000000000000000000000000000000000006020830152565b81810392915f138015828513169184121617610c5e57565b604051906129cb60408361223e565b601082527f4578656375746f722064656c74612030000000000000000000000000000000006020830152565b60405190612a0660408361223e565b601082527f4578656375746f722064656c74612031000000000000000000000000000000006020830152565b600f0b7fffffffffffffffffffffffffffffffff800000000000000000000000000000008114610c5e575f0390565b7f80000000000000000000000000000000000000000000000000000000000000008114610c5e575f0390565b919082604091031261010c576020825192015190565b9190915f8382019384129112908015821691151617610c5e57565b602073ffffffffffffffffffffffffffffffffffffffff916024604051809481937ff135baaa0000000000000000000000000000000000000000000000000000000083527fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab236004840152165afa9081156108ab575f916128fc5750151590565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561010c57604051907ff7fe347700000000000000000000000000000000000000000000000000000000825215156004820152600160248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156108ab57612bb75750565b5f6124e59161223e565b602090602473ffffffffffffffffffffffffffffffffffffffff94936040518481019182526006604082015260408152612bfc60608261223e565b51902060405195869384927f1e2eaeaf0000000000000000000000000000000000000000000000000000000084526004840152165afa9182156108ab575f92612c73575b5073ffffffffffffffffffffffffffffffffffffffff8216918060a01c60020b9162ffffff808360b81c169260d01c1690565b9091506020813d602011612c9f575b81612c8f6020938361223e565b8101031261010c5751905f612c40565b3d9150612c82565b9290612cb3908461313f565b9273ffffffffffffffffffffffffffffffffffffffff807f0000000000000000000000000000000000000000000000000000000000000000169181612cf8848361313f565b95165f5216602052602060405f206024604051809481937ff135baaa00000000000000000000000000000000000000000000000000000000835260048301525afa9081156108ab575f91612d4a575090565b90506020813d602011612d71575b81612d656020938361223e565b8101031261010c575190565b3d9150612d58565b90737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561010c575f91612de060405194859384937f714a2f13000000000000000000000000000000000000000000000000000000008552600485015260248401526060604484015260648301906122ce565b0381737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156108ab57612bb75750565b9081602091031261010c5751801515810361010c5790565b90919073ffffffffffffffffffffffffffffffffffffffff1680612ebe57505073ffffffffffffffffffffffffffffffffffffffff600460209260405194859384927f11da60b4000000000000000000000000000000000000000000000000000000008452165af180156108ab57612e935750565b612eb49060203d602011612eb7575b612eac818361223e565b810190612846565b50565b503d612ea2565b90929173ffffffffffffffffffffffffffffffffffffffff1691823b1561010c57604051937fa58411940000000000000000000000000000000000000000000000000000000085528260048601525a945f816024818389819bf180156108ab5761308e575b5073ffffffffffffffffffffffffffffffffffffffff168430821461301a576020929160649160405195869485937f23b872dd000000000000000000000000000000000000000000000000000000008552600485015288602485015260448401525af1801561300f57916020918493612fe2575b505b6004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af1908115612fd65750612e935750565b604051903d90823e3d90fd5b61300190833d8511613008575b612ff9818361223e565b810190612e06565b505f612f97565b503d612fef565b6040513d85823e3d90fd5b929050604460209260405194859384927fa9059cbb00000000000000000000000000000000000000000000000000000000845288600485015260248401525af1801561300f57916020918493613071575b50612f99565b61308790833d851161300857612ff9818361223e565b505f61306b565b61309b9195505f9061223e565b5f9373ffffffffffffffffffffffffffffffffffffffff612f23565b91929073ffffffffffffffffffffffffffffffffffffffff16803b1561010c575f928360649273ffffffffffffffffffffffffffffffffffffffff948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af180156108ab57612bb75750565b73ffffffffffffffffffffffffffffffffffffffff168061315f57503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa9081156108ab575f91612d4a57509056fea164736f6c634300081a000a","sourceMap":"1022:1250:91:-:0;;;;;;;;;;;;;-1:-1:-1;;1022:1250:91;;;;-1:-1:-1;;;;;1022:1250:91;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1022:1250:91;;;;;;3166:4:2;1022:1250:91;;-1:-1:-1;;1022:1250:91;3166:4:2;1022:1250:91;;;;;;;;;-1:-1:-1;;;;;;1022:1250:91;;;;;;-1:-1:-1;;;;;1022:1250:91;;;;;;;;;;1336:17;1022:1250;;-1:-1:-1;;;;;;1022:1250:91;1343:10;1022:1250;;;;;;1374:39;;;;-1:-1:-1;;;;;1374:39:91;;;;;;;;1022:1250;1374:39;;;;;;1022:1250;;-1:-1:-1;;;;;1022:1250:91;;;1343:10;1022:1250;;;;1374:39;;;-1:-1:-1;1374:39:91;;;;;1022:1250;;;-1:-1:-1;;;;;;1022:1250:91;-1:-1:-1;;;;;1022:1250:91;;;;;;;;;;;;;;;;;;;1374:39;1022:1250;;;-1:-1:-1;1022:1250:91;;;;;1374:39;1022:1250;;;-1:-1:-1;1022:1250:91;;;;;-1:-1:-1;1022:1250:91;;-1:-1:-1;1022:1250:91;","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f905f3560e01c9081631ed7831c14610ecc575080632ade388014610c9e5780633e5e3c2314610bf65780633f7286f414610b4e57806348c8949114610a8c57806366d9a9a01461092f57806385226c8114610886578063916a17c6146107b057806391dd7346146103d0578063b0464fdc146102fb578063b5508aa914610253578063ba414fa614610210578063c34c08e5146101bf578063e20c9f71146101065763fa7626d4146100c3575f80fd5b3461010357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010357602060ff601f54166040519015158152f35b80fd5b503461010357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101035760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b8181106101935761018f8561018381870382611230565b60405191829182610f70565b0390f35b825473ffffffffffffffffffffffffffffffffffffffff1684526020909301926001928301920161016c565b503461010357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010357602073ffffffffffffffffffffffffffffffffffffffff815416604051908152f35b503461010357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101035760206102496116c1565b6040519015158152f35b503461010357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101035760195461028e81611271565b9161029c6040519384611230565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b8383106102de576040518061018f87826110c6565b6001602081926102ed85611289565b8152019201920191906102c9565b503461010357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010357601c5461033681611271565b916103446040519384611230565b818352601c81527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b838310610386576040518061018f8782611143565b60026020600192604051610399816111e7565b73ffffffffffffffffffffffffffffffffffffffff86541681526103be85870161141d565b83820152815201920192019190610371565b503461074d576103df36611002565b8101919060208184031261074d5780359067fff