{"abi":[{"type":"receive","stateMutability":"payable"},{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"LIQUIDITY_PARAMS","inputs":[],"outputs":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MAX_PRICE_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint160","internalType":"uint160"}],"stateMutability":"view"},{"type":"function","name":"MIN_PRICE_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint160","internalType":"uint160"}],"stateMutability":"view"},{"type":"function","name":"REMOVE_LIQUIDITY_PARAMS","inputs":[],"outputs":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"SWAP_PARAMS","inputs":[],"outputs":[{"name":"zeroForOne","type":"bool","internalType":"bool"},{"name":"amountSpecified","type":"int256","internalType":"int256"},{"name":"sqrtPriceLimitX96","type":"uint160","internalType":"uint160"}],"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":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setupRouterCurrenciesAndPoolsWithLiquidity","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"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":"test_gas_swap_settleFromCaller_takeAllToMsgSender","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_gas_swap_settleFromCaller_takeAllToSpecifiedAddress","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_gas_swap_settleWithBalance_takeAllToMsgSender","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_gas_swap_settleWithBalance_takeAllToSpecifiedAddress","inputs":[],"outputs":[],"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":"0x600c8054600160ff199182168117909255601f80548216831790556077196080819052607860a0819052670de0b6b3a764000060c08190525f60e08190526020805465ffffffffffff199081166378ffff8890811790925560219390935560228290556101009490945261012092909252670de0b6b3a763ffff1961014081905261016083905260238054909216909317905560249190915560258190556101e06040526101808390526063196101a08190526bb504f333f9de6484597d89b36101c081905260268054909416909417909255602791909155602880546001600160a01b0319908116909317905560428054600e90841617905560438054909216614000600160a01b03179091555f19604655604755348015610120575f80fd5b5062010e9b80620001305f395ff3fe60806040526004361061017b575f3560e01c8063916a17c6116100d1578063ba414fa61161007c578063d8cc2b4011610057578063d8cc2b4014610447578063e20c9f711461045b578063fa7626d41461046f575f80fd5b8063ba414fa6146103fb578063c2f6c3a91461041f578063c7b8e15d14610433575f80fd5b8063b0f3d802116100ac578063b0f3d80214610369578063b1a73b8a1461037d578063b5508aa9146103e7575f80fd5b8063916a17c61461030757806393ad73ed14610328578063b0464fdc14610355575f80fd5b80633f7286f41161013157806366d9a9a01161010c57806366d9a9a0146102b157806385226c81146102d25780638dd3c5bd146102f3575f80fd5b80633f7286f4146102505780634996879b14610264578063542524dd14610278575f80fd5b80632ade3880116101615780632ade3880146101c657806339cd2013146101e75780633e5e3c231461023c575f80fd5b80630a9254e4146101865780631ed7831c1461019c575f80fd5b3661018257005b5f80fd5b348015610191575f80fd5b5061019a610488565b005b3480156101a7575f80fd5b506101b06104c7565b6040516101bd9190614874565b60405180910390f35b3480156101d1575f80fd5b506101da610534565b6040516101bd9190614918565b3480156101f2575f80fd5b5060235460245460255461021492600281810b936301000000909204900b9184565b60408051600295860b81529390940b60208401529282015260608101919091526080016101bd565b348015610247575f80fd5b506101b061067d565b34801561025b575f80fd5b506101b06106e8565b34801561026f575f80fd5b5061019a610753565b348015610283575f80fd5b5061028c61109e565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bd565b3480156102bc575f80fd5b506102c56110c0565b6040516101bd9190614a86565b3480156102dd575f80fd5b506102e6611239565b6040516101bd9190614b22565b3480156102fe575f80fd5b5061019a611304565b348015610312575f80fd5b5061031b611c12565b6040516101bd9190614b97565b348015610333575f80fd5b5060205460215460225461021492600281810b936301000000909204900b9184565b348015610360575f80fd5b5061031b611d15565b348015610374575f80fd5b5061019a611e18565b348015610388575f80fd5b506026546027546028546103b49260ff16919073ffffffffffffffffffffffffffffffffffffffff1683565b604080519315158452602084019290925273ffffffffffffffffffffffffffffffffffffffff16908201526060016101bd565b3480156103f2575f80fd5b506102e6612509565b348015610406575f80fd5b5061040f6125d4565b60405190151581526020016101bd565b34801561042a575f80fd5b5061019a6126a4565b34801561043e575f80fd5b5061028c612fe7565b348015610452575f80fd5b5061019a612ff7565b348015610466575f80fd5b506101b0613939565b34801561047a575f80fd5b50601f5461040f9060ff1681565b610490611e18565b6104986139a4565b805160549081906104a99082614d02565b5060208281015180516104c2926001850192019061477e565b505050565b6060601680548060200260200160405190810160405280929190818152602001828054801561052a57602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116104ff575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020015f905b82821015610674575f848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561065d578382905f5260205f200180546105d290614c66565b80601f01602080910402602001604051908101604052809291908181526020018280546105fe90614c66565b80156106495780601f1061062057610100808354040283529160200191610649565b820191905f5260205f20905b81548152906001019060200180831161062c57829003601f168201915b5050505050815260200190600101906105b5565b505050508152505081526020019060010190610557565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801561052a57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116104ff575050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801561052a57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116104ff575050505050905090565b604080516101408101825260485473ffffffffffffffffffffffffffffffffffffffff90811660a0830190815260495480831660c085015262ffffff7401000000000000000000000000000000000000000082041660e085015277010000000000000000000000000000000000000000000000900460020b610100840152604a5490911661012083015281526001602080830191909152670de0b6b3a76400008284018190525f6060840181905284518084018652908152608084015292516109c69160069161082591859101614e19565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152605480549192918290829061086a90614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461089690614c66565b80156108e15780601f106108b8576101008083540402835291602001916108e1565b820191905f5260205f20905b8154815290600101906020018083116108c457829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109b6578382905f5260205f2001805461092b90614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461095790614c66565b80156109a25780601f10610979576101008083540402835291602001916109a2565b820191905f5260205f20905b81548152906001019060200180831161098557829003601f168201915b50505050508152602001906001019061090e565b5050509152509092919050613a00565b805160549081906109d79082614d02565b5060208281015180516109f0926001850192019061477e565b50506048546040805173ffffffffffffffffffffffffffffffffffffffff9092166020830152810184905260016060820152610bbe9150600b90608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282019091526054805491929182908290610a7290614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9e90614c66565b8015610ae95780601f10610ac057610100808354040283529160200191610ae9565b820191905f5260205f20905b815481529060010190602001808311610acc57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109b6578382905f5260205f20018054610b3390614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5f90614c66565b8015610baa5780601f10610b8157610100808354040283529160200191610baa565b820191905f5260205f20905b815481529060010190602001808311610b8d57829003601f168201915b505050505081526020019060010190610b16565b80516054908190610bcf9082614d02565b506020828101518051610be8926001850192019061477e565b50506049546040805173ffffffffffffffffffffffffffffffffffffffff90921660208301525f8282015280518083038201815260a0830190915260548054610d8d9450600f93606001919082908290610c4190614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6d90614c66565b8015610cb85780601f10610c8f57610100808354040283529160200191610cb8565b820191905f5260205f20905b815481529060010190602001808311610c9b57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109b6578382905f5260205f20018054610d0290614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2e90614c66565b8015610d795780601f10610d5057610100808354040283529160200191610d79565b820191905f5260205f20905b815481529060010190602001808311610d5c57829003601f168201915b505050505081526020019060010190610ce5565b80516054908190610d9e9082614d02565b506020828101518051610db7926001850192019061477e565b509050505f610f3460546040518060400160405290815f82018054610ddb90614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054610e0790614c66565b8015610e525780601f10610e2957610100808354040283529160200191610e52565b820191905f5260205f20905b815481529060010190602001808311610e3557829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610f27578382905f5260205f20018054610e9c90614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec890614c66565b8015610f135780601f10610eea57610100808354040283529160200191610f13565b820191905f5260205f20905b815481529060010190602001808311610ef657829003601f168201915b505050505081526020019060010190610e7f565b5050505081525050613c14565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b90610f8b908490600401614f08565b5f604051808303815f87803b158015610fa2575f80fd5b505af1158015610fb4573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f5061796d656e74735f737761705f736574746c6546726f6d43616c6c65725f7460448201527f616b65416c6c546f4d736753656e6465720000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca1291506084015b6020604051808303815f875af1158015611074573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110989190614f21565b50505050565b6110bd600173fffd8963efd1fc6a506488495d951d5263988d26614f65565b81565b6060601b805480602002602001604051908101604052809291908181526020015f905b82821015610674578382905f5260205f2090600202016040518060400160405290815f8201805461111390614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461113f90614c66565b801561118a5780601f106111615761010080835404028352916020019161118a565b820191905f5260205f20905b81548152906001019060200180831161116d57829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561122157602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116111ce5790505b505050505081525050815260200190600101906110e3565b6060601a805480602002602001604051908101604052809291908181526020015f905b82821015610674578382905f5260205f2001805461127990614c66565b80601f01602080910402602001604051908101604052809291908181526020018280546112a590614c66565b80156112f05780601f106112c7576101008083540402835291602001916112f0565b820191905f5260205f20905b8154815290600101906020018083116112d357829003601f168201915b50505050508152602001906001019061125c565b604080516101408101825260485473ffffffffffffffffffffffffffffffffffffffff90811660a0830190815260495480831660c085015262ffffff7401000000000000000000000000000000000000000082041660e085015277010000000000000000000000000000000000000000000000900460020b610100840152604a5490911661012083015281526001602080830191909152670de0b6b3a76400008284018190525f606084018190528451808401865290815260808401529251611567916006916113d691859101614e19565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152605480549192918290829061141b90614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461144790614c66565b80156114925780601f1061146957610100808354040283529160200191611492565b820191905f5260205f20905b81548152906001019060200180831161147557829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109b6578382905f5260205f200180546114dc90614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461150890614c66565b80156115535780601f1061152a57610100808354040283529160200191611553565b820191905f5260205f20905b81548152906001019060200180831161153657829003601f168201915b5050505050815260200190600101906114bf565b805160549081906115789082614d02565b506020828101518051611591926001850192019061477e565b50506048546046546040805173ffffffffffffffffffffffffffffffffffffffff90931660208401528201526117599150600c90606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152605480549192918290829061160d90614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461163990614c66565b80156116845780601f1061165b57610100808354040283529160200191611684565b820191905f5260205f20905b81548152906001019060200180831161166757829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109b6578382905f5260205f200180546116ce90614c66565b80601f01602080910402602001604051908101604052809291908181526020018280546116fa90614c66565b80156117455780601f1061171c57610100808354040283529160200191611745565b820191905f5260205f20905b81548152906001019060200180831161172857829003601f168201915b5050505050815260200190600101906116b1565b8051605490819061176a9082614d02565b506020828101518051611783926001850192019061477e565b50506049546040805173ffffffffffffffffffffffffffffffffffffffff909216602083015230908201525f60608201526119509150600e90608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152605480549192918290829061180490614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461183090614c66565b801561187b5780601f106118525761010080835404028352916020019161187b565b820191905f5260205f20905b81548152906001019060200180831161185e57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109b6578382905f5260205f200180546118c590614c66565b80601f01602080910402602001604051908101604052809291908181526020018280546118f190614c66565b801561193c5780601f106119135761010080835404028352916020019161193c565b820191905f5260205f20905b81548152906001019060200180831161191f57829003601f168201915b5050505050815260200190600101906118a8565b805160549081906119619082614d02565b50602082810151805161197a926001850192019061477e565b509050505f611aea60546040518060400160405290815f8201805461199e90614c66565b80601f01602080910402602001604051908101604052809291908181526020018280546119ca90614c66565b8015611a155780601f106119ec57610100808354040283529160200191611a15565b820191905f5260205f20905b8154815290600101906020018083116119f857829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610f27578382905f5260205f20018054611a5f90614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054611a8b90614c66565b8015611ad65780601f10611aad57610100808354040283529160200191611ad6565b820191905f5260205f20905b815481529060010190602001808311611ab957829003601f168201915b505050505081526020019060010190611a42565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b90611b41908490600401614f08565b5f604051808303815f87803b158015611b58575f80fd5b505af1158015611b6a573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f5061796d656e74735f737761705f736574746c6546726f6d43616c6c65725f7460448201527f616b65416c6c546f5370656369666965644164647265737300000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150608401611058565b6060601d805480602002602001604051908101604052809291908181526020015f905b82821015610674575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939491938583019392830182828015611cfd57602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611caa5790505b50505050508152505081526020019060010190611c35565b6060601c805480602002602001604051908101604052809291908181526020015f905b82821015610674575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939491938583019392830182828015611e0057602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611dad5790505b50505050508152505081526020019060010190611d38565b611e20613c46565b602b5460405173ffffffffffffffffffffffffffffffffffffffff90911690611e48906147d2565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff080158015611e7e573d5f803e3d5ffd5b50604580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055602b54604051911690611ed2906147e0565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff080158015611f08573d5f803e3d5ffd5b50604480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790555f611f596004613cd1565b9050805f81518110611f6d57611f6d614f97565b602002602001015160295f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600181518110611fc757611fc7614f97565b6020026020010151602a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060028151811061202157612021614f97565b602002602001015160515f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060038151811061207b5761207b614f97565b6020908102919091010151605280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9283161790556029546120d591165f613de3565b8051603980547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff938416179091556020830151603a8054604086015160608701519386167fffffffffffffffffff0000000000000000000000000000000000000000000000909216919091177401000000000000000000000000000000000000000062ffffff92831602177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff16770100000000000000000000000000000000000000000000009190931602919091179055608090920151603b805490931690821617909155602954602a546121e79291821691165f61407b565b8051604880547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff93841617909155602083015160498054604086015160608701519386167fffffffffffffffffff0000000000000000000000000000000000000000000000909216919091177401000000000000000000000000000000000000000062ffffff92831602177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff16770100000000000000000000000000000000000000000000009190931602919091179055608090920151604a805490931690821617909155602a546051546122f99291821691165f61407b565b8051604b80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff938416179091556020830151604c8054604086015160608701519386167fffffffffffffffffff0000000000000000000000000000000000000000000000909216919091177401000000000000000000000000000000000000000062ffffff92831602177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff16770100000000000000000000000000000000000000000000009190931602919091179055608090920151604d80549093169082161790915560515460525461240b9291821691165f61407b565b8051604e80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff938416179091556020830151604f8054604086015160608701519386167fffffffffffffffffff0000000000000000000000000000000000000000000000909216919091177401000000000000000000000000000000000000000062ffffff92831602177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff1677010000000000000000000000000000000000000000000000919093160291909117905560809092015160508054909316911617905550565b60606019805480602002602001604051908101604052809291908181526020015f905b82821015610674578382905f5260205f2001805461254990614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461257590614c66565b80156125c05780601f10612597576101008083540402835291602001916125c0565b820191905f5260205f20905b8154815290600101906020018083116125a357829003601f168201915b50505050508152602001906001019061252c565b6008545f9060ff16156125eb575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c6564000000000000000000000000000000000000000000000000000060248301525f9163667f9d7090604401602060405180830381865afa158015612679573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061269d9190614f21565b1415905090565b604080516101408101825260485473ffffffffffffffffffffffffffffffffffffffff90811660a0830181815260495480841660c086015262ffffff7401000000000000000000000000000000000000000082041660e086015277010000000000000000000000000000000000000000000000900460020b610100850152604a54831661012085015283526001602080850191909152670de0b6b3a76400008486018190525f606086018190528651928301909652948152608084015260455461276f92168461440a565b6129166006826040516020016127859190614e19565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906127ca90614c66565b80601f01602080910402602001604051908101604052809291908181526020018280546127f690614c66565b80156128415780601f1061281857610100808354040283529160200191612841565b820191905f5260205f20905b81548152906001019060200180831161282457829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109b6578382905f5260205f2001805461288b90614c66565b80601f01602080910402602001604051908101604052809291908181526020018280546128b790614c66565b80156129025780601f106128d957610100808354040283529160200191612902565b820191905f5260205f20905b8154815290600101906020018083116128e557829003601f168201915b50505050508152602001906001019061286e565b805160549081906129279082614d02565b506020828101518051612940926001850192019061477e565b50506029546040805173ffffffffffffffffffffffffffffffffffffffff90921660208301527f8000000000000000000000000000000000000000000000000000000000000000908201525f6060820152612b2d9150600b90608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906129e190614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054612a0d90614c66565b8015612a585780601f10612a2f57610100808354040283529160200191612a58565b820191905f5260205f20905b815481529060010190602001808311612a3b57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109b6578382905f5260205f20018054612aa290614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054612ace90614c66565b8015612b195780601f10612af057610100808354040283529160200191612b19565b820191905f5260205f20905b815481529060010190602001808311612afc57829003601f168201915b505050505081526020019060010190612a85565b80516054908190612b3e9082614d02565b506020828101518051612b57926001850192019061477e565b50506049546040805173ffffffffffffffffffffffffffffffffffffffff90921660208301526001908201525f6060820152612d259150600e90608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282019091526054805491929182908290612bd990614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054612c0590614c66565b8015612c505780601f10612c2757610100808354040283529160200191612c50565b820191905f5260205f20905b815481529060010190602001808311612c3357829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109b6578382905f5260205f20018054612c9a90614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054612cc690614c66565b8015612d115780601f10612ce857610100808354040283529160200191612d11565b820191905f5260205f20905b815481529060010190602001808311612cf457829003601f168201915b505050505081526020019060010190612c7d565b80516054908190612d369082614d02565b506020828101518051612d4f926001850192019061477e565b509050505f612ebf60546040518060400160405290815f82018054612d7390614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054612d9f90614c66565b8015612dea5780601f10612dc157610100808354040283529160200191612dea565b820191905f5260205f20905b815481529060010190602001808311612dcd57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610f27578382905f5260205f20018054612e3490614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054612e6090614c66565b8015612eab5780601f10612e8257610100808354040283529160200191612eab565b820191905f5260205f20905b815481529060010190602001808311612e8e57829003601f168201915b505050505081526020019060010190612e17565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b90612f16908490600401614f08565b5f604051808303815f87803b158015612f2d575f80fd5b505af1158015612f3f573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f5061796d656e74735f737761705f736574746c655769746842616c616e63655f60448201527f74616b65416c6c546f4d736753656e64657200000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150608401611058565b6110bd6401000276a36001614fc4565b604080516101408101825260485473ffffffffffffffffffffffffffffffffffffffff90811660a0830181815260495480841660c086015262ffffff7401000000000000000000000000000000000000000082041660e086015277010000000000000000000000000000000000000000000000900460020b610100850152604a54831661012085015283526001602080850191909152670de0b6b3a76400008486018190525f60608601819052865192830190965294815260808401526045546130c292168461440a565b6132696006826040516020016130d89190614e19565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152605480549192918290829061311d90614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461314990614c66565b80156131945780601f1061316b57610100808354040283529160200191613194565b820191905f5260205f20905b81548152906001019060200180831161317757829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109b6578382905f5260205f200180546131de90614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461320a90614c66565b80156132555780601f1061322c57610100808354040283529160200191613255565b820191905f5260205f20905b81548152906001019060200180831161323857829003601f168201915b5050505050815260200190600101906131c1565b8051605490819061327a9082614d02565b506020828101518051613293926001850192019061477e565b50506048546040805173ffffffffffffffffffffffffffffffffffffffff90921660208301527f8000000000000000000000000000000000000000000000000000000000000000908201525f60608201526134809150600b90608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152605480549192918290829061333490614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461336090614c66565b80156133ab5780601f10613382576101008083540402835291602001916133ab565b820191905f5260205f20905b81548152906001019060200180831161338e57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109b6578382905f5260205f200180546133f590614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461342190614c66565b801561346c5780601f106134435761010080835404028352916020019161346c565b820191905f5260205f20905b81548152906001019060200180831161344f57829003601f168201915b5050505050815260200190600101906133d8565b805160549081906134919082614d02565b5060208281015180516134aa926001850192019061477e565b50506049546040805173ffffffffffffffffffffffffffffffffffffffff909216602083015230908201525f60608201526136779150600e90608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152605480549192918290829061352b90614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461355790614c66565b80156135a25780601f10613579576101008083540402835291602001916135a2565b820191905f5260205f20905b81548152906001019060200180831161358557829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109b6578382905f5260205f200180546135ec90614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461361890614c66565b80156136635780601f1061363a57610100808354040283529160200191613663565b820191905f5260205f20905b81548152906001019060200180831161364657829003601f168201915b5050505050815260200190600101906135cf565b805160549081906136889082614d02565b5060208281015180516136a1926001850192019061477e565b509050505f61381160546040518060400160405290815f820180546136c590614c66565b80601f01602080910402602001604051908101604052809291908181526020018280546136f190614c66565b801561373c5780601f106137135761010080835404028352916020019161373c565b820191905f5260205f20905b81548152906001019060200180831161371f57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610f27578382905f5260205f2001805461378690614c66565b80601f01602080910402602001604051908101604052809291908181526020018280546137b290614c66565b80156137fd5780601f106137d4576101008083540402835291602001916137fd565b820191905f5260205f20905b8154815290600101906020018083116137e057829003601f168201915b505050505081526020019060010190613769565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b90613868908490600401614f08565b5f604051808303815f87803b15801561387f575f80fd5b505af1158015613891573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f5061796d656e74735f737761705f736574746c655769746842616c616e63655f60448201527f74616b65416c6c546f53706563696669656441646472657373000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150608401611058565b6060601580548060200260200160405190810160405280929190818152602001828054801561052a57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116104ff575050505050905090565b60408051808201825260608082526020808301829052835191820184525f828501818152835284518181528083019095529293919290830191906139f8565b60608152602001906001900390816139e35790505b509052919050565b60408051808201909152606080825260208201525f8460200151516001613a279190614ff0565b67ffffffffffffffff811115613a3f57613a3f614c39565b6040519080825280601f01601f191660200182016040528015613a69576020820181803683370190505b5090505f8560200151516001613a7f9190614ff0565b67ffffffffffffffff811115613a9757613a97614c39565b604051908082528060200260200182016040528015613aca57816020015b6060815260200190600190039081613ab55790505b5090505f5b60018251613add9190615003565b811015613b875786602001518181518110613afa57613afa614f97565b6020026020010151828281518110613b1457613b14614f97565b6020026020010181905250865f01518181518110613b3457613b34614f97565b602001015160f81c60f81b838281518110613b5157613b51614f97565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600101613acf565b50838160018351613b989190615003565b81518110613ba857613ba8614f97565b60200260200101819052508460f81b8260018351613bc69190615003565b81518110613bd657613bd6614f97565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053509085526020850152509192915050565b6060815f01518260200151604051602001613c30929190615016565b6040516020818303038152906040529050919050565b30604051613c53906147ee565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff080158015613c89573d5f803e3d5ffd5b50602b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60605f613cef83700100000000000000000000000000000000614527565b90505f5b8360ff16811015613ddc57818181518110613d1057613d10614f97565b60209081029190910101516045546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602482015291169063095ea7b3906044016020604051808303815f875af1158015613daf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613dd391906150a9565b50600101613cf3565b5092915050565b6040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a0810182525f815273ffffffffffffffffffffffffffffffffffffffff8481166020830152610bb882840152603c60608301528381166080830152602b5492517f6276cbbe00000000000000000000000000000000000000000000000000000000815291921690636276cbbe90613e9d9084906c01000000000000000000000000906004016150c8565b6020604051808303815f875af1158015613eb9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613edd919061516e565b50604480546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201529085169163095ea7b391016020604051808303815f875af1158015613f72573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f9691906150a9565b50604454604080516080810182527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2764c8152620d89b46020820152680ad78ebc5ac62000008183018190525f606083015291517f5a6bcfda00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90931692635a6bcfda929161403a9186919060040161518e565b60206040518083038185885af1158015614056573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190613ddc9190614f21565b6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091528273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1611156140dd579192915b506040805160a08101825273ffffffffffffffffffffffffffffffffffffffff80861682528481166020830152610bb882840152603c60608301528381166080830152602b5492517f6276cbbe00000000000000000000000000000000000000000000000000000000815291921690636276cbbe9061416f9084906c01000000000000000000000000906004016150c8565b6020604051808303815f875af115801561418b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906141af919061516e565b50604480546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201529086169163095ea7b391016020604051808303815f875af1158015614244573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061426891906150a9565b50604480546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201529085169163095ea7b391016020604051808303815f875af11580156142fd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061432191906150a9565b50604454604080516080810182527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2764c8152620d89b46020820152680ad78ebc5ac6200000818301525f606082015290517f5a6bcfda00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921691635a6bcfda916143c29185919060040161518e565b6020604051808303815f875af11580156143de573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906144029190614f21565b509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff8416614465575f805f8085875af190508061446057614460835f7ff4b3b1bc000000000000000000000000000000000000000000000000000000006146b0565b611098565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505f81525f60208201525f6040820152508061109857611098847fa9059cbb000000000000000000000000000000000000000000000000000000007ff27f64e4000000000000000000000000000000000000000000000000000000006146b0565b60608260ff1667ffffffffffffffff81111561454557614545614c39565b60405190808252806020026020018201604052801561456e578160200160208202803683370190505b5090505f5b8360ff168160ff161015613ddc57601260405161458f906147fc565b6145999190615280565b604051809103905ff0801580156145b2573d5f803e3d5ffd5b50828260ff16815181106145c8576145c8614f97565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818160ff168151811061461757614617614f97565b60209081029190910101516040517f40c10f190000000000000000000000000000000000000000000000000000000081523060048201526024810185905273ffffffffffffffffffffffffffffffffffffffff909116906340c10f19906044015f604051808303815f87803b15801561468e575f80fd5b505af11580156146a0573d5f803e3d5ffd5b5050600190920191506145739050565b6040517f90bfb8650000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff851660048301527fffffffff0000000000000000000000000000000000000000000000000000000084166024830152608060448301526020601f3d018190040260a0810160648401523d608484015290913d5f60a483013e60048260a4018201527fffffffff0000000000000000000000000000000000000000000000000000000084168260c4018201528160e40181fd5b828054828255905f5260205f209081019282156147c2579160200282015b828111156147c257825182906147b29082614d02565b509160200191906001019061479c565b506147ce92915061480a565b5090565b6123da806200530b83390190565b611c3d80620076e583390190565b616a05806200932283390190565b611168806200fd2783390190565b808211156147ce575f61481d8282614826565b5060010161480a565b50805461483290614c66565b5f825580601f10614841575050565b601f0160209004905f5260205f209081019061485d9190614860565b50565b5b808211156147ce575f8155600101614861565b602080825282518282018190525f918401906040840190835b818110156148c157835173ffffffffffffffffffffffffffffffffffffffff1683526020938401939092019160010161488d565b509095945050505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614a1e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805173ffffffffffffffffffffffffffffffffffffffff168652602090810151604082880181905281519088018190529101906060600582901b8801810191908801905f5b81811015614a04577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a85030183526149ee8486516148cc565b60209586019590945092909201916001016149b4565b50919750505060209485019492909201915060010161493e565b50929695505050505050565b5f8151808452602084019350602083015f5b82811015614a7c5781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101614a3c565b5093949350505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614a1e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752614af060408801826148cc565b9050602082015191508681036020880152614b0b8183614a2a565b965050506020938401939190910190600101614aac565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614a1e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452614b828583516148cc565b94506020938401939190910190600101614b48565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614a1e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815173ffffffffffffffffffffffffffffffffffffffff81511686526020810151905060406020870152614c236040870182614a2a565b9550506020938401939190910190600101614bbd565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b600181811c90821680614c7a57607f821691505b602082108103614cb1577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f8211156104c257805f5260205f20601f840160051c81016020851015614cdc5750805b601f840160051c820191505b81811015614cfb575f8155600101614ce8565b5050505050565b815167ffffffffffffffff811115614d1c57614d1c614c39565b614d3081614d2a8454614c66565b84614cb7565b6020601f821160018114614d81575f8315614d4b5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455614cfb565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015614dce5787850151825560209485019460019092019101614dae565b5084821015614e0a57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b60208152614ea060208201835173ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b6020820151151560c08201526fffffffffffffffffffffffffffffffff60408301511660e08201526fffffffffffffffffffffffffffffffff6060830151166101008201525f608083015161012080840152614f006101408401826148cc565b949350505050565b602081525f614f1a60208301846148cc565b9392505050565b5f60208284031215614f31575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff8281168282160390811115614f9157614f91614f38565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff8181168382160190811115614f9157614f91614f38565b80820180821115614f9157614f91614f38565b81810381811115614f9157614f91614f38565b604081525f61502860408301856148cc565b828103602084015280845180835260208301915060208160051b840101602087015f5b8381101561509b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08684030185526150858383516148cc565b602095860195909350919091019060010161504b565b509098975050505050505050565b5f602082840312156150b9575f80fd5b81518015158114614f1a575f80fd5b60c0810161514b828573ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b73ffffffffffffffffffffffffffffffffffffffff831660a08301529392505050565b5f6020828403121561517e575f80fd5b81518060020b8114614f1a575f80fd5b61520d818473ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b815160020b60a0820152602082015160020b60c0820152604082015160e0820152606082015161010082015261014061012082015260026101408201527f30780000000000000000000000000000000000000000000000000000000000006101608201525f610180820190509392505050565b606081525f6152bc60608301600481527f5445535400000000000000000000000000000000000000000000000000000000602082015260400190565b82810360208401526152f881600481527f5445535400000000000000000000000000000000000000000000000000000000602082015260400190565b91505060ff831660408301529291505056fe60a0604052348015600e575f80fd5b506040516123da3803806123da833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f80fd5b81516001600160a01b0381168114605f575f80fd5b9392505050565b60805161230f6100cb5f395f8181610128015281816101f30152818161035901528181610f0201528181610fde01528181611052015281816110ed0152818161119501528181611270015281816116230152818161187401526118b6015261230f5ff3fe60806040526004361061005b575f3560e01c8063a1bfb5ff11610041578063a1bfb5ff146100b0578063d737d0c7146100c3578063dc4c90d314610117575f80fd5b80634f84885b1461006657806391dd73461461007b575f80fd5b3661006257005b5f80fd5b610079610074366004611c6b565b61014a565b005b348015610086575f80fd5b5061009a610095366004611c6b565b6101d9565b6040516100a79190611cd9565b60405180910390f35b6100796100be366004611c6b565b61025d565b3480156100ce575f80fd5b507f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c5b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a7565b348015610122575f80fd5b506100f27f000000000000000000000000000000000000000000000000000000000000000081565b73ffffffffffffffffffffffffffffffffffffffff7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c16156101b9576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101c2336102f6565b6101cc828261031c565b6101d55f6102f6565b5050565b60603373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461024a576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61025483836103f5565b90505b92915050565b73ffffffffffffffffffffffffffffffffffffffff7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c16156102cc576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102d5336102f6565b6102df828261031c565b4780156102f0576102f03382610432565b506101d55f5b807f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d50565b6040517f48c8949100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906348c89491906103909085908590600401611d73565b5f604051808303815f875af11580156103ab573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103f09190810190611e0a565b505050565b6060365f365f61040587876104a9565b935093509350935061041984848484610551565b505060408051602081019091525f815295945050505050565b5f805f805f85875af19050806103f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c45440000000000000000000000000060448201526064015b60405180910390fd5b365f365f604086351860608701945063ffffffff6040880135169350606063ffffffe0601f860116018060208901351882179150808801905063ffffffff8135169250602081019350508160051b805f5b8281101561052957858101358281189490941793860135601f0163ffffffe016909101602090810191016104fa565b508085018989011083171561054557633b99b53d5f526004601cfd5b50505092959194509250565b8281811461058b576040517faaad13f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b818110156105ea575f8686838181106105a8576105a8611ebc565b919091013560f81c91506105e19050818686858181106105ca576105ca611ebc565b90506020028101906105dc9190611ee9565b6105f2565b5060010161058d565b505050505050565b600b83101561067e576007830361061f573661060e8383610884565b9050610619816108a3565b50505050565b6006830361063d57366106328383610a41565b905061061981610a59565b6009830361065b57366106508383610884565b905061061981610baf565b60088303610679573661066e8383610a41565b905061061981610d64565b61084f565b600c8303610712575f806106928484610ebe565b915091505f6106a083610ee6565b9050818111156106e6576040517f12bacdd300000000000000000000000000000000000000000000000000000000815260048101839052602481018290526044016104a0565b6105ea837f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c83610f8d565b600f83036107a6575f806107268484610ebe565b915091505f61073483611179565b90508181101561077a576040517f8b063d7300000000000000000000000000000000000000000000000000000000815260048101839052602481018290526044016104a0565b6105ea837f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c83611210565b600b83036107dd575f805f6107bb85856112cc565b9250925092506105ea836107ce836112fa565b6107d8858761132d565b610f8d565b600e8303610814575f805f6107f285856112cc565b9250925092506105ea8361080584611390565b61080f8487611442565b611210565b6010830361084f575f805f61082985856112cc565b9250925092506105ea8361083c84611390565b61080f8461084988611179565b90611451565b6040517f5cda29d7000000000000000000000000000000000000000000000000000000008152600481018490526024016104a0565b3660a082101561089b57633b99b53d5f526004601cfd5b505080350190565b5f6108b16020830183611f51565b91505f9050806108c46020850185611fd9565b90505f6108d76060860160408701611ff4565b90506fffffffffffffffffffffffffffffffff8116610904576109016108fc83611179565b6114a5565b90505b365f5b858110156109a65761091c6020880188611f51565b8281811061092c5761092c611ebc565b905060200281019061093e9190612023565b91505f8061094c84876114e8565b909250905061098861098083836fffffffffffffffffffffffffffffffff89165f0361097b60808a018a611ee9565b61161f565b600f0b611748565b965086945061099a6020850185611fd9565b95505050600101610907565b506109b76080870160608801611ff4565b6fffffffffffffffffffffffffffffffff16846fffffffffffffffffffffffffffffffff1610156105ea576109f26080870160608801611ff4565b6040517f8b063d730000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff918216600482015290851660248201526044016104a0565b3661014082101561089b57633b99b53d5f526004601cfd5b5f610a6a60e0830160c08401611ff4565b90506fffffffffffffffffffffffffffffffff8116610ac257610abf6108fc610a9960c0850160a0860161205f565b610ab257610aad6040850160208601611fd9565b611179565b610aad6020850185611fd9565b90505b5f610b11610980610ad8368690038601866120a1565b610ae860c0870160a0880161205f565b610b036fffffffffffffffffffffffffffffffff8716612162565b61097b610100890189611ee9565b9050610b24610100840160e08501611ff4565b6fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff1610156103f057610b60610100840160e08501611ff4565b6040517f8b063d730000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff918216600482015290821660248201526044016104a0565b5f610bbd6020830183611f51565b91505f905080610bd36060850160408601611ff4565b90505f610be36020860186611fd9565b9050366fffffffffffffffffffffffffffffffff8316610c0c57610c096108fc83610ee6565b92505b845b8015610cc957610c216020880188611f51565b60018303818110610c3457610c34611ebc565b9050602002810190610c469190612023565b91505f80610c5484866114e8565b9092509050610c8c610c828383156fffffffffffffffffffffffffffffffff8a1661097b60808a018a611ee9565b600f0b5f036114a5565b9650869550610c9e6020850185611fd9565b945050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01610c0e565b50610cda6080870160608801611ff4565b6fffffffffffffffffffffffffffffffff16846fffffffffffffffffffffffffffffffff1611156105ea57610d156080870160608801611ff4565b6040517f12bacdd30000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff918216600482015290851660248201526044016104a0565b5f610d7560e0830160c08401611ff4565b90506fffffffffffffffffffffffffffffffff8116610dcd57610dca6108fc610da460c0850160a0860161205f565b610dba57610db56020850185611fd9565b610ee6565b610db56040850160208601611fd9565b90505b5f610e20610e14610de3368690038601866120a1565b610df360c0870160a0880161205f565b6fffffffffffffffffffffffffffffffff861661097b610100890189611ee9565b600f0b6108fc90612162565b9050610e33610100840160e08501611ff4565b6fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff1611156103f057610e6f610100840160e08501611ff4565b6040517f12bacdd30000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff918216600482015290821660248201526044016104a0565b5f806040831015610ed657633b99b53d5f526004601cfd5b5050813592602090920135919050565b5f80610f2973ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016308561177d565b90505f811315610f7d576040517f3351b26000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024016104a0565b610f8681612162565b9392505050565b805f03610f9957505050565b6040517fa584119400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a5841194906024015f604051808303815f87803b15801561101f575f80fd5b505af1158015611031573d5f803e3d5ffd5b5050505073ffffffffffffffffffffffffffffffffffffffff83166110e0577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166311da60b4826040518263ffffffff1660e01b815260040160206040518083038185885af11580156110bb573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906106199190612198565b6110eb83838361183b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611155573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106199190612198565b5f806111bc73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016308561177d565b90505f811215610257576040517f4c085bf100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024016104a0565b805f0361121c57505050565b6040517f0b0d9c0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301528381166024830152604482018390527f00000000000000000000000000000000000000000000000000000000000000001690630b0d9c09906064015f604051808303815f87803b1580156112b1575f80fd5b505af11580156112c3573d5f803e3d5ffd5b50505050505050565b5f805f60608410156112e557633b99b53d5f526004601cfd5b50508235936020840135936040013592509050565b5f816113065730610257565b7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c610257565b5f7f8000000000000000000000000000000000000000000000000000000000000000830361137b576113748273ffffffffffffffffffffffffffffffffffffffff166118db565b9050610257565b826113895761137482610ee6565b5081610257565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff8316016113f5577f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c610257565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe73ffffffffffffffffffffffffffffffffffffffff831601611439575030919050565b5090565b919050565b5f826113895761137482611179565b5f61271082111561148e576040517fdeaa01e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61271061149b83856121af565b61025491906121c6565b806fffffffffffffffffffffffffffffffff8116811461143d5761143d7f93dafdf10000000000000000000000000000000000000000000000000000000061198a565b6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091525f806115216020860186611fd9565b90505f8073ffffffffffffffffffffffffffffffffffffffff8084169087161061154c57828661154f565b85835b909250905073ffffffffffffffffffffffffffffffffffffffff8087169083161493506040518060a001604052808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020018860200160208101906115c891906121fe565b62ffffff1681526020016115e260608a0160408b01612217565b60020b81526020016115fa60808a0160608b01611fd9565b73ffffffffffffffffffffffffffffffffffffffff1681525094505050509250929050565b5f807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f3cd914c8860405180606001604052808a151581526020018981526020018a6116965773fffd8963efd1fc6a506488495d951d5263988d2561169d565b6401000276a45b73ffffffffffffffffffffffffffffffffffffffff1681525087876040518563ffffffff1660e01b81526004016116d79493929190612230565b6020604051808303815f875af11580156116f3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117179190612198565b90508515155f8612146117335761172e8160801d90565b61173d565b61173d81600f0b90565b979650505050505050565b5f8082600f0b1215611439576114397f93dafdf10000000000000000000000000000000000000000000000000000000061198a565b5f8073ffffffffffffffffffffffffffffffffffffffff84165f5273ffffffffffffffffffffffffffffffffffffffff831660205260405f2090508473ffffffffffffffffffffffffffffffffffffffff1663f135baaa826040518263ffffffff1660e01b81526004016117f391815260200190565b602060405180830381865afa15801561180e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118329190612198565b95945050505050565b3073ffffffffffffffffffffffffffffffffffffffff831603611899576103f073ffffffffffffffffffffffffffffffffffffffff84167f000000000000000000000000000000000000000000000000000000000000000083611992565b6103f073ffffffffffffffffffffffffffffffffffffffff8416837f000000000000000000000000000000000000000000000000000000000000000084611aaf565b5f73ffffffffffffffffffffffffffffffffffffffff82166118fe575047919050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa158015611966573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102579190612198565b805f5260045ffd5b5f73ffffffffffffffffffffffffffffffffffffffff84166119ed575f805f8085875af19050806119e8576119e8835f7ff4b3b1bc00000000000000000000000000000000000000000000000000000000611b9d565b610619565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505f81525f60208201525f6040820152508061061957610619847fa9059cbb000000000000000000000000000000000000000000000000000000007ff27f64e400000000000000000000000000000000000000000000000000000000611b9d565b5f6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015282604482015260205f6064835f8a5af13d15601f3d1160015f511416171691505080611b96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c454400000000000000000000000060448201526064016104a0565b5050505050565b6040517f90bfb8650000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff851660048301527fffffffff0000000000000000000000000000000000000000000000000000000084166024830152608060448301526020601f3d018190040260a0810160648401523d608484015290913d5f60a483013e60048260a4018201527fffffffff0000000000000000000000000000000000000000000000000000000084168260c4018201528160e40181fd5b5f8060208385031215611c7c575f80fd5b823567ffffffffffffffff811115611c92575f80fd5b8301601f81018513611ca2575f80fd5b803567ffffffffffffffff811115611cb8575f80fd5b856020828401011115611cc9575f80fd5b6020919091019590945092505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081525f611d86602083018486611d2c565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611e0257611e02611d8e565b604052919050565b5f60208284031215611e1a575f80fd5b815167ffffffffffffffff811115611e30575f80fd5b8201601f81018413611e40575f80fd5b805167ffffffffffffffff811115611e5a57611e5a611d8e565b611e8b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611dbb565b818152856020838501011115611e9f575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611f1c575f80fd5b83018035915067ffffffffffffffff821115611f36575f80fd5b602001915036819003821315611f4a575f80fd5b9250929050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611f84575f80fd5b83018035915067ffffffffffffffff821115611f9e575f80fd5b6020019150600581901b3603821315611f4a575f80fd5b73ffffffffffffffffffffffffffffffffffffffff81168114611fd6575f80fd5b50565b5f60208284031215611fe9575f80fd5b8135610f8681611fb5565b5f60208284031215612004575f80fd5b81356fffffffffffffffffffffffffffffffff81168114610f86575f80fd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61833603018112612055575f80fd5b9190910192915050565b5f6020828403121561206f575f80fd5b81358015158114610f86575f80fd5b803562ffffff8116811461143d575f80fd5b8035600281900b811461143d575f80fd5b5f60a08284031280156120b2575f80fd5b5060405160a0810167ffffffffffffffff811182821017156120d6576120d6611d8e565b60405282356120e481611fb5565b815260208301356120f481611fb5565b60208201526121056040840161207e565b604082015261211660608401612090565b6060820152608083013561212981611fb5565b60808201529392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f7f8000000000000000000000000000000000000000000000000000000000000000820361219257612192612135565b505f0390565b5f602082840312156121a8575f80fd5b5051919050565b808202811582820484141761025757610257612135565b5f826121f9577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f6020828403121561220e575f80fd5b6102548261207e565b5f60208284031215612227575f80fd5b61025482612090565b73ffffffffffffffffffffffffffffffffffffffff855116815273ffffffffffffffffffffffffffffffffffffffff602086015116602082015262ffffff6040860151166040820152606085015160020b606082015273ffffffffffffffffffffffffffffffffffffffff60808601511660808201526122df60a08201858051151582526020808201519083015260409081015173ffffffffffffffffffffffffffffffffffffffff16910152565b6101206101008201525f6122f861012083018486611d2c565b969550505050505056fea164736f6c634300081a000a60a0604052348015600e575f80fd5b50604051611c3d380380611c3d833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f80fd5b81516001600160a01b0381168114605f575f80fd5b9392505050565b608051611b736100ca5f395f81816079015281816101020152818161027f015281816102f301528181610324015281816104090152818161058d015281816105f001528181610679015281816106d7015281816108e401526109240152611b735ff3fe60806040526004361061003e575f3560e01c80630a5b11e414610042578063481c6a75146100685780635a6bcfda146100c057806391dd7346146100d3575b5f80fd5b6100556100503660046114c3565b6100ff565b6040519081526020015b60405180910390f35b348015610073575f80fd5b5061009b7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161005f565b6100556100ce36600461154a565b61024f565b3480156100de575f80fd5b506100f26100ed3660046115a8565b610265565b60405161005f9190611662565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166348c894916040518060c001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018881526020018781526020018615158152602001851515815250604051602001610193919061167b565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016101be9190611662565b5f604051808303815f875af11580156101d9573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261021e919081019061179a565b806020019051810190610231919061180f565b9050478015610245576102455f3383610729565b5095945050505050565b5f61025d8484845f806100ff565b949350505050565b60603373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102a8575f80fd5b5f6102b583850185611826565b90505f61031d6102ca836020015160a0902090565b60408401518051602082015160609092015173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016939230929161084c565b505090505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635a6bcfda8460200151856040015186606001516040518463ffffffff1660e01b815260040161038b939291906118ef565b60408051808303815f875af11580156103a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103ca91906119b3565b5090505f6104336103e0856020015160a0902090565b60408601518051602082015160609092015173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016939230929161084c565b505090505f61044d85602001515f0151865f0151306108a3565b925050505f610468866020015160200151875f0151306108a3565b9250505082600f0b86604001516040015186600f0b6104879190611a02565b146104f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6c6971756964697479206368616e676520696e636f7272656374000000000000604482015260640160405180910390fd5b5f866040015160400151121561053a575f82138061050f57505f81135b61051b5761051b611a29565b5f82128061052857505f81125b1561053557610535611a29565b61057d565b5f866040015160400151131561057d575f82128061055757505f81125b61056357610563611a29565b5f82138061057057505f81135b1561057d5761057d611a29565b5f8212156105e05785516105e0907f0000000000000000000000000000000000000000000000000000000000000000906105b685611a56565b60808a015160208b01515173ffffffffffffffffffffffffffffffffffffffff1693929190610956565b5f811215610645578551610645907f00000000000000000000000000000000000000000000000000000000000000009061061984611a56565b60808a01516020808c0151015173ffffffffffffffffffffffffffffffffffffffff1693929190610956565b5f8213156106a157855160a08701516020880151516106a19273ffffffffffffffffffffffffffffffffffffffff909116917f000000000000000000000000000000000000000000000000000000000000000091908690610d14565b5f8113156106ff57855160a087015160208089015101516106ff9273ffffffffffffffffffffffffffffffffffffffff909116917f000000000000000000000000000000000000000000000000000000000000000091908590610d14565b60408051602081018690520160405160208183030381529060405296505050505050505b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff8416610784575f805f8085875af190508061077f5761077f835f7ff4b3b1bc00000000000000000000000000000000000000000000000000000000610e58565b610846565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505f81525f60208201525f6040820152508061084657610846847fa9059cbb000000000000000000000000000000000000000000000000000000007ff27f64e400000000000000000000000000000000000000000000000000000000610e58565b50505050565b60408051602681018390526006810184905260038101859052858152603a600c8201205f9282018390526020820183905290829052819081906108908a8a83610f26565b919c909b50909950975050505050505050565b5f80806108c673ffffffffffffffffffffffffffffffffffffffff87168661100d565b925061090873ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000061100d565b915061094b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001685886110dc565b905093509350939050565b8015610a37578373ffffffffffffffffffffffffffffffffffffffff1663f5298aca846109ac8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1690565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604481018590526064015b5f604051808303815f87803b158015610a1c575f80fd5b505af1158015610a2e573d5f803e3d5ffd5b50505050610d0d565b73ffffffffffffffffffffffffffffffffffffffff8516610ac8578373ffffffffffffffffffffffffffffffffffffffff166311da60b4836040518263ffffffff1660e01b815260040160206040518083038185885af1158015610a9d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610ac2919061180f565b50610d0d565b6040517fa584119400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015285169063a5841194906024015f604051808303815f87803b158015610b2e575f80fd5b505af1158015610b40573d5f803e3d5ffd5b5050505073ffffffffffffffffffffffffffffffffffffffff83163014610c05576040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301528581166024830152604482018490528616906323b872dd906064016020604051808303815f875af1158015610bdb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bff9190611a8c565b50610c9d565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301526024820184905286169063a9059cbb906044016020604051808303815f875af1158015610c77573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c9b9190611a8c565b505b8373ffffffffffffffffffffffffffffffffffffffff166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610ce7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d0b919061180f565b505b5050505050565b80610d7c576040517f0b0d9c0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152848116602483015260448201849052851690630b0d9c0990606401610a05565b8373ffffffffffffffffffffffffffffffffffffffff1663156e29f684610dcc8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1690565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604481018590526064015f604051808303815f87803b158015610e3b575f80fd5b505af1158015610e4d573d5f803e3d5ffd5b505050505050505050565b6040517f90bfb8650000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff851660048301527fffffffff0000000000000000000000000000000000000000000000000000000084166024830152608060448301526020601f3d018190040260a0810160648401523d608484015290913d5f60a483013e60048260a4018201527fffffffff0000000000000000000000000000000000000000000000000000000084168260c4018201528160e40181fd5b5f805f80610f34868661119a565b6040517f35fd631a00000000000000000000000000000000000000000000000000000000815260048101829052600360248201529091505f9073ffffffffffffffffffffffffffffffffffffffff8916906335fd631a906044015f60405180830381865afa158015610fa8573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610fed9190810190611aa7565b60208101516040820151606090920151909a919950975095505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff8316611047575073ffffffffffffffffffffffffffffffffffffffff811631610723565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301528416906370a0823190602401602060405180830381865afa1580156110b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110d5919061180f565b9050610723565b5f8073ffffffffffffffffffffffffffffffffffffffff84165f5273ffffffffffffffffffffffffffffffffffffffff831660205260405f2090508473ffffffffffffffffffffffffffffffffffffffff1663f135baaa826040518263ffffffff1660e01b815260040161115291815260200190565b602060405180830381865afa15801561116d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611191919061180f565b95945050505050565b5f806111a5846111ea565b90505f6111b3600683611b53565b6040805160208101879052908101829052909150606001604051602081830303815290604052805190602001209250505092915050565b6040515f90611209908390600690602001918252602082015260400190565b604051602081830303815290604052805190602001209050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160c0810167ffffffffffffffff8111828210171561127657611276611226565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156112c3576112c3611226565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff811681146112ec575f80fd5b50565b8035600281900b8114611300575f80fd5b919050565b5f60a08284031215611315575f80fd5b60405160a0810167ffffffffffffffff8111828210171561133857611338611226565b6040529050808235611349816112cb565b81526020830135611359816112cb565b6020820152604083013562ffffff81168114611373575f80fd5b6040820152611384606084016112ef565b60608201526080830135611397816112cb565b6080919091015292915050565b5f608082840312156113b4575f80fd5b6040516080810167ffffffffffffffff811182821017156113d7576113d7611226565b6040529050806113e6836112ef565b81526113f4602084016112ef565b602082015260408301356040820152606083013560608201525092915050565b5f67ffffffffffffffff82111561142d5761142d611226565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112611468575f80fd5b813561147b61147682611414565b61127c565b81815284602083860101111561148f575f80fd5b816020850160208301375f918101602001919091529392505050565b80151581146112ec575f80fd5b8035611300816114ab565b5f805f805f61018086880312156114d8575f80fd5b6114e28787611305565b94506114f18760a088016113a4565b935061012086013567ffffffffffffffff81111561150d575f80fd5b61151988828901611459565b93505061014086013561152b816114ab565b915061016086013561153c816114ab565b809150509295509295909350565b5f805f610140848603121561155d575f80fd5b6115678585611305565b92506115768560a086016113a4565b915061012084013567ffffffffffffffff811115611592575f80fd5b61159e86828701611459565b9150509250925092565b5f80602083850312156115b9575f80fd5b823567ffffffffffffffff8111156115cf575f80fd5b8301601f810185136115df575f80fd5b803567ffffffffffffffff8111156115f5575f80fd5b856020828401011115611606575f80fd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6116746020830184611616565b9392505050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f6020830151611724604084018273ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b506040838101518051600290810b60e08601526020820151900b610100850152908101516101208401526060908101516101408401528301516101a06101608401526117746101c0840182611616565b90506080840151151561018084015260a084015115156101a08401528091505092915050565b5f602082840312156117aa575f80fd5b815167ffffffffffffffff8111156117c0575f80fd5b8201601f810184136117d0575f80fd5b80516117de61147682611414565b8181528560208385010111156117f2575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b5f6020828403121561181f575f80fd5b5051919050565b5f60208284031215611836575f80fd5b813567ffffffffffffffff81111561184c575f80fd5b82016101a0818503121561185e575f80fd5b611866611253565b8135611871816112cb565b81526118808560208401611305565b60208201526118928560c084016113a4565b604082015261014082013567ffffffffffffffff8111156118b1575f80fd5b6118bd86828501611459565b6060830152506118d061016083016114b8565b60808201526118e261018083016114b8565b60a0820152949350505050565b61196e818573ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8251600290810b60a08301526020840151900b60c0820152604083015160e082015260608301516101008201526101406101208201525f611191610140830184611616565b5f80604083850312156119c4575f80fd5b505080516020909101519092909150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018281125f831280158216821582161715611a2157611a216119d5565b505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b5f7f80000000000000000000000000000000000000000000000000000000000000008203611a8657611a866119d5565b505f0390565b5f60208284031215611a9c575f80fd5b8151611674816114ab565b5f60208284031215611ab7575f80fd5b815167ffffffffffffffff811115611acd575f80fd5b8201601f81018413611add575f80fd5b805167ffffffffffffffff811115611af757611af7611226565b8060051b611b076020820161127c565b91825260208184018101929081019087841115611b22575f80fd5b6020850194505b83851015611b4857845180835260209586019590935090910190611b29565b979650505050505050565b80820180821115610723576107236119d556fea164736f6c634300081a000a60a0604052348015600e575f80fd5b50604051616a05380380616a05833981016040819052602b91607f565b5f80546001600160a01b0319166001600160a01b038316908117825560405183928392917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35050306080525060aa565b5f60208284031215608e575f80fd5b81516001600160a01b038116811460a3575f80fd5b9392505050565b6080516169436100c25f395f61205f01526169435ff3fe6080604052600436106101f4575f3560e01c80635a6bcfda11610117578063a5841194116100ac578063f135baaa1161007c578063f3cd914c11610062578063f3cd914c14610676578063f5298aca14610695578063fe99049a146106b4575f80fd5b8063f135baaa14610638578063f2fde38b14610657575f80fd5b8063a584119414610595578063b6363cf2146105b4578063dbd035ff146105ed578063f02de3b21461060c575f80fd5b80638161b874116100e75780638161b874146104dc5780638da5cb5b146104fb57806397e8cd4e1461054b5780639bf6645f14610576575f80fd5b80635a6bcfda146104385780636276cbbe1461046c5780637e87ce7d1461049e57806380f0b44c146104bd575f80fd5b80632d7713891161018d57806348c894911161015d57806348c894911461039257806352759651146103be578063558a7297146103dd578063598af9e7146103fc575f80fd5b80632d7713891461031557806335fd631a146103345780633dd45adb14610360578063426a849314610373575f80fd5b806311da60b4116101c857806311da60b4146102b0578063156e29f6146102b85780631e2eaeaf146102d7578063234266d7146102f6575f80fd5b8062fdd58e146101f857806301ffc9a714610241578063095bcdb6146102705780630b0d9c091461028f575b5f80fd5b348015610203575f80fd5b5061022e610212366004615908565b600460209081525f928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b34801561024c575f80fd5b5061026061025b366004615932565b6106d3565b6040519015158152602001610238565b34801561027b575f80fd5b5061026061028a366004615971565b61076b565b34801561029a575f80fd5b506102ae6102a93660046159a3565b61083f565b005b61022e6108c9565b3480156102c3575f80fd5b506102ae6102d2366004615971565b610927565b3480156102e2575f80fd5b5061022e6102f13660046159e1565b6109ab565b348015610301575f80fd5b5061022e610310366004615b9b565b6109b5565b348015610320575f80fd5b506102ae61032f366004615c00565b610ad9565b34801561033f575f80fd5b5061035361034e366004615c1b565b610bcc565b6040516102389190615c3b565b61022e61036e366004615c00565b610c09565b34801561037e575f80fd5b5061026061038d366004615971565b610c67565b34801561039d575f80fd5b506103b16103ac366004615c7d565b610cd8565b6040516102389190615cbc565b3480156103c9575f80fd5b506102ae6103d8366004615d0f565b610e2a565b3480156103e8575f80fd5b506102606103f7366004615d50565b610ecc565b348015610407575f80fd5b5061022e6104163660046159a3565b600560209081525f938452604080852082529284528284209052825290205481565b348015610443575f80fd5b50610457610452366004615d7a565b610f66565b60408051928352602083019190915201610238565b348015610477575f80fd5b5061048b610486366004615e3b565b611165565b60405160029190910b8152602001610238565b3480156104a9575f80fd5b506102ae6104b8366004615d0f565b6113fc565b3480156104c8575f80fd5b506102ae6104d7366004615908565b6114ed565b3480156104e7575f80fd5b5061022e6104f63660046159a3565b6115ac565b348015610506575f80fd5b505f546105269073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610238565b348015610556575f80fd5b5061022e610565366004615c00565b60016020525f908152604090205481565b348015610581575f80fd5b50610353610590366004615e71565b611714565b3480156105a0575f80fd5b506102ae6105af366004615c00565b61174d565b3480156105bf575f80fd5b506102606105ce366004615ee2565b600360209081525f928352604080842090915290825290205460ff1681565b3480156105f8575f80fd5b50610353610607366004615e71565b6117a3565b348015610617575f80fd5b506002546105269073ffffffffffffffffffffffffffffffffffffffff1681565b348015610643575f80fd5b5061022e6106523660046159e1565b6117da565b348015610662575f80fd5b506102ae610671366004615c00565b6117e4565b348015610681575f80fd5b5061022e610690366004615f0e565b6118d3565b3480156106a0575f80fd5b506102ae6106af366004615971565b611a85565b3480156106bf575f80fd5b506102606106ce366004615fcc565b611b09565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061076557507f0f632fb3000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b335f90815260046020908152604080832085845290915281208054839190839061079690849061603c565b909155505073ffffffffffffffffffffffffffffffffffffffff84165f908152600460209081526040808320868452909152812080548492906107da90849061604f565b9091555050604080513380825260208201859052859273ffffffffffffffffffffffffffffffffffffffff8816927f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885991015b60405180910390a45060015b9392505050565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c61088e5761088e7f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b6108a38361089b83611cfd565b5f0333611d42565b6108c473ffffffffffffffffffffffffffffffffffffffff84168383611da2565b505050565b5f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c610919576109197f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b61092233611ebf565b905090565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c610976576109767f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b816109848161089b84611cfd565b6109a58473ffffffffffffffffffffffffffffffffffffffff831684611fa8565b50505050565b5f81545f5260205ff35b5f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c610a0557610a057f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b610a0d612047565b60a086205f818152600660205260409020610a27816120af565b6080880151610a509073ffffffffffffffffffffffffffffffffffffffff1689898989896120f6565b610a5b8188886121d9565b9250610a688884336122d3565b6040805188815260208101889052339184917f29ef05caaff9404b7cb6d1c0e9bbae9eaa7ab2541feba1a9c4248594c08156cb910160405180910390a36080880151610ace9073ffffffffffffffffffffffffffffffffffffffff1689898989896122fb565b505095945050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610b5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fb4bd8ef53df690b9943d3318996006dbb82a25f54719d8c8035b516a2a5b8acc905f90a250565b6060604051808360051b6020835284602084015260408301925080830190505b85548352602083019250600186019550808310610bec5781810382f35b5f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c610c5957610c597f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b61076582611ebf565b919050565b335f81815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff881680855290835281842087855290925280832085905551919285927fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a79061082c9087815260200190565b60607fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c15610d2a57610d2a7f5090d6c600000000000000000000000000000000000000000000000000000000611cf5565b610d326123d3565b6040517f91dd734600000000000000000000000000000000000000000000000000000000815233906391dd734690610d7090869086906004016160a9565b5f604051808303815f875af1158015610d8b573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610dd091908101906160bc565b90507f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c15610e2257610e227f5212cba100000000000000000000000000000000000000000000000000000000611cf5565b6107656123f9565b604082015162ffffff1662800000141580610e755750816080015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610ea357610ea37f30d2164100000000000000000000000000000000000000000000000000000000611cf5565b610eb18162ffffff1661241e565b60a082205f8181526006602052604090206108c4908361245d565b335f81815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff871680855290835281842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001687151590811790915591519182529293917fceb576d9f15e4e200fdb5096d64d5dfd667e16def20c1eefd14256d8e3faa267910160405180910390a350600192915050565b5f807fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c610fb757610fb77f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b610fbf612047565b60a086205f818152600660205260409020610fd9816120af565b60808801516110019073ffffffffffffffffffffffffffffffffffffffff16898989896124b6565b5f6110756040518060c001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018a5f015160020b81526020018a6020015160020b81526020016110528b60400151612677565b600f0b81526060808d015160020b60208301528b015160409091015283906126ac565b945090506110838185612af1565b945050503373ffffffffffffffffffffffffffffffffffffffff16817ff208f4912782fd25c7f114ca3723a2d5dd6f3bcc3ac8db5af63baa85f711d5ec885f015189602001518a604001518b606001516040516111019493929190600294850b81529290930b60208301526040820152606081019190915260800190565b60405180910390a360808701515f906111359073ffffffffffffffffffffffffffffffffffffffff16898987878b8b612b24565b9094509050801561114f5761114f88828a608001516122d3565b61115a8885336122d3565b505094509492505050565b5f61116e612047565b6060830151617fff60029190910b13156111b25760608301516111b2907fb70024f80000000000000000000000000000000000000000000000000000000090612cfb565b600160020b836060015160020b12156111f55760608301516111f5907fe9e905880000000000000000000000000000000000000000000000000000000090612cfb565b8251602084015173ffffffffffffffffffffffffffffffffffffffff90811691161061124d578251602084015161124d917f6e6c98300000000000000000000000000000000000000000000000000000000091612d0a565b61127e8360400151846080015173ffffffffffffffffffffffffffffffffffffffff16612d4d90919063ffffffff16565b6112b25760808301516112b2907fe65af6a00000000000000000000000000000000000000000000000000000000090612e1b565b5f6112c5846040015162ffffff16612e3d565b60808501519091506112ee9073ffffffffffffffffffffffffffffffffffffffff168585612e62565b60a084205f81815260066020526040902061130a908584612f35565b9250846020015173ffffffffffffffffffffffffffffffffffffffff16855f015173ffffffffffffffffffffffffffffffffffffffff16827fdd466e674ea557f56295e2d0218a125ea4b4f0f6f3307b95f85e6110838d6438886040015189606001518a608001518a8a6040516113c595949392919062ffffff959095168552600293840b602086015273ffffffffffffffffffffffffffffffffffffffff928316604086015291166060840152900b608082015260a00190565b60405180910390a460808501516113f49073ffffffffffffffffffffffffffffffffffffffff16868686612fed565b505092915050565b60025473ffffffffffffffffffffffffffffffffffffffff163314611444576114447f48f5c3ed00000000000000000000000000000000000000000000000000000000611cf5565b6103e9610fff821610623e900062fff0008316101661148c5761148c7fa7abe2f70000000000000000000000000000000000000000000000000000000062ffffff8316612e1b565b60a082206114ae826114a8835f90815260066020526040902090565b906130c2565b60405162ffffff8316815281907fe9c42593e71f84403b84352cd168d693e2c9fcd1fdbcc3feb21d92b43e6696f99060200160405180910390a2505050565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c61153c5761153c7f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b335f90815273ffffffffffffffffffffffffffffffffffffffff8316602052604081205c9061156a83611cfd565b90508181600f0b1461159f5761159f7fbda73abf00000000000000000000000000000000000000000000000000000000611cf5565b6109a584825f0333611d42565b6002545f9073ffffffffffffffffffffffffffffffffffffffff1633146115f6576115f67f48f5c3ed00000000000000000000000000000000000000000000000000000000611cf5565b73ffffffffffffffffffffffffffffffffffffffff831615158015611654575073ffffffffffffffffffffffffffffffffffffffff7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c8116908416145b15611682576116827fc79e594800000000000000000000000000000000000000000000000000000000611cf5565b811561168e57816116b4565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600160205260409020545b73ffffffffffffffffffffffffffffffffffffffff84165f908152600160205260408120805492935083929091906116ed90849061603c565b90915550610838905073ffffffffffffffffffffffffffffffffffffffff84168583611da2565b606060405180602082528360208301526040820191508360051b8201855b80355c845260209384019301818410611732575b5081810382f35b73ffffffffffffffffffffffffffffffffffffffff811661177357611770613116565b50565b5f6117938273ffffffffffffffffffffffffffffffffffffffff1661313b565b905061179f82826131ea565b5050565b606060405180602082528360208301526040820191508360051b8201855b80355484526020938401930181841015611746576117c1565b5f815c5f5260205ff35b5f5473ffffffffffffffffffffffffffffffffffffffff163314611864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610b55565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c611923576119237f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b61192b612047565b83602001515f0361195f5761195f7fbe8b850700000000000000000000000000000000000000000000000000000000611cf5565b60a085205f818152600660205260409020611979816120af565b60808701515f90819081906119a79073ffffffffffffffffffffffffffffffffffffffff168b8b8b8b61324a565b809350819550829450505050611a2384866040518060a001604052808681526020018e6060015160020b81526020018d5f0151151581526020018d6040015173ffffffffffffffffffffffffffffffffffffffff1681526020018562ffffff168152508c5f0151611a1c578d602001516133f1565b8d516133f1565b60808b01519096505f9250611a54915073ffffffffffffffffffffffffffffffffffffffff168a8a888b8b886134f2565b90955090508015611a6e57611a6e89828b608001516122d3565b611a798986336122d3565b50505050949350505050565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c611ad457611ad47f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b81611ae881611ae284611cfd565b33611d42565b6109a58473ffffffffffffffffffffffffffffffffffffffff83168461368b565b5f3373ffffffffffffffffffffffffffffffffffffffff861614801590611b60575073ffffffffffffffffffffffffffffffffffffffff85165f90815260036020908152604080832033845290915290205460ff16155b15611c095773ffffffffffffffffffffffffffffffffffffffff85165f90815260056020908152604080832033845282528083208684529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611c0757611bce838261603c565b73ffffffffffffffffffffffffffffffffffffffff87165f90815260056020908152604080832033845282528083208884529091529020555b505b73ffffffffffffffffffffffffffffffffffffffff85165f90815260046020908152604080832086845290915281208054849290611c4890849061603c565b909155505073ffffffffffffffffffffffffffffffffffffffff84165f90815260046020908152604080832086845290915281208054849290611c8c90849061604f565b90915550506040805133815260208101849052849173ffffffffffffffffffffffffffffffffffffffff80881692908916917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac728859910160405180910390a45060015b949350505050565b805f5260045ffd5b5f6f800000000000000000000000000000008210611d3e57611d3e7f93dafdf100000000000000000000000000000000000000000000000000000000611cf5565b5090565b81600f0b5f03611d5157505050565b5f80611d7473ffffffffffffffffffffffffffffffffffffffff8616848661379c565b91509150805f03611d8c57611d876137e2565b611d9b565b815f03611d9b57611d9b613830565b5050505050565b5f73ffffffffffffffffffffffffffffffffffffffff8416611dfd575f805f8085875af1905080611df857611df8835f7ff4b3b1bc0000000000000000000000000000000000000000000000000000000061387e565b6109a5565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505f81525f60208201525f604082015250806109a5576109a5847fa9059cbb000000000000000000000000000000000000000000000000000000007ff27f64e40000000000000000000000000000000000000000000000000000000061387e565b5f7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c73ffffffffffffffffffffffffffffffffffffffff8116611f0557349150611f8f565b3415611f3457611f347fb0ec849e00000000000000000000000000000000000000000000000000000000611cf5565b7f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955c5f611f7673ffffffffffffffffffffffffffffffffffffffff841661313b565b9050611f82828261603c565b9350611f8c613116565b50505b611fa281611f9c84611cfd565b85611d42565b50919050565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260046020908152604080832085845290915281208054839290611fe790849061604f565b90915550506040805133815260208101839052839173ffffffffffffffffffffffffffffffffffffffff8616915f917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885991015b60405180910390a4505050565b3073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146120ad576120ad7f0d89438e00000000000000000000000000000000000000000000000000000000611cf5565b565b805473ffffffffffffffffffffffffffffffffffffffff165f03611770576117707f486aa30700000000000000000000000000000000000000000000000000000000611cf5565b853373ffffffffffffffffffffffffffffffffffffffff8216146121d05760208716156121d0576121ce33878787878760405160240161213b9695949392919061616e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb6a8b0fa0000000000000000000000000000000000000000000000000000000017905273ffffffffffffffffffffffffffffffffffffffff89169061394c565b505b50505050505050565b60038301545f906fffffffffffffffffffffffffffffffff16808203612222576122227fa74f97ab00000000000000000000000000000000000000000000000000000000611cf5565b61225961222e85611cfd565b5f0361223985611cfd565b5f0360809190911b6fffffffffffffffffffffffffffffffff9091161790565b91508315612293576001850180546fffffffffffffffffffffffffffffffff83167001000000000000000000000000000000008702040190555b82156122cb576002850180546fffffffffffffffffffffffffffffffff83167001000000000000000000000000000000008602040190555b509392505050565b82516122e9906122e38460801d90565b83611d42565b6108c483602001516122e384600f0b90565b853373ffffffffffffffffffffffffffffffffffffffff8216146121d05760108716156121d0576121ce3387878787876040516024016123409695949392919061616e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe1b4af690000000000000000000000000000000000000000000000000000000017905273ffffffffffffffffffffffffffffffffffffffff89169061394c565b60017fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d565b5f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d565b620f424062ffffff82161115611770576117707f140021130000000000000000000000000000000000000000000000000000000062ffffff8316612e1b565b612466826120af565b81547fffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff167cffffff000000000000000000000000000000000000000000000000000060d083901b16175b90915550565b843373ffffffffffffffffffffffffffffffffffffffff82161461266f575f84604001511380156124ea5750610800861615155b156125a45761259e338686868660405160240161250b95949392919061623a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f259982e50000000000000000000000000000000000000000000000000000000017905273ffffffffffffffffffffffffffffffffffffffff88169061394c565b5061266f565b5f8460400151131580156125bb5750610200861615155b1561266f576121d033868686866040516024016125dc95949392919061623a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f21d0ee700000000000000000000000000000000000000000000000000000000017905273ffffffffffffffffffffffffffffffffffffffff88169061394c565b505050505050565b80600f81900b8114610c6257610c627f93dafdf100000000000000000000000000000000000000000000000000000000611cf5565b6060810151602082015160408301515f92839290916126cb8282613a48565b604080516080810182525f80825260208201819052918101829052606081019190915283600f0b5f1461289b576127048884865f613b0f565b6fffffffffffffffffffffffffffffffff1660208301521515815261272c8883866001613b0f565b6fffffffffffffffffffffffffffffffff166060830152151560408201525f600f85900b126128605760808701515f9060020b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761881810783139082900503620d89e891909105036001016fffffffffffffffffffffffffffffffff049050806fffffffffffffffffffffffffffffffff1682602001516fffffffffffffffffffffffffffffffff161115612804576128047fb8e3c3850000000000000000000000000000000000000000000000000000000085612cfb565b806fffffffffffffffffffffffffffffffff1682606001516fffffffffffffffffffffffffffffffff16111561285e5761285e7fb8e3c3850000000000000000000000000000000000000000000000000000000084612cfb565b505b80511561287c57608087015161287c9060058a01908590613bf8565b80604001511561289b57608087015161289b9060058a01908490613bf8565b5f806128a88a8686613c4a565b8a5160a08c015160408051602681019290925260068083018a9052600383018b9052928252603a600c8301205f838301819052602080850182905293819052908152928f01909152812092945090925080612905838a8787613cfe565b9150915061293a61291583611cfd565b61291e83611cfd565b6fffffffffffffffffffffffffffffffff1660809190911b1790565b995050505050505f84600f0b12156129a35780511561297657600283810b5f90815260048a016020526040812081815560018101829055909101555b8060400151156129a357600282810b5f90815260048a016020526040812081815560018101829055909101555b5082600f0b5f14612ae75786545f806129bf8360a01c60020b90565b73ffffffffffffffffffffffffffffffffffffffff8416915091508460020b8260020b1215612a1b57612a14612a0e612a096129fa88613e2f565b612a0388613e2f565b8a61412c565b612677565b60801b90565b9750612ae3565b8360020b8260020b1215612abe57612a52612a3c612a0983612a0388613e2f565b61291e612a09612a4b89613e2f565b858b614164565b60038b0154909850612a76906fffffffffffffffffffffffffffffffff1687614190565b60038b0180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055612ae3565b612ae05f61291e612a09612ad189613e2f565b612ada89613e2f565b8b614164565b97505b5050505b5050509250929050565b5f608082811d9084901d01600f83810b9085900b01612b1b612b1283612677565b61291e83612677565b95945050505050565b5f8073ffffffffffffffffffffffffffffffffffffffff89163303612b4d57508490505f612cef565b8591505f87604001511315612c3557610400891615612c3057612c2133898989898989604051602401612b86979695949392919061631c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9f063efc0000000000000000000000000000000000000000000000000000000017905260028b1615155b73ffffffffffffffffffffffffffffffffffffffff8c1691906141c0565b9050612c2d828261421a565b91505b612cef565b610100891615612cef57612ce033898989898989604051602401612c5f979695949392919061631c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6c2bbe7e0000000000000000000000000000000000000000000000000000000017905260018b161515612c03565b9050612cec828261421a565b91505b97509795505050505050565b815f528060020b60045260245ffd5b60405183815273ffffffffffffffffffffffffffffffffffffffff8316600482015273ffffffffffffffffffffffffffffffffffffffff82166024820152604481fd5b5f60808316158015612d6157506008831615155b15612d6d57505f610765565b60408316158015612d8057506004831615155b15612d8c57505f610765565b6104008316158015612da057506002831615155b15612dac57505f610765565b6101008316158015612dc057506001831615155b15612dcc57505f610765565b73ffffffffffffffffffffffffffffffffffffffff831615612e0a57613fff8316151580612e0557506280000062ffffff831614610838565b610838565b5062ffffff16628000001415919050565b815f5273ffffffffffffffffffffffffffffffffffffffff811660045260245ffd5b5f6280000062ffffff831603612e5457505f919050565b611d3e8262ffffff1661241e565b823373ffffffffffffffffffffffffffffffffffffffff8216146109a5576120008416156109a557611d9b338484604051602401612ea29392919061640c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fdc98354e0000000000000000000000000000000000000000000000000000000017905273ffffffffffffffffffffffffffffffffffffffff86169061394c565b82545f9073ffffffffffffffffffffffffffffffffffffffff1615612f7d57612f7d7f7983c05100000000000000000000000000000000000000000000000000000000611cf5565b612f868361423b565b90507cffffff000000000000000000000000000000000000000000000000000060d083901b1673ffffffffffffffffffffffffffffffffffffffff841660a083901b76ffffff00000000000000000000000000000000000000001617179093555090919050565b833373ffffffffffffffffffffffffffffffffffffffff821614611d9b57611000851615611d9b5761266f3385858560405160240161302f94939291906164cf565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6fe7e6eb0000000000000000000000000000000000000000000000000000000017905273ffffffffffffffffffffffffffffffffffffffff87169061394c565b6130cb826120af565b81547fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff1679ffffff000000000000000000000000000000000000000000000060b883901b16176124b0565b5f7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d565b5f73ffffffffffffffffffffffffffffffffffffffff821661315e575047919050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa1580156131c6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610765919061659d565b73ffffffffffffffffffffffffffffffffffffffff82167f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d807f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955d5050565b60208301515f8073ffffffffffffffffffffffffffffffffffffffff88163303613276575f91506133e6565b60808816156133e6575f61331889338a8a8a8a60405160240161329d9594939291906165b4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f575e24b40000000000000000000000000000000000000000000000000000000017905261394c565b9050805160601461334c5761334c7f1e048e1d00000000000000000000000000000000000000000000000000000000611cf5565b604088015162ffffff16628000000361336757606081015191505b60088916156133e457604081015192505f6133828460801d90565b905080600f0b5f146133e2575f851261339f600f83900b8761669c565b9550806133ae575f86126133b2565b5f86135b156133e0576133e07ffa0b71d600000000000000000000000000000000000000000000000000000000611cf5565b505b505b505b955095509592505050565b5f80808080613400898861455f565b93509350935093505f83111561343b5773ffffffffffffffffffffffffffffffffffffffff86165f9081526001602052604090208054840190555b33887f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f6134688760801d90565b61347288600f0b90565b85516040808801516020808a01518351600f97880b81529590960b9085015273ffffffffffffffffffffffffffffffffffffffff909216908301526fffffffffffffffffffffffffffffffff16606082015260029190910b608082015262ffffff861660a082015260c00160405180910390a35091979650505050505050565b5f8073ffffffffffffffffffffffffffffffffffffffff8916330361351b57508490505f612cef565b5f6135268460801d90565b90505f61353385600f0b90565b905060408b1615613606576135f9612a09338c8c8c8c8c60405160240161355f969594939291906166bb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb47b2fb10000000000000000000000000000000000000000000000000000000017905260048e16151573ffffffffffffffffffffffffffffffffffffffff8f1691906141c0565b61360390826167aa565b90505b5f81600f0b5f14158061361c575082600f0b5f14155b1561367957895160208b01515f1390151514613650576fffffffffffffffffffffffffffffffff8316608083901b1761366a565b6fffffffffffffffffffffffffffffffff8216608084901b175b9050613676898261421a565b98505b979b979a509698505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff841681148015906136e4575073ffffffffffffffffffffffffffffffffffffffff8085165f9081526003602090815260408083209385168352929052205460ff16155b156137915773ffffffffffffffffffffffffffffffffffffffff8085165f9081526005602090815260408083209385168352928152828220868352905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461378f57613754838261603c565b73ffffffffffffffffffffffffffffffffffffffff8087165f9081526005602090815260408083209387168352928152828220888352905220555b505b6109a5848484614dfc565b73ffffffffffffffffffffffffffffffffffffffff8281165f90815290841660205260408120805c91906137d4600f85900b8461669c565b915081815d50935093915050565b7f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c600181039050807f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5d50565b7f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c600181019050807f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5d50565b6040517f90bfb8650000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff851660048301527fffffffff0000000000000000000000000000000000000000000000000000000084166024830152608060448301526020601f3d018190040260a0810160648401523d608484015290913d5f60a483013e60048260a4018201527fffffffff0000000000000000000000000000000000000000000000000000000084168260c4018201528160e40181fd5b60605f805f8451602086015f885af1905080613995576139958461396f856167f8565b7fa9e35b2f0000000000000000000000000000000000000000000000000000000061387e565b6040519150601f19603f3d011682016040523d82523d5f602084013e602082511080613a13575060208301517fffffffff00000000000000000000000000000000000000000000000000000000166139ee836020015190565b7fffffffff000000000000000000000000000000000000000000000000000000001614155b15613a4157613a417f1e048e1d00000000000000000000000000000000000000000000000000000000611cf5565b5092915050565b8060020b8260020b12613a8057613a807fc4433ed5000000000000000000000000000000000000000000000000000000008383614e92565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618600283900b1215613ad657613ad67fd5e2f7ab0000000000000000000000000000000000000000000000000000000083612cfb565b620d89e8600282900b131561179f5761179f7f1ad777f80000000000000000000000000000000000000000000000000000000082612cfb565b600283900b5f908152600485016020526040812080548291906fffffffffffffffffffffffffffffffff8116907001000000000000000000000000000000009004600f0b613b5d8288614190565b6fffffffffffffffffffffffffffffffff808216159084168015919091141596509094505f03613bb057885460a01c60020b60020b8860020b13613bb0576001808a0154908401556002808a0154908401555b5f86613bc557613bc088836167aa565b613bcf565b613bcf8883616864565b90508060801b6fffffffffffffffffffffffffffffffff86161784555050505094509492505050565b600291820b910b80820715613c255760405163d4d8f3e681528260208201528160408201526044601c8201fd5b80820591508160081d5f528260205260405f20600160ff84161b815418815550505050565b600282810b5f81815260048601602052604080822085850b83529082208754929485949293919260a09290921c900b90811215613ca0578160010154836001015403945081600201548360020154039350613cf3565b8560020b8160020b12613ccc578260010154826001015403945082600201548260020154039350613cf3565b81600101548360010154896001015403039450816002015483600201548960020154030393505b505050935093915050565b83545f9081906fffffffffffffffffffffffffffffffff16600f86900b8203613d6857806fffffffffffffffffffffffffffffffff165f03613d6357613d637faefeb92400000000000000000000000000000000000000000000000000000000611cf5565b613daf565b613d728187614190565b87547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff919091161787555b613de387600101548603826fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000614eaf565b9250613e1987600201548503826fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000614eaf565b6001880195909555505060029094015591929050565b60020b5f60ff82901d80830118620d89e8811115613e7157613e717f8b86327a0000000000000000000000000000000000000000000000000000000084612cfb565b7001fffcb933bd6fad37aa2d162d1a5940016001821602700100000000000000000000000000000000186002821615613eba576ffff97272373d413259a46990580e213a0260801c5b6004821615613ed9576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615613ef8576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615613f17576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615613f36576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615613f55576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615613f74576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615613f94576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615613fb4576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615613fd4576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615613ff4576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615614014576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615614034576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615614054576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615614074576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615614095576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156140b5576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156140d4576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156140f1576b048a170391f7dc42444e8fa20260801c5b5f84131561411c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff045b63ffffffff0160201c9392505050565b5f8082600f0b126141535761414c6141478585856001614f6a565b6150a7565b5f03611ced565b611ced6141478585855f035f614f6a565b5f8082600f0b1261417f5761414c61414785858560016150d9565b611ced6141478585855f035f6150d9565b6fffffffffffffffffffffffffffffffff8216600f82900b01608081901c15610765576393dafdf15f526004601cfd5b5f806141cc858561394c565b9050826141dc575f915050610838565b805160401461420e5761420e7f1e048e1d00000000000000000000000000000000000000000000000000000000611cf5565b60400151949350505050565b5f608082811d9084901d03600f83810b9085900b03612b1b612b1283612677565b5f73fffd8963efd1fc6a506488495d951d51639616827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffd895d830173ffffffffffffffffffffffffffffffffffffffff1611156142ba576142ba7f614875240000000000000000000000000000000000000000000000000000000083612e1b565b77ffffffffffffffffffffffffffffffffffffffff00000000602083901b16805f6142e482615144565b60ff169050608081106142ff57607f810383901c9150614309565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581027ffffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc5568101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b14614550578873ffffffffffffffffffffffffffffffffffffffff1661452882613e2f565b73ffffffffffffffffffffffffffffffffffffffff16111561454a5781614552565b80614552565b815b9998505050505050505050565b604080516060810182525f8082526020820181905291810182905281908190855460408601515f8161459957610fff60c484901c166145a3565b610fff60b884901c165b885173ffffffffffffffffffffffffffffffffffffffff8516865261ffff9190911691505f60a085901c60020b60020b602087015260038b01546fffffffffffffffffffffffffffffffff16604087015260808a01515f9062400000166146135760d086901c62ffffff16614625565b6146258b6080015162ffffff166151d8565b9050831561464b57620f4240610fff851662ffffff83168181029290920491010361464d565b805b975050620f42408762ffffff16106146915789515f1215614691576146917f9620624600000000000000000000000000000000000000000000000000000000611cf5565b89515f036146a9575f80985098505050505050614df3565b831561478c5760608a015173ffffffffffffffffffffffffffffffffffffffff86811691161061471b5761471b73ffffffffffffffffffffffffffffffffffffffff86165b60608c01517f7c9c6e8f000000000000000000000000000000000000000000000000000000009190612d0a565b6401000276a373ffffffffffffffffffffffffffffffffffffffff168a6060015173ffffffffffffffffffffffffffffffffffffffff16116147875760608a0151614787907f9e4d7cc70000000000000000000000000000000000000000000000000000000090612e1b565b61484a565b60608a015173ffffffffffffffffffffffffffffffffffffffff8681169116116147cf576147cf73ffffffffffffffffffffffffffffffffffffffff86166146ee565b73fffd8963efd1fc6a506488495d951d5263988d2673ffffffffffffffffffffffffffffffffffffffff168a6060015173ffffffffffffffffffffffffffffffffffffffff161061484a5760608a015161484a907f9e4d7cc70000000000000000000000000000000000000000000000000000000090612e1b565b60408051610100810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915284614899578b6002015461489f565b8b600101545b60e08201525b8215806148e457508a6060015173ffffffffffffffffffffffffffffffffffffffff16875f015173ffffffffffffffffffffffffffffffffffffffff16145b614c7f57865173ffffffffffffffffffffffffffffffffffffffff168152602080880151908c015161491b9160058f0191886151e7565b1515604083015260020b602082018190527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761812614979577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860208201525b620d89e860020b816020015160020b1261499757620d89e860208201525b6149a48160200151613e2f565b73ffffffffffffffffffffffffffffffffffffffff90811660608381018290528951908e01516149ee939192911680821891811160018a161891909102188960400151868c615312565b60c085015260a0840152608083015273ffffffffffffffffffffffffffffffffffffffff1687528a515f1215614a5757614a2b8160a001516150a7565b83039250614a468160c001518260800151614147919061604f565b614a5090836168b2565b9150614a88565b614a6a8160c001518260800151016150a7565b83019250614a7b8160a001516150a7565b614a85908361669c565b91505b8315614ad7575f848962ffffff1614614abf57620f4240858360c001518460800151010281614ab957614ab96168d1565b04614ac5565b8160c001515b60c08301805182900390529990990198505b60408701516fffffffffffffffffffffffffffffffff1615614b3657614b2a8160c0015170010000000000000000000000000000000089604001516fffffffffffffffffffffffffffffffff1691020490565b60e08201805190910190525b806060015173ffffffffffffffffffffffffffffffffffffffff16875f015173ffffffffffffffffffffffffffffffffffffffff1603614c4c57806040015115614c27575f8086614b90578d600101548360e00151614b9b565b8260e001518e600201545b915091505f614bf38f85602001518585600292830b5f908152600490940160205260409093206001810180549092039091559081018054909203909155547001000000000000000000000000000000009004600f0b90565b90508715614bfe575f035b614c0c8a6040015182614190565b6fffffffffffffffffffffffffffffffff1660408b01525050505b84614c36578060200151614c3f565b60018160200151035b60020b60208801526148a5565b8051875173ffffffffffffffffffffffffffffffffffffffff908116911614614c7a578651614c3f9061423b565b6148a5565b86516020880151614d149190614cd690899060a01b76ffffff0000000000000000000000000000000000000000167fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff919091161790565b7fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9091161790565b8c55604087015160038d01546fffffffffffffffffffffffffffffffff908116911614614d8357604087015160038d0180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9092169190911790555b84614d975760e081015160028d0155614da2565b60e081015160018d01555b8a515f1385151514614dcf57614dc8614dba83612677565b61291e858e5f015103612677565b9950614dec565b614de9614de0848d5f015103612677565b61291e84612677565b99505b5050505050505b92959194509250565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260046020908152604080832085845290915281208054839290614e3b90849061603c565b9091555050604080513381526020810183905283915f9173ffffffffffffffffffffffffffffffffffffffff8716917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac728859910161203a565b6040518381528260020b60048201528160020b6024820152604481fd5b5f838302817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870982811083820303915050808411614eed575f80fd5b805f03614eff57508290049050610838565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161115614fa3579293925b73ffffffffffffffffffffffffffffffffffffffff8516614fca5762bfc9215f526004601cfd5b7bffffffffffffffffffffffffffffffff000000000000000000000000606084901b1673ffffffffffffffffffffffffffffffffffffffff8686031683615056578673ffffffffffffffffffffffffffffffffffffffff1661504383838973ffffffffffffffffffffffffffffffffffffffff16614eaf565b81615050576150506168d1565b0461509c565b61509c61507a83838973ffffffffffffffffffffffffffffffffffffffff16615482565b8873ffffffffffffffffffffffffffffffffffffffff16808204910615150190565b979650505050505050565b805f811215610c6257610c627f93dafdf100000000000000000000000000000000000000000000000000000000611cf5565b5f73ffffffffffffffffffffffffffffffffffffffff8481169086160360ff81901d908101186c010000000000000000000000006fffffffffffffffffffffffffffffffff851661512b818484614eaf565b9350845f83858409111684019350505050949350505050565b5f808211615150575f80fd5b507f0706060506020500060203020504000106050205030304010505030400000000601f6f8421084210842108cc6318c6db6d54be6fffffffffffffffffffffffffffffffff841160071b84811c67ffffffffffffffff1060061b1784811c63ffffffff1060051b1784811c61ffff1060041b1784811c60ff1060031b1793841c1c161a1790565b62bfffff8116610c628161241e565b5f80600284810b9086900b818107831391900503831561528557600281900b60081d600181900b5f908152602089905260409020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff808516908190039190911c91821680151595509091908561526757888360ff1686030261527a565b8861527182615144565b840360ff168603025b965050505050615308565b6001908101600281900b60081d80830b5f90815260208a905260409020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff841694851b0119908116801515955092939192856152ee57888360ff0360ff16860102615301565b88836152f9836154b2565b0360ff168601025b9650505050505b5094509492505050565b5f80808062ffffff851673ffffffffffffffffffffffffffffffffffffffff808a16908b16101582881280156153f5575f6153588a5f0385620f424003620f4240614eaf565b9050826153715761536c8d8d8d60016150d9565b61537e565b61537e8c8e8d6001614f6a565b96508681106153b2578b9750620f424084146153a9576153a4878586620f424003615482565b6153ab565b865b94506153cb565b8096506153c18d8c838661554c565b9750868a5f030394505b826153e1576153dc8d898d5f614f6a565b6153ed565b6153ed888e8d5f6150d9565b955050615473565b8161540b576154068c8c8c5f614f6a565b615417565b6154178b8d8c5f6150d9565b9450848910615428578a965061543a565b8894506154378c8b87856155b0565b96505b816154515761544c8c888c60016150d9565b61545e565b61545e878d8c6001614f6a565b9550615470868485620f424003615482565b93505b50505095509550955095915050565b5f61548e848484614eaf565b9050818061549e5761549e6168d1565b838509156108385760010180610838575f80fd5b5f8082116154be575f80fd5b507e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b15031604055f8290039091166101e07f804040554300526644320000502061067405302602000010750620017611707760fc7fb6db6db6ddddddddd34d34d349249249210842108c6318c639ce739cffffffff840260f81c161b60f71c1690811c63d76453e004601f169190911a1790565b5f6fffffffffffffffffffffffffffffffff84161573ffffffffffffffffffffffffffffffffffffffff861615171561558c57634f2461b85f526004601cfd5b816155a35761559e8585856001615609565b612b1b565b612b1b858585600161576b565b5f6fffffffffffffffffffffffffffffffff84161573ffffffffffffffffffffffffffffffffffffffff86161517156155f057634f2461b85f526004601cfd5b816156015761559e8585855f61576b565b612b1b8585855f5b5f81156156ae575f73ffffffffffffffffffffffffffffffffffffffff84111561565c57615657846c01000000000000000000000000876fffffffffffffffffffffffffffffffff16614eaf565b61567c565b61567c6fffffffffffffffffffffffffffffffff8616606086901b6168fe565b90506156a66156a18273ffffffffffffffffffffffffffffffffffffffff891661604f565b6158a0565b915050611ced565b5f73ffffffffffffffffffffffffffffffffffffffff8411156156fa576156f5846c01000000000000000000000000876fffffffffffffffffffffffffffffffff16615482565b615720565b615720606085901b6fffffffffffffffffffffffffffffffff8716808204910615150190565b90508073ffffffffffffffffffffffffffffffffffffffff87161161574c57634323a5555f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff8616039050611ced565b5f825f0361577a575083611ced565b7bffffffffffffffffffffffffffffffff000000000000000000000000606085901b1682156158455773ffffffffffffffffffffffffffffffffffffffff8616848102908582816157cd576157cd6168d1565b040361580a57818101828110615808576157fe838973ffffffffffffffffffffffffffffffffffffffff1683615482565b9350505050611ced565b505b506156a6818561583073ffffffffffffffffffffffffffffffffffffffff8a16836168fe565b61583a919061604f565b808204910615150190565b73ffffffffffffffffffffffffffffffffffffffff86168481029085820414818311166158795763f5c787f15f526004601cfd5b8082036157fe6156a18473ffffffffffffffffffffffffffffffffffffffff8b1684615482565b8073ffffffffffffffffffffffffffffffffffffffff81168114610c6257610c627f93dafdf100000000000000000000000000000000000000000000000000000000611cf5565b73ffffffffffffffffffffffffffffffffffffffff81168114611770575f80fd5b5f8060408385031215615919575f80fd5b8235615924816158e7565b946020939093013593505050565b5f60208284031215615942575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610838575f80fd5b5f805f60608486031215615983575f80fd5b833561598e816158e7565b95602085013595506040909401359392505050565b5f805f606084860312156159b5575f80fd5b83356159c0816158e7565b925060208401356159d0816158e7565b929592945050506040919091013590565b5f602082840312156159f1575f80fd5b5035919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516080810167ffffffffffffffff81118282101715615a4857615a486159f8565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715615a9557615a956159f8565b604052919050565b803562ffffff81168114610c62575f80fd5b8035600281900b8114610c62575f80fd5b5f60a08284031215615ad0575f80fd5b60405160a0810167ffffffffffffffff81118282101715615af357615af36159f8565b6040529050808235615b04816158e7565b81526020830135615b14816158e7565b6020820152615b2560408401615a9d565b6040820152615b3660608401615aaf565b60608201526080830135615b49816158e7565b6080919091015292915050565b5f8083601f840112615b66575f80fd5b50813567ffffffffffffffff811115615b7d575f80fd5b602083019150836020828501011115615b94575f80fd5b9250929050565b5f805f805f6101008688031215615bb0575f80fd5b615bba8787615ac0565b945060a0860135935060c0860135925060e086013567ffffffffffffffff811115615be3575f80fd5b615bef88828901615b56565b969995985093965092949392505050565b5f60208284031215615c10575f80fd5b8135610838816158e7565b5f8060408385031215615c2c575f80fd5b50508035926020909101359150565b602080825282518282018190525f918401906040840190835b81811015615c72578351835260209384019390920191600101615c54565b509095945050505050565b5f8060208385031215615c8e575f80fd5b823567ffffffffffffffff811115615ca4575f80fd5b615cb085828601615b56565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f8060c08385031215615d20575f80fd5b615d2a8484615ac0565b9150615d3860a08401615a9d565b90509250929050565b80358015158114610c62575f80fd5b5f8060408385031215615d61575f80fd5b8235615d6c816158e7565b9150615d3860208401615d41565b5f805f80848603610140811215615d8f575f80fd5b615d998787615ac0565b945060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6082011215615dca575f80fd5b50615dd3615a25565b615ddf60a08701615aaf565b8152615ded60c08701615aaf565b602082015260e086013560408201526101008601356060820152925061012085013567ffffffffffffffff811115615e23575f80fd5b615e2f87828801615b56565b95989497509550505050565b5f8060c08385031215615e4c575f80fd5b615e568484615ac0565b915060a0830135615e66816158e7565b809150509250929050565b5f8060208385031215615e82575f80fd5b823567ffffffffffffffff811115615e98575f80fd5b8301601f81018513615ea8575f80fd5b803567ffffffffffffffff811115615ebe575f80fd5b8560208260051b8401011115615ed2575f80fd5b6020919091019590945092505050565b5f8060408385031215615ef3575f80fd5b8235615efe816158e7565b91506020830135615e66816158e7565b5f805f80848603610120811215615f23575f80fd5b615f2d8787615ac0565b945060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6082011215615f5e575f80fd5b506040516060810167ffffffffffffffff81118282101715615f8257615f826159f8565b604052615f9160a08701615d41565b815260c0860135602082015260e0860135615fab816158e7565b6040820152925061010085013567ffffffffffffffff811115615e23575f80fd5b5f805f8060808587031215615fdf575f80fd5b8435615fea816158e7565b93506020850135615ffa816158e7565b93969395505050506040820135916060013590565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156107655761076561600f565b808201808211156107655761076561600f565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081525f611ced602083018486616062565b5f602082840312156160cc575f80fd5b815167ffffffffffffffff8111156160e2575f80fd5b8201601f810184136160f2575f80fd5b805167ffffffffffffffff81111561610c5761610c6159f8565b61613d60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601615a4e565b818152856020838501011115616151575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b73ffffffffffffffffffffffffffffffffffffffff87168152616209602082018773ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8460c08201528360e08201526101206101008201525f61622e61012083018486616062565b98975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff861681526162d5602082018673ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8351600290810b60c08301526020850151900b60e0820152604084015161010082015260608401516101208201526101606101408201525f61509c61016083018486616062565b73ffffffffffffffffffffffffffffffffffffffff881681526163b7602082018873ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8551600290810b60c08301526020870151900b60e08201526040860151610100820152606086015161012082015284610140820152836101608201526101a06101808201525f6145526101a083018486616062565b73ffffffffffffffffffffffffffffffffffffffff8416815260e081016164ab602083018573ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b73ffffffffffffffffffffffffffffffffffffffff831660c0830152949350505050565b73ffffffffffffffffffffffffffffffffffffffff85168152610100810161656f602083018673ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b73ffffffffffffffffffffffffffffffffffffffff841660c08301528260020b60e083015295945050505050565b5f602082840312156165ad575f80fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff8616815261664f602082018673ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8351151560c0820152602084015160e0820152604084015173ffffffffffffffffffffffffffffffffffffffff166101008201526101406101208201525f61509c61014083018486616062565b8082018281125f8312801582168215821617156113f4576113f461600f565b73ffffffffffffffffffffffffffffffffffffffff87168152616756602082018773ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8451151560c0820152602085015160e0820152604085015173ffffffffffffffffffffffffffffffffffffffff16610100820152836101208201526101606101408201525f61622e61016083018486616062565b600f81810b9083900b016f7fffffffffffffffffffffffffffffff81137fffffffffffffffffffffffffffffffff80000000000000000000000000000000821217156107655761076561600f565b805160208201517fffffffff0000000000000000000000000000000000000000000000000000000081169190600482101561685d577fffffffff00000000000000000000000000000000000000000000000000000000808360040360031b1b82161692505b5050919050565b600f82810b9082900b037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081126f7fffffffffffffffffffffffffffffff821317156107655761076561600f565b8181035f831280158383131683831282161715613a4157613a4161600f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f82616931577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea164736f6c634300081a000a60e060405234801561000f575f80fd5b5060405161116838038061116883398101604081905261002e916101a1565b8282825f61003c84826102a2565b50600161004983826102a2565b5060ff81166080524660a05261005d61006c565b60c052506103cd945050505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f60405161009c919061035c565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610127575f80fd5b81516001600160401b0381111561014057610140610104565b604051601f8201601f19908116603f011681016001600160401b038111828210171561016e5761016e610104565b604052818152838201602001851015610185575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f805f606084860312156101b3575f80fd5b83516001600160401b038111156101c8575f80fd5b6101d486828701610118565b602086015190945090506001600160401b038111156101f1575f80fd5b6101fd86828701610118565b925050604084015160ff81168114610213575f80fd5b809150509250925092565b600181811c9082168061023257607f821691505b60208210810361025057634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561029d57805f5260205f20601f840160051c8101602085101561027b5750805b601f840160051c820191505b8181101561029a575f8155600101610287565b50505b505050565b81516001600160401b038111156102bb576102bb610104565b6102cf816102c9845461021e565b84610256565b6020601f821160018114610301575f83156102ea5750848201515b5f19600385901b1c1916600184901b17845561029a565b5f84815260208120601f198516915b828110156103305787850151825560209485019460019092019101610310565b508482101561034d57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f8083546103698161021e565b6001821680156103805760018114610395576103c2565b60ff19831686528115158202860193506103c2565b865f5260205f205f5b838110156103ba5781548882015260019091019060200161039e565b505081860193505b509195945050505050565b60805160a05160c051610d716103f75f395f6104cf01525f61049a01525f6101590152610d715ff3fe608060405234801561000f575f80fd5b50600436106100e5575f3560e01c806370a08231116100885780639dc29fac116100635780639dc29fac146101f0578063a9059cbb14610203578063d505accf14610216578063dd62ed3e14610229575f80fd5b806370a08231146101aa5780637ecebe00146101c957806395d89b41146101e8575f80fd5b806323b872dd116100c357806323b872dd14610141578063313ce567146101545780633644e5151461018d57806340c10f1914610195575f80fd5b806306fdde03146100e9578063095ea7b31461010757806318160ddd1461012a575b5f80fd5b6100f1610253565b6040516100fe9190610a52565b60405180910390f35b61011a610115366004610acd565b6102de565b60405190151581526020016100fe565b61013360025481565b6040519081526020016100fe565b61011a61014f366004610af5565b610357565b61017b7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100fe565b610133610497565b6101a86101a3366004610acd565b6104f1565b005b6101336101b8366004610b2f565b60036020525f908152604090205481565b6101336101d7366004610b2f565b60056020525f908152604090205481565b6100f16104ff565b6101a86101fe366004610acd565b61050c565b61011a610211366004610acd565b610516565b6101a8610224366004610b4f565b610599565b610133610237366004610bbc565b600460209081525f928352604080842090915290825290205481565b5f805461025f90610bed565b80601f016020809104026020016040519081016040528092919081815260200182805461028b90610bed565b80156102d65780601f106102ad576101008083540402835291602001916102d6565b820191905f5260205f20905b8154815290600101906020018083116102b957829003601f168201915b505050505081565b335f81815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103459086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103e9576103b88382610c6b565b73ffffffffffffffffffffffffffffffffffffffff86165f9081526004602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff85165f908152600360205260408120805485929061041d908490610c6b565b909155505073ffffffffffffffffffffffffffffffffffffffff8085165f81815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104849087815260200190565b60405180910390a3506001949350505050565b5f7f000000000000000000000000000000000000000000000000000000000000000046146104cc576104c76108b7565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6104fb828261094f565b5050565b6001805461025f90610bed565b6104fb82826109c6565b335f90815260036020526040812080548391908390610536908490610c6b565b909155505073ffffffffffffffffffffffffffffffffffffffff83165f81815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103459086815260200190565b42841015610608576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b5f6001610613610497565b73ffffffffffffffffffffffffffffffffffffffff8a81165f8181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e0830190915280519201919091207f190100000000000000000000000000000000000000000000000000000000000061010083015261010282019290925261012281019190915261014201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201205f84529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610761573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906107dc57508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e455200000000000000000000000000000000000060448201526064016105ff565b73ffffffffffffffffffffffffffffffffffffffff9081165f9081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f6040516108e79190610c7e565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b8060025f8282546109609190610d51565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260036020526040812080548392906109fa908490610c6b565b90915550506002805482900390556040518181525f9073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016109ba565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610ac8575f80fd5b919050565b5f8060408385031215610ade575f80fd5b610ae783610aa5565b946020939093013593505050565b5f805f60608486031215610b07575f80fd5b610b1084610aa5565b9250610b1e60208501610aa5565b929592945050506040919091013590565b5f60208284031215610b3f575f80fd5b610b4882610aa5565b9392505050565b5f805f805f805f60e0888a031215610b65575f80fd5b610b6e88610aa5565b9650610b7c60208901610aa5565b95506040880135945060608801359350608088013560ff81168114610b9f575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215610bcd575f80fd5b610bd683610aa5565b9150610be460208401610aa5565b90509250929050565b600181811c90821680610c0157607f821691505b602082108103610c38577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561035157610351610c3e565b5f8083545f8160011c90506001821680610c9957607f821691505b602082108103610cd0577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b808015610ce45760018114610d1757610d45565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450610d45565b5f888152602090205f5b84811015610d3d57815489820152600190910190602001610d21565b505082870194505b50929695505050505050565b8082018082111561035157610351610c3e56fea164736f6c634300081a000aa164736f6c634300081a000a","sourceMap":"3126:44:9:-:0;;;3166:4;-1:-1:-1;;3126:44:9;;;;;;;;1016:26:19;;;;;;;;;-1:-1:-1;;441:3250:243;2461:87:127;;;2512:3;2461:87;;;;2533:4;2461:87;;;;-1:-1:-1;2461:87:127;;;;;2405:143;;-1:-1:-1;;2405:143:127;;;;;;;;;;;;;;;;;;;3126:44:9;2617:88:127;;;;;;;;;-1:-1:-1;;2617:88:127;;;;;;;;2554:151;;;;;;;;;;;;;;;;;;;;2751:88;441:3250:243;2751:88:127;2617;2751;;;-1:-1:-1;;2751:88:127;;;;356:29:125;2751:88:127;;;;2711:128;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2711:128:127;;;;;;;;3511:32;;;3541:2;3511:32;;;;;;3549:74;;;;;;-1:-1:-1;;;;;3549:74:127;;;;-1:-1:-1;;1367:45:259;;1418:27;;441:3250:243;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061017b575f3560e01c8063916a17c6116100d1578063ba414fa61161007c578063d8cc2b4011610057578063d8cc2b4014610447578063e20c9f711461045b578063fa7626d41461046f575f80fd5b8063ba414fa6146103fb578063c2f6c3a91461041f578063c7b8e15d14610433575f80fd5b8063b0f3d802116100ac578063b0f3d80214610369578063b1a73b8a1461037d578063b5508aa9146103e7575f80fd5b8063916a17c61461030757806393ad73ed14610328578063b0464fdc14610355575f80fd5b80633f7286f41161013157806366d9a9a01161010c57806366d9a9a0146102b157806385226c81146102d25780638dd3c5bd146102f3575f80fd5b80633f7286f4146102505780634996879b14610264578063542524dd14610278575f80fd5b80632ade3880116101615780632ade3880146101c657806339cd2013146101e75780633e5e3c231461023c575f80fd5b80630a9254e4146101865780631ed7831c1461019c575f80fd5b3661018257005b5f80fd5b348015610191575f80fd5b5061019a610488565b005b3480156101a7575f80fd5b506101b06104c7565b6040516101bd9190614874565b60405180910390f35b3480156101d1575f80fd5b506101da610534565b6040516101bd9190614918565b3480156101f2575f80fd5b5060235460245460255461021492600281810b936301000000909204900b9184565b60408051600295860b81529390940b60208401529282015260608101919091526080016101bd565b348015610247575f80fd5b506101b061067d565b34801561025b575f80fd5b506101b06106e8565b34801561026f575f80fd5b5061019a610753565b348015610283575f80fd5b5061028c61109e565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bd565b3480156102bc575f80fd5b506102c56110c0565b6040516101bd9190614a86565b3480156102dd575f80fd5b506102e6611239565b6040516101bd9190614b22565b3480156102fe575f80fd5b5061019a611304565b348015610312575f80fd5b5061031b611c12565b6040516101bd9190614b97565b348015610333575f80fd5b5060205460215460225461021492600281810b936301000000909204900b9184565b348015610360575f80fd5b5061031b611d15565b348015610374575f80fd5b5061019a611e18565b348015610388575f80fd5b506026546027546028546103b49260ff16919073ffffffffffffffffffffffffffffffffffffffff1683565b604080519315158452602084019290925273ffffffffffffffffffffffffffffffffffffffff16908201526060016101bd565b3480156103f2575f80fd5b506102e6612509565b348015610406575f80fd5b5061040f6125d4565b60405190151581526020016101bd565b34801561042a575f80fd5b5061019a6126a4565b34801561043e575f80fd5b5061028c612fe7565b348015610452575f80fd5b5061019a612ff7565b348015610466575f80fd5b506101b0613939565b34801561047a575f80fd5b50601f5461040f9060ff1681565b610490611e18565b6104986139a4565b805160549081906104a99082614d02565b5060208281015180516104c2926001850192019061477e565b505050565b6060601680548060200260200160405190810160405280929190818152602001828054801561052a57602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116104ff575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020015f905b82821015610674575f848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561065d578382905f5260205f200180546105d290614c66565b80601f01602080910402602001604051908101604052809291908181526020018280546105fe90614c66565b80156106495780601f1061062057610100808354040283529160200191610649565b820191905f5260205f20905b81548152906001019060200180831161062c57829003601f168201915b5050505050815260200190600101906105b5565b505050508152505081526020019060010190610557565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801561052a57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116104ff575050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801561052a57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116104ff575050505050905090565b604080516101408101825260485473ffffffffffffffffffffffffffffffffffffffff90811660a0830190815260495480831660c085015262ffffff7401000000000000000000000000000000000000000082041660e085015277010000000000000000000000000000000000000000000000900460020b610100840152604a5490911661012083015281526001602080830191909152670de0b6b3a76400008284018190525f6060840181905284518084018652908152608084015292516109c69160069161082591859101614e19565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152605480549192918290829061086a90614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461089690614c66565b80156108e15780601f106108b8576101008083540402835291602001916108e1565b820191905f5260205f20905b8154815290600101906020018083116108c457829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109b6578382905f5260205f2001805461092b90614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461095790614c66565b80156109a25780601f10610979576101008083540402835291602001916109a2565b820191905f5260205f20905b81548152906001019060200180831161098557829003601f168201915b50505050508152602001906001019061090e565b5050509152509092919050613a00565b805160549081906109d79082614d02565b5060208281015180516109f0926001850192019061477e565b50506048546040805173ffffffffffffffffffffffffffffffffffffffff9092166020830152810184905260016060820152610bbe9150600b90608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282019091526054805491929182908290610a7290614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9e90614c66565b8015610ae95780601f10610ac057610100808354040283529160200191610ae9565b820191905f5260205f20905b815481529060010190602001808311610acc57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109b6578382905f5260205f20018054610b3390614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5f90614c66565b8015610baa5780601f10610b8157610100808354040283529160200191610baa565b820191905f5260205f20905b815481529060010190602001808311610b8d57829003601f168201915b505050505081526020019060010190610b16565b80516054908190610bcf9082614d02565b506020828101518051610be8926001850192019061477e565b50506049546040805173ffffffffffffffffffffffffffffffffffffffff90921660208301525f8282015280518083038201815260a0830190915260548054610d8d9450600f93606001919082908290610c4190614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6d90614c66565b8015610cb85780601f10610c8f57610100808354040283529160200191610cb8565b820191905f5260205f20905b815481529060010190602001808311610c9b57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109b6578382905f5260205f20018054610d0290614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2e90614c66565b8015610d795780601f10610d5057610100808354040283529160200191610d79565b820191905f5260205f20905b815481529060010190602001808311610d5c57829003601f168201915b505050505081526020019060010190610ce5565b80516054908190610d9e9082614d02565b506020828101518051610db7926001850192019061477e565b509050505f610f3460546040518060400160405290815f82018054610ddb90614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054610e0790614c66565b8015610e525780601f10610e2957610100808354040283529160200191610e52565b820191905f5260205f20905b815481529060010190602001808311610e3557829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610f27578382905f5260205f20018054610e9c90614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec890614c66565b8015610f135780601f10610eea57610100808354040283529160200191610f13565b820191905f5260205f20905b815481529060010190602001808311610ef657829003601f168201915b505050505081526020019060010190610e7f565b5050505081525050613c14565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b90610f8b908490600401614f08565b5f604051808303815f87803b158015610fa2575f80fd5b505af1158015610fb4573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f5061796d656e74735f737761705f736574746c6546726f6d43616c6c65725f7460448201527f616b65416c6c546f4d736753656e6465720000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca1291506084015b6020604051808303815f875af1158015611074573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110989190614f21565b50505050565b6110bd600173fffd8963efd1fc6a506488495d951d5263988d26614f65565b81565b6060601b805480602002602001604051908101604052809291908181526020015f905b82821015610674578382905f5260205f2090600202016040518060400160405290815f8201805461111390614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461113f90614c66565b801561118a5780601f106111615761010080835404028352916020019161118a565b820191905f5260205f20905b81548152906001019060200180831161116d57829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561122157602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116111ce5790505b505050505081525050815260200190600101906110e3565b6060601a805480602002602001604051908101604052809291908181526020015f905b82821015610674578382905f5260205f2001805461127990614c66565b80601f01602080910402602001604051908101604052809291908181526020018280546112a590614c66565b80156112f05780601f106112c7576101008083540402835291602001916112f0565b820191905f5260205f20905b8154815290600101906020018083116112d357829003601f168201915b50505050508152602001906001019061125c565b604080516101408101825260485473ffffffffffffffffffffffffffffffffffffffff90811660a0830190815260495480831660c085015262ffffff7401000000000000000000000000000000000000000082041660e085015277010000000000000000000000000000000000000000000000900460020b610100840152604a5490911661012083015281526001602080830191909152670de0b6b3a76400008284018190525f606084018190528451808401865290815260808401529251611567916006916113d691859101614e19565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152605480549192918290829061141b90614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461144790614c66565b80156114925780601f1061146957610100808354040283529160200191611492565b820191905f5260205f20905b81548152906001019060200180831161147557829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109b6578382905f5260205f200180546114dc90614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461150890614c66565b80156115535780601f1061152a57610100808354040283529160200191611553565b820191905f5260205f20905b81548152906001019060200180831161153657829003601f168201915b5050505050815260200190600101906114bf565b805160549081906115789082614d02565b506020828101518051611591926001850192019061477e565b50506048546046546040805173ffffffffffffffffffffffffffffffffffffffff90931660208401528201526117599150600c90606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152605480549192918290829061160d90614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461163990614c66565b80156116845780601f1061165b57610100808354040283529160200191611684565b820191905f5260205f20905b81548152906001019060200180831161166757829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109b6578382905f5260205f200180546116ce90614c66565b80601f01602080910402602001604051908101604052809291908181526020018280546116fa90614c66565b80156117455780601f1061171c57610100808354040283529160200191611745565b820191905f5260205f20905b81548152906001019060200180831161172857829003601f168201915b5050505050815260200190600101906116b1565b8051605490819061176a9082614d02565b506020828101518051611783926001850192019061477e565b50506049546040805173ffffffffffffffffffffffffffffffffffffffff909216602083015230908201525f60608201526119509150600e90608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152605480549192918290829061180490614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461183090614c66565b801561187b5780601f106118525761010080835404028352916020019161187b565b820191905f5260205f20905b81548152906001019060200180831161185e57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109b6578382905f5260205f200180546118c590614c66565b80601f01602080910402602001604051908101604052809291908181526020018280546118f190614c66565b801561193c5780601f106119135761010080835404028352916020019161193c565b820191905f5260205f20905b81548152906001019060200180831161191f57829003601f168201915b5050505050815260200190600101906118a8565b805160549081906119619082614d02565b50602082810151805161197a926001850192019061477e565b509050505f611aea60546040518060400160405290815f8201805461199e90614c66565b80601f01602080910402602001604051908101604052809291908181526020018280546119ca90614c66565b8015611a155780601f106119ec57610100808354040283529160200191611a15565b820191905f5260205f20905b8154815290600101906020018083116119f857829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610f27578382905f5260205f20018054611a5f90614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054611a8b90614c66565b8015611ad65780601f10611aad57610100808354040283529160200191611ad6565b820191905f5260205f20905b815481529060010190602001808311611ab957829003601f168201915b505050505081526020019060010190611a42565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b90611b41908490600401614f08565b5f604051808303815f87803b158015611b58575f80fd5b505af1158015611b6a573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f5061796d656e74735f737761705f736574746c6546726f6d43616c6c65725f7460448201527f616b65416c6c546f5370656369666965644164647265737300000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150608401611058565b6060601d805480602002602001604051908101604052809291908181526020015f905b82821015610674575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939491938583019392830182828015611cfd57602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611caa5790505b50505050508152505081526020019060010190611c35565b6060601c805480602002602001604051908101604052809291908181526020015f905b82821015610674575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939491938583019392830182828015611e0057602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611dad5790505b50505050508152505081526020019060010190611d38565b611e20613c46565b602b5460405173ffffffffffffffffffffffffffffffffffffffff90911690611e48906147d2565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff080158015611e7e573d5f803e3d5ffd5b50604580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055602b54604051911690611ed2906147e0565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff080158015611f08573d5f803e3d5ffd5b50604480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790555f611f596004613cd1565b9050805f81518110611f6d57611f6d614f97565b602002602001015160295f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600181518110611fc757611fc7614f97565b6020026020010151602a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060028151811061202157612021614f97565b602002602001015160515f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060038151811061207b5761207b614f97565b6020908102919091010151605280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9283161790556029546120d591165f613de3565b8051603980547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff938416179091556020830151603a8054604086015160608701519386167fffffffffffffffffff0000000000000000000000000000000000000000000000909216919091177401000000000000000000000000000000000000000062ffffff92831602177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff16770100000000000000000000000000000000000000000000009190931602919091179055608090920151603b805490931690821617909155602954602a546121e79291821691165f61407b565b8051604880547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff93841617909155602083015160498054604086015160608701519386167fffffffffffffffffff0000000000000000000000000000000000000000000000909216919091177401000000000000000000000000000000000000000062ffffff92831602177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff16770100000000000000000000000000000000000000000000009190931602919091179055608090920151604a805490931690821617909155602a546051546122f99291821691165f61407b565b8051604b80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff938416179091556020830151604c8054604086015160608701519386167fffffffffffffffffff0000000000000000000000000000000000000000000000909216919091177401000000000000000000000000000000000000000062ffffff92831602177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff16770100000000000000000000000000000000000000000000009190931602919091179055608090920151604d80549093169082161790915560515460525461240b9291821691165f61407b565b8051604e80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff938416179091556020830151604f8054604086015160608701519386167fffffffffffffffffff0000000000000000000000000000000000000000000000909216919091177401000000000000000000000000000000000000000062ffffff92831602177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff1677010000000000000000000000000000000000000000000000919093160291909117905560809092015160508054909316911617905550565b60606019805480602002602001604051908101604052809291908181526020015f905b82821015610674578382905f5260205f2001805461254990614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461257590614c66565b80156125c05780601f10612597576101008083540402835291602001916125c0565b820191905f5260205f20905b8154815290600101906020018083116125a357829003601f168201915b50505050508152602001906001019061252c565b6008545f9060ff16156125eb575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c6564000000000000000000000000000000000000000000000000000060248301525f9163667f9d7090604401602060405180830381865afa158015612679573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061269d9190614f21565b1415905090565b604080516101408101825260485473ffffffffffffffffffffffffffffffffffffffff90811660a0830181815260495480841660c086015262ffffff7401000000000000000000000000000000000000000082041660e086015277010000000000000000000000000000000000000000000000900460020b610100850152604a54831661012085015283526001602080850191909152670de0b6b3a76400008486018190525f606086018190528651928301909652948152608084015260455461276f92168461440a565b6129166006826040516020016127859190614e19565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906127ca90614c66565b80601f01602080910402602001604051908101604052809291908181526020018280546127f690614c66565b80156128415780601f1061281857610100808354040283529160200191612841565b820191905f5260205f20905b81548152906001019060200180831161282457829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109b6578382905f5260205f2001805461288b90614c66565b80601f01602080910402602001604051908101604052809291908181526020018280546128b790614c66565b80156129025780601f106128d957610100808354040283529160200191612902565b820191905f5260205f20905b8154815290600101906020018083116128e557829003601f168201915b50505050508152602001906001019061286e565b805160549081906129279082614d02565b506020828101518051612940926001850192019061477e565b50506029546040805173ffffffffffffffffffffffffffffffffffffffff90921660208301527f8000000000000000000000000000000000000000000000000000000000000000908201525f6060820152612b2d9150600b90608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282820190915260548054919291829082906129e190614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054612a0d90614c66565b8015612a585780601f10612a2f57610100808354040283529160200191612a58565b820191905f5260205f20905b815481529060010190602001808311612a3b57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109b6578382905f5260205f20018054612aa290614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054612ace90614c66565b8015612b195780601f10612af057610100808354040283529160200191612b19565b820191905f5260205f20905b815481529060010190602001808311612afc57829003601f168201915b505050505081526020019060010190612a85565b80516054908190612b3e9082614d02565b506020828101518051612b57926001850192019061477e565b50506049546040805173ffffffffffffffffffffffffffffffffffffffff90921660208301526001908201525f6060820152612d259150600e90608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282019091526054805491929182908290612bd990614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054612c0590614c66565b8015612c505780601f10612c2757610100808354040283529160200191612c50565b820191905f5260205f20905b815481529060010190602001808311612c3357829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109b6578382905f5260205f20018054612c9a90614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054612cc690614c66565b8015612d115780601f10612ce857610100808354040283529160200191612d11565b820191905f5260205f20905b815481529060010190602001808311612cf457829003601f168201915b505050505081526020019060010190612c7d565b80516054908190612d369082614d02565b506020828101518051612d4f926001850192019061477e565b509050505f612ebf60546040518060400160405290815f82018054612d7390614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054612d9f90614c66565b8015612dea5780601f10612dc157610100808354040283529160200191612dea565b820191905f5260205f20905b815481529060010190602001808311612dcd57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610f27578382905f5260205f20018054612e3490614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054612e6090614c66565b8015612eab5780601f10612e8257610100808354040283529160200191612eab565b820191905f5260205f20905b815481529060010190602001808311612e8e57829003601f168201915b505050505081526020019060010190612e17565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b90612f16908490600401614f08565b5f604051808303815f87803b158015612f2d575f80fd5b505af1158015612f3f573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f5061796d656e74735f737761705f736574746c655769746842616c616e63655f60448201527f74616b65416c6c546f4d736753656e64657200000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150608401611058565b6110bd6401000276a36001614fc4565b604080516101408101825260485473ffffffffffffffffffffffffffffffffffffffff90811660a0830181815260495480841660c086015262ffffff7401000000000000000000000000000000000000000082041660e086015277010000000000000000000000000000000000000000000000900460020b610100850152604a54831661012085015283526001602080850191909152670de0b6b3a76400008486018190525f60608601819052865192830190965294815260808401526045546130c292168461440a565b6132696006826040516020016130d89190614e19565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152605480549192918290829061311d90614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461314990614c66565b80156131945780601f1061316b57610100808354040283529160200191613194565b820191905f5260205f20905b81548152906001019060200180831161317757829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109b6578382905f5260205f200180546131de90614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461320a90614c66565b80156132555780601f1061322c57610100808354040283529160200191613255565b820191905f5260205f20905b81548152906001019060200180831161323857829003601f168201915b5050505050815260200190600101906131c1565b8051605490819061327a9082614d02565b506020828101518051613293926001850192019061477e565b50506048546040805173ffffffffffffffffffffffffffffffffffffffff90921660208301527f8000000000000000000000000000000000000000000000000000000000000000908201525f60608201526134809150600b90608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152605480549192918290829061333490614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461336090614c66565b80156133ab5780601f10613382576101008083540402835291602001916133ab565b820191905f5260205f20905b81548152906001019060200180831161338e57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109b6578382905f5260205f200180546133f590614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461342190614c66565b801561346c5780601f106134435761010080835404028352916020019161346c565b820191905f5260205f20905b81548152906001019060200180831161344f57829003601f168201915b5050505050815260200190600101906133d8565b805160549081906134919082614d02565b5060208281015180516134aa926001850192019061477e565b50506049546040805173ffffffffffffffffffffffffffffffffffffffff909216602083015230908201525f60608201526136779150600e90608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152605480549192918290829061352b90614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461355790614c66565b80156135a25780601f10613579576101008083540402835291602001916135a2565b820191905f5260205f20905b81548152906001019060200180831161358557829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b828210156109b6578382905f5260205f200180546135ec90614c66565b80601f016020809104026020016040519081016040528092919081815260200182805461361890614c66565b80156136635780601f1061363a57610100808354040283529160200191613663565b820191905f5260205f20905b81548152906001019060200180831161364657829003601f168201915b5050505050815260200190600101906135cf565b805160549081906136889082614d02565b5060208281015180516136a1926001850192019061477e565b509050505f61381160546040518060400160405290815f820180546136c590614c66565b80601f01602080910402602001604051908101604052809291908181526020018280546136f190614c66565b801561373c5780601f106137135761010080835404028352916020019161373c565b820191905f5260205f20905b81548152906001019060200180831161371f57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610f27578382905f5260205f2001805461378690614c66565b80601f01602080910402602001604051908101604052809291908181526020018280546137b290614c66565b80156137fd5780601f106137d4576101008083540402835291602001916137fd565b820191905f5260205f20905b8154815290600101906020018083116137e057829003601f168201915b505050505081526020019060010190613769565b6045546040517f4f84885b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f84885b90613868908490600401614f08565b5f604051808303815f87803b15801561387f575f80fd5b505af1158015613891573d5f803e3d5ffd5b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f5061796d656e74735f737761705f736574746c655769746842616c616e63655f60448201527f74616b65416c6c546f53706563696669656441646472657373000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063dd9fca129150608401611058565b6060601580548060200260200160405190810160405280929190818152602001828054801561052a57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116104ff575050505050905090565b60408051808201825260608082526020808301829052835191820184525f828501818152835284518181528083019095529293919290830191906139f8565b60608152602001906001900390816139e35790505b509052919050565b60408051808201909152606080825260208201525f8460200151516001613a279190614ff0565b67ffffffffffffffff811115613a3f57613a3f614c39565b6040519080825280601f01601f191660200182016040528015613a69576020820181803683370190505b5090505f8560200151516001613a7f9190614ff0565b67ffffffffffffffff811115613a9757613a97614c39565b604051908082528060200260200182016040528015613aca57816020015b6060815260200190600190039081613ab55790505b5090505f5b60018251613add9190615003565b811015613b875786602001518181518110613afa57613afa614f97565b6020026020010151828281518110613b1457613b14614f97565b6020026020010181905250865f01518181518110613b3457613b34614f97565b602001015160f81c60f81b838281518110613b5157613b51614f97565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600101613acf565b50838160018351613b989190615003565b81518110613ba857613ba8614f97565b60200260200101819052508460f81b8260018351613bc69190615003565b81518110613bd657613bd6614f97565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053509085526020850152509192915050565b6060815f01518260200151604051602001613c30929190615016565b6040516020818303038152906040529050919050565b30604051613c53906147ee565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff080158015613c89573d5f803e3d5ffd5b50602b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60605f613cef83700100000000000000000000000000000000614527565b90505f5b8360ff16811015613ddc57818181518110613d1057613d10614f97565b60209081029190910101516045546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602482015291169063095ea7b3906044016020604051808303815f875af1158015613daf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613dd391906150a9565b50600101613cf3565b5092915050565b6040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a0810182525f815273ffffffffffffffffffffffffffffffffffffffff8481166020830152610bb882840152603c60608301528381166080830152602b5492517f6276cbbe00000000000000000000000000000000000000000000000000000000815291921690636276cbbe90613e9d9084906c01000000000000000000000000906004016150c8565b6020604051808303815f875af1158015613eb9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613edd919061516e565b50604480546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201529085169163095ea7b391016020604051808303815f875af1158015613f72573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f9691906150a9565b50604454604080516080810182527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2764c8152620d89b46020820152680ad78ebc5ac62000008183018190525f606083015291517f5a6bcfda00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90931692635a6bcfda929161403a9186919060040161518e565b60206040518083038185885af1158015614056573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190613ddc9190614f21565b6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091528273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1611156140dd579192915b506040805160a08101825273ffffffffffffffffffffffffffffffffffffffff80861682528481166020830152610bb882840152603c60608301528381166080830152602b5492517f6276cbbe00000000000000000000000000000000000000000000000000000000815291921690636276cbbe9061416f9084906c01000000000000000000000000906004016150c8565b6020604051808303815f875af115801561418b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906141af919061516e565b50604480546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201529086169163095ea7b391016020604051808303815f875af1158015614244573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061426891906150a9565b50604480546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201529085169163095ea7b391016020604051808303815f875af11580156142fd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061432191906150a9565b50604454604080516080810182527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2764c8152620d89b46020820152680ad78ebc5ac6200000818301525f606082015290517f5a6bcfda00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921691635a6bcfda916143c29185919060040161518e565b6020604051808303815f875af11580156143de573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906144029190614f21565b509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff8416614465575f805f8085875af190508061446057614460835f7ff4b3b1bc000000000000000000000000000000000000000000000000000000006146b0565b611098565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505f81525f60208201525f6040820152508061109857611098847fa9059cbb000000000000000000000000000000000000000000000000000000007ff27f64e4000000000000000000000000000000000000000000000000000000006146b0565b60608260ff1667ffffffffffffffff81111561454557614545614c39565b60405190808252806020026020018201604052801561456e578160200160208202803683370190505b5090505f5b8360ff168160ff161015613ddc57601260405161458f906147fc565b6145999190615280565b604051809103905ff0801580156145b2573d5f803e3d5ffd5b50828260ff16815181106145c8576145c8614f97565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818160ff168151811061461757614617614f97565b60209081029190910101516040517f40c10f190000000000000000000000000000000000000000000000000000000081523060048201526024810185905273ffffffffffffffffffffffffffffffffffffffff909116906340c10f19906044015f604051808303815f87803b15801561468e575f80fd5b505af11580156146a0573d5f803e3d5ffd5b5050600190920191506145739050565b6040517f90bfb8650000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff851660048301527fffffffff0000000000000000000000000000000000000000000000000000000084166024830152608060448301526020601f3d018190040260a0810160648401523d608484015290913d5f60a483013e60048260a4018201527fffffffff0000000000000000000000000000000000000000000000000000000084168260c4018201528160e40181fd5b828054828255905f5260205f209081019282156147c2579160200282015b828111156147c257825182906147b29082614d02565b509160200191906001019061479c565b506147ce92915061480a565b5090565b6123da806200530b83390190565b611c3d80620076e583390190565b616a05806200932283390190565b611168806200fd2783390190565b808211156147ce575f61481d8282614826565b5060010161480a565b50805461483290614c66565b5f825580601f10614841575050565b601f0160209004905f5260205f209081019061485d9190614860565b50565b5b808211156147ce575f8155600101614861565b602080825282518282018190525f918401906040840190835b818110156148c157835173ffffffffffffffffffffffffffffffffffffffff1683526020938401939092019160010161488d565b509095945050505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614a1e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805173ffffffffffffffffffffffffffffffffffffffff168652602090810151604082880181905281519088018190529101906060600582901b8801810191908801905f5b81811015614a04577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a85030183526149ee8486516148cc565b60209586019590945092909201916001016149b4565b50919750505060209485019492909201915060010161493e565b50929695505050505050565b5f8151808452602084019350602083015f5b82811015614a7c5781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101614a3c565b5093949350505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614a1e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752614af060408801826148cc565b9050602082015191508681036020880152614b0b8183614a2a565b965050506020938401939190910190600101614aac565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614a1e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452614b828583516148cc565b94506020938401939190910190600101614b48565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614a1e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815173ffffffffffffffffffffffffffffffffffffffff81511686526020810151905060406020870152614c236040870182614a2a565b9550506020938401939190910190600101614bbd565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b600181811c90821680614c7a57607f821691505b602082108103614cb1577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f8211156104c257805f5260205f20601f840160051c81016020851015614cdc5750805b601f840160051c820191505b81811015614cfb575f8155600101614ce8565b5050505050565b815167ffffffffffffffff811115614d1c57614d1c614c39565b614d3081614d2a8454614c66565b84614cb7565b6020601f821160018114614d81575f8315614d4b5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455614cfb565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015614dce5787850151825560209485019460019092019101614dae565b5084821015614e0a57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b60208152614ea060208201835173ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b6020820151151560c08201526fffffffffffffffffffffffffffffffff60408301511660e08201526fffffffffffffffffffffffffffffffff6060830151166101008201525f608083015161012080840152614f006101408401826148cc565b949350505050565b602081525f614f1a60208301846148cc565b9392505050565b5f60208284031215614f31575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff8281168282160390811115614f9157614f91614f38565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff8181168382160190811115614f9157614f91614f38565b80820180821115614f9157614f91614f38565b81810381811115614f9157614f91614f38565b604081525f61502860408301856148cc565b828103602084015280845180835260208301915060208160051b840101602087015f5b8381101561509b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08684030185526150858383516148cc565b602095860195909350919091019060010161504b565b509098975050505050505050565b5f602082840312156150b9575f80fd5b81518015158114614f1a575f80fd5b60c0810161514b828573ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b73ffffffffffffffffffffffffffffffffffffffff831660a08301529392505050565b5f6020828403121561517e575f80fd5b81518060020b8114614f1a575f80fd5b61520d818473ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b815160020b60a0820152602082015160020b60c0820152604082015160e0820152606082015161010082015261014061012082015260026101408201527f30780000000000000000000000000000000000000000000000000000000000006101608201525f610180820190509392505050565b606081525f6152bc60608301600481527f5445535400000000000000000000000000000000000000000000000000000000602082015260400190565b82810360208401526152f881600481527f5445535400000000000000000000000000000000000000000000000000000000602082015260400190565b91505060ff831660408301529291505056fe60a0604052348015600e575f80fd5b506040516123da3803806123da833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f80fd5b81516001600160a01b0381168114605f575f80fd5b9392505050565b60805161230f6100cb5f395f8181610128015281816101f30152818161035901528181610f0201528181610fde01528181611052015281816110ed0152818161119501528181611270015281816116230152818161187401526118b6015261230f5ff3fe60806040526004361061005b575f3560e01c8063a1bfb5ff11610041578063a1bfb5ff146100b0578063d737d0c7146100c3578063dc4c90d314610117575f80fd5b80634f84885b1461006657806391dd73461461007b575f80fd5b3661006257005b5f80fd5b610079610074366004611c6b565b61014a565b005b348015610086575f80fd5b5061009a610095366004611c6b565b6101d9565b6040516100a79190611cd9565b60405180910390f35b6100796100be366004611c6b565b61025d565b3480156100ce575f80fd5b507f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c5b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a7565b348015610122575f80fd5b506100f27f000000000000000000000000000000000000000000000000000000000000000081565b73ffffffffffffffffffffffffffffffffffffffff7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c16156101b9576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101c2336102f6565b6101cc828261031c565b6101d55f6102f6565b5050565b60603373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461024a576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61025483836103f5565b90505b92915050565b73ffffffffffffffffffffffffffffffffffffffff7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c16156102cc576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102d5336102f6565b6102df828261031c565b4780156102f0576102f03382610432565b506101d55f5b807f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d50565b6040517f48c8949100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906348c89491906103909085908590600401611d73565b5f604051808303815f875af11580156103ab573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103f09190810190611e0a565b505050565b6060365f365f61040587876104a9565b935093509350935061041984848484610551565b505060408051602081019091525f815295945050505050565b5f805f805f85875af19050806103f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c45440000000000000000000000000060448201526064015b60405180910390fd5b365f365f604086351860608701945063ffffffff6040880135169350606063ffffffe0601f860116018060208901351882179150808801905063ffffffff8135169250602081019350508160051b805f5b8281101561052957858101358281189490941793860135601f0163ffffffe016909101602090810191016104fa565b508085018989011083171561054557633b99b53d5f526004601cfd5b50505092959194509250565b8281811461058b576040517faaad13f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b818110156105ea575f8686838181106105a8576105a8611ebc565b919091013560f81c91506105e19050818686858181106105ca576105ca611ebc565b90506020028101906105dc9190611ee9565b6105f2565b5060010161058d565b505050505050565b600b83101561067e576007830361061f573661060e8383610884565b9050610619816108a3565b50505050565b6006830361063d57366106328383610a41565b905061061981610a59565b6009830361065b57366106508383610884565b905061061981610baf565b60088303610679573661066e8383610a41565b905061061981610d64565b61084f565b600c8303610712575f806106928484610ebe565b915091505f6106a083610ee6565b9050818111156106e6576040517f12bacdd300000000000000000000000000000000000000000000000000000000815260048101839052602481018290526044016104a0565b6105ea837f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c83610f8d565b600f83036107a6575f806107268484610ebe565b915091505f61073483611179565b90508181101561077a576040517f8b063d7300000000000000000000000000000000000000000000000000000000815260048101839052602481018290526044016104a0565b6105ea837f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c83611210565b600b83036107dd575f805f6107bb85856112cc565b9250925092506105ea836107ce836112fa565b6107d8858761132d565b610f8d565b600e8303610814575f805f6107f285856112cc565b9250925092506105ea8361080584611390565b61080f8487611442565b611210565b6010830361084f575f805f61082985856112cc565b9250925092506105ea8361083c84611390565b61080f8461084988611179565b90611451565b6040517f5cda29d7000000000000000000000000000000000000000000000000000000008152600481018490526024016104a0565b3660a082101561089b57633b99b53d5f526004601cfd5b505080350190565b5f6108b16020830183611f51565b91505f9050806108c46020850185611fd9565b90505f6108d76060860160408701611ff4565b90506fffffffffffffffffffffffffffffffff8116610904576109016108fc83611179565b6114a5565b90505b365f5b858110156109a65761091c6020880188611f51565b8281811061092c5761092c611ebc565b905060200281019061093e9190612023565b91505f8061094c84876114e8565b909250905061098861098083836fffffffffffffffffffffffffffffffff89165f0361097b60808a018a611ee9565b61161f565b600f0b611748565b965086945061099a6020850185611fd9565b95505050600101610907565b506109b76080870160608801611ff4565b6fffffffffffffffffffffffffffffffff16846fffffffffffffffffffffffffffffffff1610156105ea576109f26080870160608801611ff4565b6040517f8b063d730000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff918216600482015290851660248201526044016104a0565b3661014082101561089b57633b99b53d5f526004601cfd5b5f610a6a60e0830160c08401611ff4565b90506fffffffffffffffffffffffffffffffff8116610ac257610abf6108fc610a9960c0850160a0860161205f565b610ab257610aad6040850160208601611fd9565b611179565b610aad6020850185611fd9565b90505b5f610b11610980610ad8368690038601866120a1565b610ae860c0870160a0880161205f565b610b036fffffffffffffffffffffffffffffffff8716612162565b61097b610100890189611ee9565b9050610b24610100840160e08501611ff4565b6fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff1610156103f057610b60610100840160e08501611ff4565b6040517f8b063d730000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff918216600482015290821660248201526044016104a0565b5f610bbd6020830183611f51565b91505f905080610bd36060850160408601611ff4565b90505f610be36020860186611fd9565b9050366fffffffffffffffffffffffffffffffff8316610c0c57610c096108fc83610ee6565b92505b845b8015610cc957610c216020880188611f51565b60018303818110610c3457610c34611ebc565b9050602002810190610c469190612023565b91505f80610c5484866114e8565b9092509050610c8c610c828383156fffffffffffffffffffffffffffffffff8a1661097b60808a018a611ee9565b600f0b5f036114a5565b9650869550610c9e6020850185611fd9565b945050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01610c0e565b50610cda6080870160608801611ff4565b6fffffffffffffffffffffffffffffffff16846fffffffffffffffffffffffffffffffff1611156105ea57610d156080870160608801611ff4565b6040517f12bacdd30000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff918216600482015290851660248201526044016104a0565b5f610d7560e0830160c08401611ff4565b90506fffffffffffffffffffffffffffffffff8116610dcd57610dca6108fc610da460c0850160a0860161205f565b610dba57610db56020850185611fd9565b610ee6565b610db56040850160208601611fd9565b90505b5f610e20610e14610de3368690038601866120a1565b610df360c0870160a0880161205f565b6fffffffffffffffffffffffffffffffff861661097b610100890189611ee9565b600f0b6108fc90612162565b9050610e33610100840160e08501611ff4565b6fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff1611156103f057610e6f610100840160e08501611ff4565b6040517f12bacdd30000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff918216600482015290821660248201526044016104a0565b5f806040831015610ed657633b99b53d5f526004601cfd5b5050813592602090920135919050565b5f80610f2973ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016308561177d565b90505f811315610f7d576040517f3351b26000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024016104a0565b610f8681612162565b9392505050565b805f03610f9957505050565b6040517fa584119400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a5841194906024015f604051808303815f87803b15801561101f575f80fd5b505af1158015611031573d5f803e3d5ffd5b5050505073ffffffffffffffffffffffffffffffffffffffff83166110e0577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166311da60b4826040518263ffffffff1660e01b815260040160206040518083038185885af11580156110bb573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906106199190612198565b6110eb83838361183b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611155573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106199190612198565b5f806111bc73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016308561177d565b90505f811215610257576040517f4c085bf100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024016104a0565b805f0361121c57505050565b6040517f0b0d9c0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301528381166024830152604482018390527f00000000000000000000000000000000000000000000000000000000000000001690630b0d9c09906064015f604051808303815f87803b1580156112b1575f80fd5b505af11580156112c3573d5f803e3d5ffd5b50505050505050565b5f805f60608410156112e557633b99b53d5f526004601cfd5b50508235936020840135936040013592509050565b5f816113065730610257565b7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c610257565b5f7f8000000000000000000000000000000000000000000000000000000000000000830361137b576113748273ffffffffffffffffffffffffffffffffffffffff166118db565b9050610257565b826113895761137482610ee6565b5081610257565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff8316016113f5577f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c610257565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe73ffffffffffffffffffffffffffffffffffffffff831601611439575030919050565b5090565b919050565b5f826113895761137482611179565b5f61271082111561148e576040517fdeaa01e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61271061149b83856121af565b61025491906121c6565b806fffffffffffffffffffffffffffffffff8116811461143d5761143d7f93dafdf10000000000000000000000000000000000000000000000000000000061198a565b6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091525f806115216020860186611fd9565b90505f8073ffffffffffffffffffffffffffffffffffffffff8084169087161061154c57828661154f565b85835b909250905073ffffffffffffffffffffffffffffffffffffffff8087169083161493506040518060a001604052808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020018860200160208101906115c891906121fe565b62ffffff1681526020016115e260608a0160408b01612217565b60020b81526020016115fa60808a0160608b01611fd9565b73ffffffffffffffffffffffffffffffffffffffff1681525094505050509250929050565b5f807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f3cd914c8860405180606001604052808a151581526020018981526020018a6116965773fffd8963efd1fc6a506488495d951d5263988d2561169d565b6401000276a45b73ffffffffffffffffffffffffffffffffffffffff1681525087876040518563ffffffff1660e01b81526004016116d79493929190612230565b6020604051808303815f875af11580156116f3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117179190612198565b90508515155f8612146117335761172e8160801d90565b61173d565b61173d81600f0b90565b979650505050505050565b5f8082600f0b1215611439576114397f93dafdf10000000000000000000000000000000000000000000000000000000061198a565b5f8073ffffffffffffffffffffffffffffffffffffffff84165f5273ffffffffffffffffffffffffffffffffffffffff831660205260405f2090508473ffffffffffffffffffffffffffffffffffffffff1663f135baaa826040518263ffffffff1660e01b81526004016117f391815260200190565b602060405180830381865afa15801561180e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118329190612198565b95945050505050565b3073ffffffffffffffffffffffffffffffffffffffff831603611899576103f073ffffffffffffffffffffffffffffffffffffffff84167f000000000000000000000000000000000000000000000000000000000000000083611992565b6103f073ffffffffffffffffffffffffffffffffffffffff8416837f000000000000000000000000000000000000000000000000000000000000000084611aaf565b5f73ffffffffffffffffffffffffffffffffffffffff82166118fe575047919050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa158015611966573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102579190612198565b805f5260045ffd5b5f73ffffffffffffffffffffffffffffffffffffffff84166119ed575f805f8085875af19050806119e8576119e8835f7ff4b3b1bc00000000000000000000000000000000000000000000000000000000611b9d565b610619565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505f81525f60208201525f6040820152508061061957610619847fa9059cbb000000000000000000000000000000000000000000000000000000007ff27f64e400000000000000000000000000000000000000000000000000000000611b9d565b5f6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015282604482015260205f6064835f8a5af13d15601f3d1160015f511416171691505080611b96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c454400000000000000000000000060448201526064016104a0565b5050505050565b6040517f90bfb8650000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff851660048301527fffffffff0000000000000000000000000000000000000000000000000000000084166024830152608060448301526020601f3d018190040260a0810160648401523d608484015290913d5f60a483013e60048260a4018201527fffffffff0000000000000000000000000000000000000000000000000000000084168260c4018201528160e40181fd5b5f8060208385031215611c7c575f80fd5b823567ffffffffffffffff811115611c92575f80fd5b8301601f81018513611ca2575f80fd5b803567ffffffffffffffff811115611cb8575f80fd5b856020828401011115611cc9575f80fd5b6020919091019590945092505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081525f611d86602083018486611d2c565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611e0257611e02611d8e565b604052919050565b5f60208284031215611e1a575f80fd5b815167ffffffffffffffff811115611e30575f80fd5b8201601f81018413611e40575f80fd5b805167ffffffffffffffff811115611e5a57611e5a611d8e565b611e8b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611dbb565b818152856020838501011115611e9f575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611f1c575f80fd5b83018035915067ffffffffffffffff821115611f36575f80fd5b602001915036819003821315611f4a575f80fd5b9250929050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611f84575f80fd5b83018035915067ffffffffffffffff821115611f9e575f80fd5b6020019150600581901b3603821315611f4a575f80fd5b73ffffffffffffffffffffffffffffffffffffffff81168114611fd6575f80fd5b50565b5f60208284031215611fe9575f80fd5b8135610f8681611fb5565b5f60208284031215612004575f80fd5b81356fffffffffffffffffffffffffffffffff81168114610f86575f80fd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61833603018112612055575f80fd5b9190910192915050565b5f6020828403121561206f575f80fd5b81358015158114610f86575f80fd5b803562ffffff8116811461143d575f80fd5b8035600281900b811461143d575f80fd5b5f60a08284031280156120b2575f80fd5b5060405160a0810167ffffffffffffffff811182821017156120d6576120d6611d8e565b60405282356120e481611fb5565b815260208301356120f481611fb5565b60208201526121056040840161207e565b604082015261211660608401612090565b6060820152608083013561212981611fb5565b60808201529392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f7f8000000000000000000000000000000000000000000000000000000000000000820361219257612192612135565b505f0390565b5f602082840312156121a8575f80fd5b5051919050565b808202811582820484141761025757610257612135565b5f826121f9577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f6020828403121561220e575f80fd5b6102548261207e565b5f60208284031215612227575f80fd5b61025482612090565b73ffffffffffffffffffffffffffffffffffffffff855116815273ffffffffffffffffffffffffffffffffffffffff602086015116602082015262ffffff6040860151166040820152606085015160020b606082015273ffffffffffffffffffffffffffffffffffffffff60808601511660808201526122df60a08201858051151582526020808201519083015260409081015173ffffffffffffffffffffffffffffffffffffffff16910152565b6101206101008201525f6122f861012083018486611d2c565b969550505050505056fea164736f6c634300081a000a60a0604052348015600e575f80fd5b50604051611c3d380380611c3d833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f80fd5b81516001600160a01b0381168114605f575f80fd5b9392505050565b608051611b736100ca5f395f81816079015281816101020152818161027f015281816102f301528181610324015281816104090152818161058d015281816105f001528181610679015281816106d7015281816108e401526109240152611b735ff3fe60806040526004361061003e575f3560e01c80630a5b11e414610042578063481c6a75146100685780635a6bcfda146100c057806391dd7346146100d3575b5f80fd5b6100556100503660046114c3565b6100ff565b6040519081526020015b60405180910390f35b348015610073575f80fd5b5061009b7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161005f565b6100556100ce36600461154a565b61024f565b3480156100de575f80fd5b506100f26100ed3660046115a8565b610265565b60405161005f9190611662565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166348c894916040518060c001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018881526020018781526020018615158152602001851515815250604051602001610193919061167b565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016101be9190611662565b5f604051808303815f875af11580156101d9573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261021e919081019061179a565b806020019051810190610231919061180f565b9050478015610245576102455f3383610729565b5095945050505050565b5f61025d8484845f806100ff565b949350505050565b60603373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102a8575f80fd5b5f6102b583850185611826565b90505f61031d6102ca836020015160a0902090565b60408401518051602082015160609092015173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016939230929161084c565b505090505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635a6bcfda8460200151856040015186606001516040518463ffffffff1660e01b815260040161038b939291906118ef565b60408051808303815f875af11580156103a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103ca91906119b3565b5090505f6104336103e0856020015160a0902090565b60408601518051602082015160609092015173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016939230929161084c565b505090505f61044d85602001515f0151865f0151306108a3565b925050505f610468866020015160200151875f0151306108a3565b9250505082600f0b86604001516040015186600f0b6104879190611a02565b146104f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6c6971756964697479206368616e676520696e636f7272656374000000000000604482015260640160405180910390fd5b5f866040015160400151121561053a575f82138061050f57505f81135b61051b5761051b611a29565b5f82128061052857505f81125b1561053557610535611a29565b61057d565b5f866040015160400151131561057d575f82128061055757505f81125b61056357610563611a29565b5f82138061057057505f81135b1561057d5761057d611a29565b5f8212156105e05785516105e0907f0000000000000000000000000000000000000000000000000000000000000000906105b685611a56565b60808a015160208b01515173ffffffffffffffffffffffffffffffffffffffff1693929190610956565b5f811215610645578551610645907f00000000000000000000000000000000000000000000000000000000000000009061061984611a56565b60808a01516020808c0151015173ffffffffffffffffffffffffffffffffffffffff1693929190610956565b5f8213156106a157855160a08701516020880151516106a19273ffffffffffffffffffffffffffffffffffffffff909116917f000000000000000000000000000000000000000000000000000000000000000091908690610d14565b5f8113156106ff57855160a087015160208089015101516106ff9273ffffffffffffffffffffffffffffffffffffffff909116917f000000000000000000000000000000000000000000000000000000000000000091908590610d14565b60408051602081018690520160405160208183030381529060405296505050505050505b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff8416610784575f805f8085875af190508061077f5761077f835f7ff4b3b1bc00000000000000000000000000000000000000000000000000000000610e58565b610846565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505f81525f60208201525f6040820152508061084657610846847fa9059cbb000000000000000000000000000000000000000000000000000000007ff27f64e400000000000000000000000000000000000000000000000000000000610e58565b50505050565b60408051602681018390526006810184905260038101859052858152603a600c8201205f9282018390526020820183905290829052819081906108908a8a83610f26565b919c909b50909950975050505050505050565b5f80806108c673ffffffffffffffffffffffffffffffffffffffff87168661100d565b925061090873ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000061100d565b915061094b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001685886110dc565b905093509350939050565b8015610a37578373ffffffffffffffffffffffffffffffffffffffff1663f5298aca846109ac8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1690565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604481018590526064015b5f604051808303815f87803b158015610a1c575f80fd5b505af1158015610a2e573d5f803e3d5ffd5b50505050610d0d565b73ffffffffffffffffffffffffffffffffffffffff8516610ac8578373ffffffffffffffffffffffffffffffffffffffff166311da60b4836040518263ffffffff1660e01b815260040160206040518083038185885af1158015610a9d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610ac2919061180f565b50610d0d565b6040517fa584119400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015285169063a5841194906024015f604051808303815f87803b158015610b2e575f80fd5b505af1158015610b40573d5f803e3d5ffd5b5050505073ffffffffffffffffffffffffffffffffffffffff83163014610c05576040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301528581166024830152604482018490528616906323b872dd906064016020604051808303815f875af1158015610bdb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bff9190611a8c565b50610c9d565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301526024820184905286169063a9059cbb906044016020604051808303815f875af1158015610c77573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c9b9190611a8c565b505b8373ffffffffffffffffffffffffffffffffffffffff166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610ce7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d0b919061180f565b505b5050505050565b80610d7c576040517f0b0d9c0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152848116602483015260448201849052851690630b0d9c0990606401610a05565b8373ffffffffffffffffffffffffffffffffffffffff1663156e29f684610dcc8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1690565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604481018590526064015f604051808303815f87803b158015610e3b575f80fd5b505af1158015610e4d573d5f803e3d5ffd5b505050505050505050565b6040517f90bfb8650000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff851660048301527fffffffff0000000000000000000000000000000000000000000000000000000084166024830152608060448301526020601f3d018190040260a0810160648401523d608484015290913d5f60a483013e60048260a4018201527fffffffff0000000000000000000000000000000000000000000000000000000084168260c4018201528160e40181fd5b5f805f80610f34868661119a565b6040517f35fd631a00000000000000000000000000000000000000000000000000000000815260048101829052600360248201529091505f9073ffffffffffffffffffffffffffffffffffffffff8916906335fd631a906044015f60405180830381865afa158015610fa8573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610fed9190810190611aa7565b60208101516040820151606090920151909a919950975095505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff8316611047575073ffffffffffffffffffffffffffffffffffffffff811631610723565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301528416906370a0823190602401602060405180830381865afa1580156110b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110d5919061180f565b9050610723565b5f8073ffffffffffffffffffffffffffffffffffffffff84165f5273ffffffffffffffffffffffffffffffffffffffff831660205260405f2090508473ffffffffffffffffffffffffffffffffffffffff1663f135baaa826040518263ffffffff1660e01b815260040161115291815260200190565b602060405180830381865afa15801561116d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611191919061180f565b95945050505050565b5f806111a5846111ea565b90505f6111b3600683611b53565b6040805160208101879052908101829052909150606001604051602081830303815290604052805190602001209250505092915050565b6040515f90611209908390600690602001918252602082015260400190565b604051602081830303815290604052805190602001209050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160c0810167ffffffffffffffff8111828210171561127657611276611226565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156112c3576112c3611226565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff811681146112ec575f80fd5b50565b8035600281900b8114611300575f80fd5b919050565b5f60a08284031215611315575f80fd5b60405160a0810167ffffffffffffffff8111828210171561133857611338611226565b6040529050808235611349816112cb565b81526020830135611359816112cb565b6020820152604083013562ffffff81168114611373575f80fd5b6040820152611384606084016112ef565b60608201526080830135611397816112cb565b6080919091015292915050565b5f608082840312156113b4575f80fd5b6040516080810167ffffffffffffffff811182821017156113d7576113d7611226565b6040529050806113e6836112ef565b81526113f4602084016112ef565b602082015260408301356040820152606083013560608201525092915050565b5f67ffffffffffffffff82111561142d5761142d611226565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112611468575f80fd5b813561147b61147682611414565b61127c565b81815284602083860101111561148f575f80fd5b816020850160208301375f918101602001919091529392505050565b80151581146112ec575f80fd5b8035611300816114ab565b5f805f805f61018086880312156114d8575f80fd5b6114e28787611305565b94506114f18760a088016113a4565b935061012086013567ffffffffffffffff81111561150d575f80fd5b61151988828901611459565b93505061014086013561152b816114ab565b915061016086013561153c816114ab565b809150509295509295909350565b5f805f610140848603121561155d575f80fd5b6115678585611305565b92506115768560a086016113a4565b915061012084013567ffffffffffffffff811115611592575f80fd5b61159e86828701611459565b9150509250925092565b5f80602083850312156115b9575f80fd5b823567ffffffffffffffff8111156115cf575f80fd5b8301601f810185136115df575f80fd5b803567ffffffffffffffff8111156115f5575f80fd5b856020828401011115611606575f80fd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6116746020830184611616565b9392505050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f6020830151611724604084018273ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b506040838101518051600290810b60e08601526020820151900b610100850152908101516101208401526060908101516101408401528301516101a06101608401526117746101c0840182611616565b90506080840151151561018084015260a084015115156101a08401528091505092915050565b5f602082840312156117aa575f80fd5b815167ffffffffffffffff8111156117c0575f80fd5b8201601f810184136117d0575f80fd5b80516117de61147682611414565b8181528560208385010111156117f2575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b5f6020828403121561181f575f80fd5b5051919050565b5f60208284031215611836575f80fd5b813567ffffffffffffffff81111561184c575f80fd5b82016101a0818503121561185e575f80fd5b611866611253565b8135611871816112cb565b81526118808560208401611305565b60208201526118928560c084016113a4565b604082015261014082013567ffffffffffffffff8111156118b1575f80fd5b6118bd86828501611459565b6060830152506118d061016083016114b8565b60808201526118e261018083016114b8565b60a0820152949350505050565b61196e818573ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8251600290810b60a08301526020840151900b60c0820152604083015160e082015260608301516101008201526101406101208201525f611191610140830184611616565b5f80604083850312156119c4575f80fd5b505080516020909101519092909150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018281125f831280158216821582161715611a2157611a216119d5565b505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b5f7f80000000000000000000000000000000000000000000000000000000000000008203611a8657611a866119d5565b505f0390565b5f60208284031215611a9c575f80fd5b8151611674816114ab565b5f60208284031215611ab7575f80fd5b815167ffffffffffffffff811115611acd575f80fd5b8201601f81018413611add575f80fd5b805167ffffffffffffffff811115611af757611af7611226565b8060051b611b076020820161127c565b91825260208184018101929081019087841115611b22575f80fd5b6020850194505b83851015611b4857845180835260209586019590935090910190611b29565b979650505050505050565b80820180821115610723576107236119d556fea164736f6c634300081a000a60a0604052348015600e575f80fd5b50604051616a05380380616a05833981016040819052602b91607f565b5f80546001600160a01b0319166001600160a01b038316908117825560405183928392917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35050306080525060aa565b5f60208284031215608e575f80fd5b81516001600160a01b038116811460a3575f80fd5b9392505050565b6080516169436100c25f395f61205f01526169435ff3fe6080604052600436106101f4575f3560e01c80635a6bcfda11610117578063a5841194116100ac578063f135baaa1161007c578063f3cd914c11610062578063f3cd914c14610676578063f5298aca14610695578063fe99049a146106b4575f80fd5b8063f135baaa14610638578063f2fde38b14610657575f80fd5b8063a584119414610595578063b6363cf2146105b4578063dbd035ff146105ed578063f02de3b21461060c575f80fd5b80638161b874116100e75780638161b874146104dc5780638da5cb5b146104fb57806397e8cd4e1461054b5780639bf6645f14610576575f80fd5b80635a6bcfda146104385780636276cbbe1461046c5780637e87ce7d1461049e57806380f0b44c146104bd575f80fd5b80632d7713891161018d57806348c894911161015d57806348c894911461039257806352759651146103be578063558a7297146103dd578063598af9e7146103fc575f80fd5b80632d7713891461031557806335fd631a146103345780633dd45adb14610360578063426a849314610373575f80fd5b806311da60b4116101c857806311da60b4146102b0578063156e29f6146102b85780631e2eaeaf146102d7578063234266d7146102f6575f80fd5b8062fdd58e146101f857806301ffc9a714610241578063095bcdb6146102705780630b0d9c091461028f575b5f80fd5b348015610203575f80fd5b5061022e610212366004615908565b600460209081525f928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b34801561024c575f80fd5b5061026061025b366004615932565b6106d3565b6040519015158152602001610238565b34801561027b575f80fd5b5061026061028a366004615971565b61076b565b34801561029a575f80fd5b506102ae6102a93660046159a3565b61083f565b005b61022e6108c9565b3480156102c3575f80fd5b506102ae6102d2366004615971565b610927565b3480156102e2575f80fd5b5061022e6102f13660046159e1565b6109ab565b348015610301575f80fd5b5061022e610310366004615b9b565b6109b5565b348015610320575f80fd5b506102ae61032f366004615c00565b610ad9565b34801561033f575f80fd5b5061035361034e366004615c1b565b610bcc565b6040516102389190615c3b565b61022e61036e366004615c00565b610c09565b34801561037e575f80fd5b5061026061038d366004615971565b610c67565b34801561039d575f80fd5b506103b16103ac366004615c7d565b610cd8565b6040516102389190615cbc565b3480156103c9575f80fd5b506102ae6103d8366004615d0f565b610e2a565b3480156103e8575f80fd5b506102606103f7366004615d50565b610ecc565b348015610407575f80fd5b5061022e6104163660046159a3565b600560209081525f938452604080852082529284528284209052825290205481565b348015610443575f80fd5b50610457610452366004615d7a565b610f66565b60408051928352602083019190915201610238565b348015610477575f80fd5b5061048b610486366004615e3b565b611165565b60405160029190910b8152602001610238565b3480156104a9575f80fd5b506102ae6104b8366004615d0f565b6113fc565b3480156104c8575f80fd5b506102ae6104d7366004615908565b6114ed565b3480156104e7575f80fd5b5061022e6104f63660046159a3565b6115ac565b348015610506575f80fd5b505f546105269073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610238565b348015610556575f80fd5b5061022e610565366004615c00565b60016020525f908152604090205481565b348015610581575f80fd5b50610353610590366004615e71565b611714565b3480156105a0575f80fd5b506102ae6105af366004615c00565b61174d565b3480156105bf575f80fd5b506102606105ce366004615ee2565b600360209081525f928352604080842090915290825290205460ff1681565b3480156105f8575f80fd5b50610353610607366004615e71565b6117a3565b348015610617575f80fd5b506002546105269073ffffffffffffffffffffffffffffffffffffffff1681565b348015610643575f80fd5b5061022e6106523660046159e1565b6117da565b348015610662575f80fd5b506102ae610671366004615c00565b6117e4565b348015610681575f80fd5b5061022e610690366004615f0e565b6118d3565b3480156106a0575f80fd5b506102ae6106af366004615971565b611a85565b3480156106bf575f80fd5b506102606106ce366004615fcc565b611b09565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061076557507f0f632fb3000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b335f90815260046020908152604080832085845290915281208054839190839061079690849061603c565b909155505073ffffffffffffffffffffffffffffffffffffffff84165f908152600460209081526040808320868452909152812080548492906107da90849061604f565b9091555050604080513380825260208201859052859273ffffffffffffffffffffffffffffffffffffffff8816927f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885991015b60405180910390a45060015b9392505050565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c61088e5761088e7f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b6108a38361089b83611cfd565b5f0333611d42565b6108c473ffffffffffffffffffffffffffffffffffffffff84168383611da2565b505050565b5f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c610919576109197f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b61092233611ebf565b905090565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c610976576109767f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b816109848161089b84611cfd565b6109a58473ffffffffffffffffffffffffffffffffffffffff831684611fa8565b50505050565b5f81545f5260205ff35b5f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c610a0557610a057f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b610a0d612047565b60a086205f818152600660205260409020610a27816120af565b6080880151610a509073ffffffffffffffffffffffffffffffffffffffff1689898989896120f6565b610a5b8188886121d9565b9250610a688884336122d3565b6040805188815260208101889052339184917f29ef05caaff9404b7cb6d1c0e9bbae9eaa7ab2541feba1a9c4248594c08156cb910160405180910390a36080880151610ace9073ffffffffffffffffffffffffffffffffffffffff1689898989896122fb565b505095945050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610b5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fb4bd8ef53df690b9943d3318996006dbb82a25f54719d8c8035b516a2a5b8acc905f90a250565b6060604051808360051b6020835284602084015260408301925080830190505b85548352602083019250600186019550808310610bec5781810382f35b5f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c610c5957610c597f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b61076582611ebf565b919050565b335f81815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff881680855290835281842087855290925280832085905551919285927fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a79061082c9087815260200190565b60607fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c15610d2a57610d2a7f5090d6c600000000000000000000000000000000000000000000000000000000611cf5565b610d326123d3565b6040517f91dd734600000000000000000000000000000000000000000000000000000000815233906391dd734690610d7090869086906004016160a9565b5f604051808303815f875af1158015610d8b573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610dd091908101906160bc565b90507f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c15610e2257610e227f5212cba100000000000000000000000000000000000000000000000000000000611cf5565b6107656123f9565b604082015162ffffff1662800000141580610e755750816080015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610ea357610ea37f30d2164100000000000000000000000000000000000000000000000000000000611cf5565b610eb18162ffffff1661241e565b60a082205f8181526006602052604090206108c4908361245d565b335f81815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff871680855290835281842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001687151590811790915591519182529293917fceb576d9f15e4e200fdb5096d64d5dfd667e16def20c1eefd14256d8e3faa267910160405180910390a350600192915050565b5f807fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c610fb757610fb77f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b610fbf612047565b60a086205f818152600660205260409020610fd9816120af565b60808801516110019073ffffffffffffffffffffffffffffffffffffffff16898989896124b6565b5f6110756040518060c001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018a5f015160020b81526020018a6020015160020b81526020016110528b60400151612677565b600f0b81526060808d015160020b60208301528b015160409091015283906126ac565b945090506110838185612af1565b945050503373ffffffffffffffffffffffffffffffffffffffff16817ff208f4912782fd25c7f114ca3723a2d5dd6f3bcc3ac8db5af63baa85f711d5ec885f015189602001518a604001518b606001516040516111019493929190600294850b81529290930b60208301526040820152606081019190915260800190565b60405180910390a360808701515f906111359073ffffffffffffffffffffffffffffffffffffffff16898987878b8b612b24565b9094509050801561114f5761114f88828a608001516122d3565b61115a8885336122d3565b505094509492505050565b5f61116e612047565b6060830151617fff60029190910b13156111b25760608301516111b2907fb70024f80000000000000000000000000000000000000000000000000000000090612cfb565b600160020b836060015160020b12156111f55760608301516111f5907fe9e905880000000000000000000000000000000000000000000000000000000090612cfb565b8251602084015173ffffffffffffffffffffffffffffffffffffffff90811691161061124d578251602084015161124d917f6e6c98300000000000000000000000000000000000000000000000000000000091612d0a565b61127e8360400151846080015173ffffffffffffffffffffffffffffffffffffffff16612d4d90919063ffffffff16565b6112b25760808301516112b2907fe65af6a00000000000000000000000000000000000000000000000000000000090612e1b565b5f6112c5846040015162ffffff16612e3d565b60808501519091506112ee9073ffffffffffffffffffffffffffffffffffffffff168585612e62565b60a084205f81815260066020526040902061130a908584612f35565b9250846020015173ffffffffffffffffffffffffffffffffffffffff16855f015173ffffffffffffffffffffffffffffffffffffffff16827fdd466e674ea557f56295e2d0218a125ea4b4f0f6f3307b95f85e6110838d6438886040015189606001518a608001518a8a6040516113c595949392919062ffffff959095168552600293840b602086015273ffffffffffffffffffffffffffffffffffffffff928316604086015291166060840152900b608082015260a00190565b60405180910390a460808501516113f49073ffffffffffffffffffffffffffffffffffffffff16868686612fed565b505092915050565b60025473ffffffffffffffffffffffffffffffffffffffff163314611444576114447f48f5c3ed00000000000000000000000000000000000000000000000000000000611cf5565b6103e9610fff821610623e900062fff0008316101661148c5761148c7fa7abe2f70000000000000000000000000000000000000000000000000000000062ffffff8316612e1b565b60a082206114ae826114a8835f90815260066020526040902090565b906130c2565b60405162ffffff8316815281907fe9c42593e71f84403b84352cd168d693e2c9fcd1fdbcc3feb21d92b43e6696f99060200160405180910390a2505050565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c61153c5761153c7f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b335f90815273ffffffffffffffffffffffffffffffffffffffff8316602052604081205c9061156a83611cfd565b90508181600f0b1461159f5761159f7fbda73abf00000000000000000000000000000000000000000000000000000000611cf5565b6109a584825f0333611d42565b6002545f9073ffffffffffffffffffffffffffffffffffffffff1633146115f6576115f67f48f5c3ed00000000000000000000000000000000000000000000000000000000611cf5565b73ffffffffffffffffffffffffffffffffffffffff831615158015611654575073ffffffffffffffffffffffffffffffffffffffff7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c8116908416145b15611682576116827fc79e594800000000000000000000000000000000000000000000000000000000611cf5565b811561168e57816116b4565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600160205260409020545b73ffffffffffffffffffffffffffffffffffffffff84165f908152600160205260408120805492935083929091906116ed90849061603c565b90915550610838905073ffffffffffffffffffffffffffffffffffffffff84168583611da2565b606060405180602082528360208301526040820191508360051b8201855b80355c845260209384019301818410611732575b5081810382f35b73ffffffffffffffffffffffffffffffffffffffff811661177357611770613116565b50565b5f6117938273ffffffffffffffffffffffffffffffffffffffff1661313b565b905061179f82826131ea565b5050565b606060405180602082528360208301526040820191508360051b8201855b80355484526020938401930181841015611746576117c1565b5f815c5f5260205ff35b5f5473ffffffffffffffffffffffffffffffffffffffff163314611864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610b55565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c611923576119237f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b61192b612047565b83602001515f0361195f5761195f7fbe8b850700000000000000000000000000000000000000000000000000000000611cf5565b60a085205f818152600660205260409020611979816120af565b60808701515f90819081906119a79073ffffffffffffffffffffffffffffffffffffffff168b8b8b8b61324a565b809350819550829450505050611a2384866040518060a001604052808681526020018e6060015160020b81526020018d5f0151151581526020018d6040015173ffffffffffffffffffffffffffffffffffffffff1681526020018562ffffff168152508c5f0151611a1c578d602001516133f1565b8d516133f1565b60808b01519096505f9250611a54915073ffffffffffffffffffffffffffffffffffffffff168a8a888b8b886134f2565b90955090508015611a6e57611a6e89828b608001516122d3565b611a798986336122d3565b50505050949350505050565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c611ad457611ad47f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b81611ae881611ae284611cfd565b33611d42565b6109a58473ffffffffffffffffffffffffffffffffffffffff83168461368b565b5f3373ffffffffffffffffffffffffffffffffffffffff861614801590611b60575073ffffffffffffffffffffffffffffffffffffffff85165f90815260036020908152604080832033845290915290205460ff16155b15611c095773ffffffffffffffffffffffffffffffffffffffff85165f90815260056020908152604080832033845282528083208684529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611c0757611bce838261603c565b73ffffffffffffffffffffffffffffffffffffffff87165f90815260056020908152604080832033845282528083208884529091529020555b505b73ffffffffffffffffffffffffffffffffffffffff85165f90815260046020908152604080832086845290915281208054849290611c4890849061603c565b909155505073ffffffffffffffffffffffffffffffffffffffff84165f90815260046020908152604080832086845290915281208054849290611c8c90849061604f565b90915550506040805133815260208101849052849173ffffffffffffffffffffffffffffffffffffffff80881692908916917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac728859910160405180910390a45060015b949350505050565b805f5260045ffd5b5f6f800000000000000000000000000000008210611d3e57611d3e7f93dafdf100000000000000000000000000000000000000000000000000000000611cf5565b5090565b81600f0b5f03611d5157505050565b5f80611d7473ffffffffffffffffffffffffffffffffffffffff8616848661379c565b91509150805f03611d8c57611d876137e2565b611d9b565b815f03611d9b57611d9b613830565b5050505050565b5f73ffffffffffffffffffffffffffffffffffffffff8416611dfd575f805f8085875af1905080611df857611df8835f7ff4b3b1bc0000000000000000000000000000000000000000000000000000000061387e565b6109a5565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505f81525f60208201525f604082015250806109a5576109a5847fa9059cbb000000000000000000000000000000000000000000000000000000007ff27f64e40000000000000000000000000000000000000000000000000000000061387e565b5f7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c73ffffffffffffffffffffffffffffffffffffffff8116611f0557349150611f8f565b3415611f3457611f347fb0ec849e00000000000000000000000000000000000000000000000000000000611cf5565b7f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955c5f611f7673ffffffffffffffffffffffffffffffffffffffff841661313b565b9050611f82828261603c565b9350611f8c613116565b50505b611fa281611f9c84611cfd565b85611d42565b50919050565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260046020908152604080832085845290915281208054839290611fe790849061604f565b90915550506040805133815260208101839052839173ffffffffffffffffffffffffffffffffffffffff8616915f917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885991015b60405180910390a4505050565b3073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146120ad576120ad7f0d89438e00000000000000000000000000000000000000000000000000000000611cf5565b565b805473ffffffffffffffffffffffffffffffffffffffff165f03611770576117707f486aa30700000000000000000000000000000000000000000000000000000000611cf5565b853373ffffffffffffffffffffffffffffffffffffffff8216146121d05760208716156121d0576121ce33878787878760405160240161213b9695949392919061616e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb6a8b0fa0000000000000000000000000000000000000000000000000000000017905273ffffffffffffffffffffffffffffffffffffffff89169061394c565b505b50505050505050565b60038301545f906fffffffffffffffffffffffffffffffff16808203612222576122227fa74f97ab00000000000000000000000000000000000000000000000000000000611cf5565b61225961222e85611cfd565b5f0361223985611cfd565b5f0360809190911b6fffffffffffffffffffffffffffffffff9091161790565b91508315612293576001850180546fffffffffffffffffffffffffffffffff83167001000000000000000000000000000000008702040190555b82156122cb576002850180546fffffffffffffffffffffffffffffffff83167001000000000000000000000000000000008602040190555b509392505050565b82516122e9906122e38460801d90565b83611d42565b6108c483602001516122e384600f0b90565b853373ffffffffffffffffffffffffffffffffffffffff8216146121d05760108716156121d0576121ce3387878787876040516024016123409695949392919061616e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe1b4af690000000000000000000000000000000000000000000000000000000017905273ffffffffffffffffffffffffffffffffffffffff89169061394c565b60017fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d565b5f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d565b620f424062ffffff82161115611770576117707f140021130000000000000000000000000000000000000000000000000000000062ffffff8316612e1b565b612466826120af565b81547fffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff167cffffff000000000000000000000000000000000000000000000000000060d083901b16175b90915550565b843373ffffffffffffffffffffffffffffffffffffffff82161461266f575f84604001511380156124ea5750610800861615155b156125a45761259e338686868660405160240161250b95949392919061623a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f259982e50000000000000000000000000000000000000000000000000000000017905273ffffffffffffffffffffffffffffffffffffffff88169061394c565b5061266f565b5f8460400151131580156125bb5750610200861615155b1561266f576121d033868686866040516024016125dc95949392919061623a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f21d0ee700000000000000000000000000000000000000000000000000000000017905273ffffffffffffffffffffffffffffffffffffffff88169061394c565b505050505050565b80600f81900b8114610c6257610c627f93dafdf100000000000000000000000000000000000000000000000000000000611cf5565b6060810151602082015160408301515f92839290916126cb8282613a48565b604080516080810182525f80825260208201819052918101829052606081019190915283600f0b5f1461289b576127048884865f613b0f565b6fffffffffffffffffffffffffffffffff1660208301521515815261272c8883866001613b0f565b6fffffffffffffffffffffffffffffffff166060830152151560408201525f600f85900b126128605760808701515f9060020b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761881810783139082900503620d89e891909105036001016fffffffffffffffffffffffffffffffff049050806fffffffffffffffffffffffffffffffff1682602001516fffffffffffffffffffffffffffffffff161115612804576128047fb8e3c3850000000000000000000000000000000000000000000000000000000085612cfb565b806fffffffffffffffffffffffffffffffff1682606001516fffffffffffffffffffffffffffffffff16111561285e5761285e7fb8e3c3850000000000000000000000000000000000000000000000000000000084612cfb565b505b80511561287c57608087015161287c9060058a01908590613bf8565b80604001511561289b57608087015161289b9060058a01908490613bf8565b5f806128a88a8686613c4a565b8a5160a08c015160408051602681019290925260068083018a9052600383018b9052928252603a600c8301205f838301819052602080850182905293819052908152928f01909152812092945090925080612905838a8787613cfe565b9150915061293a61291583611cfd565b61291e83611cfd565b6fffffffffffffffffffffffffffffffff1660809190911b1790565b995050505050505f84600f0b12156129a35780511561297657600283810b5f90815260048a016020526040812081815560018101829055909101555b8060400151156129a357600282810b5f90815260048a016020526040812081815560018101829055909101555b5082600f0b5f14612ae75786545f806129bf8360a01c60020b90565b73ffffffffffffffffffffffffffffffffffffffff8416915091508460020b8260020b1215612a1b57612a14612a0e612a096129fa88613e2f565b612a0388613e2f565b8a61412c565b612677565b60801b90565b9750612ae3565b8360020b8260020b1215612abe57612a52612a3c612a0983612a0388613e2f565b61291e612a09612a4b89613e2f565b858b614164565b60038b0154909850612a76906fffffffffffffffffffffffffffffffff1687614190565b60038b0180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055612ae3565b612ae05f61291e612a09612ad189613e2f565b612ada89613e2f565b8b614164565b97505b5050505b5050509250929050565b5f608082811d9084901d01600f83810b9085900b01612b1b612b1283612677565b61291e83612677565b95945050505050565b5f8073ffffffffffffffffffffffffffffffffffffffff89163303612b4d57508490505f612cef565b8591505f87604001511315612c3557610400891615612c3057612c2133898989898989604051602401612b86979695949392919061631c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9f063efc0000000000000000000000000000000000000000000000000000000017905260028b1615155b73ffffffffffffffffffffffffffffffffffffffff8c1691906141c0565b9050612c2d828261421a565b91505b612cef565b610100891615612cef57612ce033898989898989604051602401612c5f979695949392919061631c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6c2bbe7e0000000000000000000000000000000000000000000000000000000017905260018b161515612c03565b9050612cec828261421a565b91505b97509795505050505050565b815f528060020b60045260245ffd5b60405183815273ffffffffffffffffffffffffffffffffffffffff8316600482015273ffffffffffffffffffffffffffffffffffffffff82166024820152604481fd5b5f60808316158015612d6157506008831615155b15612d6d57505f610765565b60408316158015612d8057506004831615155b15612d8c57505f610765565b6104008316158015612da057506002831615155b15612dac57505f610765565b6101008316158015612dc057506001831615155b15612dcc57505f610765565b73ffffffffffffffffffffffffffffffffffffffff831615612e0a57613fff8316151580612e0557506280000062ffffff831614610838565b610838565b5062ffffff16628000001415919050565b815f5273ffffffffffffffffffffffffffffffffffffffff811660045260245ffd5b5f6280000062ffffff831603612e5457505f919050565b611d3e8262ffffff1661241e565b823373ffffffffffffffffffffffffffffffffffffffff8216146109a5576120008416156109a557611d9b338484604051602401612ea29392919061640c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fdc98354e0000000000000000000000000000000000000000000000000000000017905273ffffffffffffffffffffffffffffffffffffffff86169061394c565b82545f9073ffffffffffffffffffffffffffffffffffffffff1615612f7d57612f7d7f7983c05100000000000000000000000000000000000000000000000000000000611cf5565b612f868361423b565b90507cffffff000000000000000000000000000000000000000000000000000060d083901b1673ffffffffffffffffffffffffffffffffffffffff841660a083901b76ffffff00000000000000000000000000000000000000001617179093555090919050565b833373ffffffffffffffffffffffffffffffffffffffff821614611d9b57611000851615611d9b5761266f3385858560405160240161302f94939291906164cf565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6fe7e6eb0000000000000000000000000000000000000000000000000000000017905273ffffffffffffffffffffffffffffffffffffffff87169061394c565b6130cb826120af565b81547fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff1679ffffff000000000000000000000000000000000000000000000060b883901b16176124b0565b5f7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d565b5f73ffffffffffffffffffffffffffffffffffffffff821661315e575047919050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa1580156131c6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610765919061659d565b73ffffffffffffffffffffffffffffffffffffffff82167f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d807f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955d5050565b60208301515f8073ffffffffffffffffffffffffffffffffffffffff88163303613276575f91506133e6565b60808816156133e6575f61331889338a8a8a8a60405160240161329d9594939291906165b4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f575e24b40000000000000000000000000000000000000000000000000000000017905261394c565b9050805160601461334c5761334c7f1e048e1d00000000000000000000000000000000000000000000000000000000611cf5565b604088015162ffffff16628000000361336757606081015191505b60088916156133e457604081015192505f6133828460801d90565b905080600f0b5f146133e2575f851261339f600f83900b8761669c565b9550806133ae575f86126133b2565b5f86135b156133e0576133e07ffa0b71d600000000000000000000000000000000000000000000000000000000611cf5565b505b505b505b955095509592505050565b5f80808080613400898861455f565b93509350935093505f83111561343b5773ffffffffffffffffffffffffffffffffffffffff86165f9081526001602052604090208054840190555b33887f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f6134688760801d90565b61347288600f0b90565b85516040808801516020808a01518351600f97880b81529590960b9085015273ffffffffffffffffffffffffffffffffffffffff909216908301526fffffffffffffffffffffffffffffffff16606082015260029190910b608082015262ffffff861660a082015260c00160405180910390a35091979650505050505050565b5f8073ffffffffffffffffffffffffffffffffffffffff8916330361351b57508490505f612cef565b5f6135268460801d90565b90505f61353385600f0b90565b905060408b1615613606576135f9612a09338c8c8c8c8c60405160240161355f969594939291906166bb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb47b2fb10000000000000000000000000000000000000000000000000000000017905260048e16151573ffffffffffffffffffffffffffffffffffffffff8f1691906141c0565b61360390826167aa565b90505b5f81600f0b5f14158061361c575082600f0b5f14155b1561367957895160208b01515f1390151514613650576fffffffffffffffffffffffffffffffff8316608083901b1761366a565b6fffffffffffffffffffffffffffffffff8216608084901b175b9050613676898261421a565b98505b979b979a509698505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff841681148015906136e4575073ffffffffffffffffffffffffffffffffffffffff8085165f9081526003602090815260408083209385168352929052205460ff16155b156137915773ffffffffffffffffffffffffffffffffffffffff8085165f9081526005602090815260408083209385168352928152828220868352905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461378f57613754838261603c565b73ffffffffffffffffffffffffffffffffffffffff8087165f9081526005602090815260408083209387168352928152828220888352905220555b505b6109a5848484614dfc565b73ffffffffffffffffffffffffffffffffffffffff8281165f90815290841660205260408120805c91906137d4600f85900b8461669c565b915081815d50935093915050565b7f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c600181039050807f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5d50565b7f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c600181019050807f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5d50565b6040517f90bfb8650000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff851660048301527fffffffff0000000000000000000000000000000000000000000000000000000084166024830152608060448301526020601f3d018190040260a0810160648401523d608484015290913d5f60a483013e60048260a4018201527fffffffff0000000000000000000000000000000000000000000000000000000084168260c4018201528160e40181fd5b60605f805f8451602086015f885af1905080613995576139958461396f856167f8565b7fa9e35b2f0000000000000000000000000000000000000000000000000000000061387e565b6040519150601f19603f3d011682016040523d82523d5f602084013e602082511080613a13575060208301517fffffffff00000000000000000000000000000000000000000000000000000000166139ee836020015190565b7fffffffff000000000000000000000000000000000000000000000000000000001614155b15613a4157613a417f1e048e1d00000000000000000000000000000000000000000000000000000000611cf5565b5092915050565b8060020b8260020b12613a8057613a807fc4433ed5000000000000000000000000000000000000000000000000000000008383614e92565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618600283900b1215613ad657613ad67fd5e2f7ab0000000000000000000000000000000000000000000000000000000083612cfb565b620d89e8600282900b131561179f5761179f7f1ad777f80000000000000000000000000000000000000000000000000000000082612cfb565b600283900b5f908152600485016020526040812080548291906fffffffffffffffffffffffffffffffff8116907001000000000000000000000000000000009004600f0b613b5d8288614190565b6fffffffffffffffffffffffffffffffff808216159084168015919091141596509094505f03613bb057885460a01c60020b60020b8860020b13613bb0576001808a0154908401556002808a0154908401555b5f86613bc557613bc088836167aa565b613bcf565b613bcf8883616864565b90508060801b6fffffffffffffffffffffffffffffffff86161784555050505094509492505050565b600291820b910b80820715613c255760405163d4d8f3e681528260208201528160408201526044601c8201fd5b80820591508160081d5f528260205260405f20600160ff84161b815418815550505050565b600282810b5f81815260048601602052604080822085850b83529082208754929485949293919260a09290921c900b90811215613ca0578160010154836001015403945081600201548360020154039350613cf3565b8560020b8160020b12613ccc578260010154826001015403945082600201548260020154039350613cf3565b81600101548360010154896001015403039450816002015483600201548960020154030393505b505050935093915050565b83545f9081906fffffffffffffffffffffffffffffffff16600f86900b8203613d6857806fffffffffffffffffffffffffffffffff165f03613d6357613d637faefeb92400000000000000000000000000000000000000000000000000000000611cf5565b613daf565b613d728187614190565b87547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff919091161787555b613de387600101548603826fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000614eaf565b9250613e1987600201548503826fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000614eaf565b6001880195909555505060029094015591929050565b60020b5f60ff82901d80830118620d89e8811115613e7157613e717f8b86327a0000000000000000000000000000000000000000000000000000000084612cfb565b7001fffcb933bd6fad37aa2d162d1a5940016001821602700100000000000000000000000000000000186002821615613eba576ffff97272373d413259a46990580e213a0260801c5b6004821615613ed9576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615613ef8576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615613f17576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615613f36576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615613f55576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615613f74576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615613f94576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615613fb4576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615613fd4576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615613ff4576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615614014576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615614034576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615614054576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615614074576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615614095576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156140b5576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156140d4576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156140f1576b048a170391f7dc42444e8fa20260801c5b5f84131561411c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff045b63ffffffff0160201c9392505050565b5f8082600f0b126141535761414c6141478585856001614f6a565b6150a7565b5f03611ced565b611ced6141478585855f035f614f6a565b5f8082600f0b1261417f5761414c61414785858560016150d9565b611ced6141478585855f035f6150d9565b6fffffffffffffffffffffffffffffffff8216600f82900b01608081901c15610765576393dafdf15f526004601cfd5b5f806141cc858561394c565b9050826141dc575f915050610838565b805160401461420e5761420e7f1e048e1d00000000000000000000000000000000000000000000000000000000611cf5565b60400151949350505050565b5f608082811d9084901d03600f83810b9085900b03612b1b612b1283612677565b5f73fffd8963efd1fc6a506488495d951d51639616827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffd895d830173ffffffffffffffffffffffffffffffffffffffff1611156142ba576142ba7f614875240000000000000000000000000000000000000000000000000000000083612e1b565b77ffffffffffffffffffffffffffffffffffffffff00000000602083901b16805f6142e482615144565b60ff169050608081106142ff57607f810383901c9150614309565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581027ffffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc5568101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b14614550578873ffffffffffffffffffffffffffffffffffffffff1661452882613e2f565b73ffffffffffffffffffffffffffffffffffffffff16111561454a5781614552565b80614552565b815b9998505050505050505050565b604080516060810182525f8082526020820181905291810182905281908190855460408601515f8161459957610fff60c484901c166145a3565b610fff60b884901c165b885173ffffffffffffffffffffffffffffffffffffffff8516865261ffff9190911691505f60a085901c60020b60020b602087015260038b01546fffffffffffffffffffffffffffffffff16604087015260808a01515f9062400000166146135760d086901c62ffffff16614625565b6146258b6080015162ffffff166151d8565b9050831561464b57620f4240610fff851662ffffff83168181029290920491010361464d565b805b975050620f42408762ffffff16106146915789515f1215614691576146917f9620624600000000000000000000000000000000000000000000000000000000611cf5565b89515f036146a9575f80985098505050505050614df3565b831561478c5760608a015173ffffffffffffffffffffffffffffffffffffffff86811691161061471b5761471b73ffffffffffffffffffffffffffffffffffffffff86165b60608c01517f7c9c6e8f000000000000000000000000000000000000000000000000000000009190612d0a565b6401000276a373ffffffffffffffffffffffffffffffffffffffff168a6060015173ffffffffffffffffffffffffffffffffffffffff16116147875760608a0151614787907f9e4d7cc70000000000000000000000000000000000000000000000000000000090612e1b565b61484a565b60608a015173ffffffffffffffffffffffffffffffffffffffff8681169116116147cf576147cf73ffffffffffffffffffffffffffffffffffffffff86166146ee565b73fffd8963efd1fc6a506488495d951d5263988d2673ffffffffffffffffffffffffffffffffffffffff168a6060015173ffffffffffffffffffffffffffffffffffffffff161061484a5760608a015161484a907f9e4d7cc70000000000000000000000000000000000000000000000000000000090612e1b565b60408051610100810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915284614899578b6002015461489f565b8b600101545b60e08201525b8215806148e457508a6060015173ffffffffffffffffffffffffffffffffffffffff16875f015173ffffffffffffffffffffffffffffffffffffffff16145b614c7f57865173ffffffffffffffffffffffffffffffffffffffff168152602080880151908c015161491b9160058f0191886151e7565b1515604083015260020b602082018190527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761812614979577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860208201525b620d89e860020b816020015160020b1261499757620d89e860208201525b6149a48160200151613e2f565b73ffffffffffffffffffffffffffffffffffffffff90811660608381018290528951908e01516149ee939192911680821891811160018a161891909102188960400151868c615312565b60c085015260a0840152608083015273ffffffffffffffffffffffffffffffffffffffff1687528a515f1215614a5757614a2b8160a001516150a7565b83039250614a468160c001518260800151614147919061604f565b614a5090836168b2565b9150614a88565b614a6a8160c001518260800151016150a7565b83019250614a7b8160a001516150a7565b614a85908361669c565b91505b8315614ad7575f848962ffffff1614614abf57620f4240858360c001518460800151010281614ab957614ab96168d1565b04614ac5565b8160c001515b60c08301805182900390529990990198505b60408701516fffffffffffffffffffffffffffffffff1615614b3657614b2a8160c0015170010000000000000000000000000000000089604001516fffffffffffffffffffffffffffffffff1691020490565b60e08201805190910190525b806060015173ffffffffffffffffffffffffffffffffffffffff16875f015173ffffffffffffffffffffffffffffffffffffffff1603614c4c57806040015115614c27575f8086614b90578d600101548360e00151614b9b565b8260e001518e600201545b915091505f614bf38f85602001518585600292830b5f908152600490940160205260409093206001810180549092039091559081018054909203909155547001000000000000000000000000000000009004600f0b90565b90508715614bfe575f035b614c0c8a6040015182614190565b6fffffffffffffffffffffffffffffffff1660408b01525050505b84614c36578060200151614c3f565b60018160200151035b60020b60208801526148a5565b8051875173ffffffffffffffffffffffffffffffffffffffff908116911614614c7a578651614c3f9061423b565b6148a5565b86516020880151614d149190614cd690899060a01b76ffffff0000000000000000000000000000000000000000167fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff919091161790565b7fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9091161790565b8c55604087015160038d01546fffffffffffffffffffffffffffffffff908116911614614d8357604087015160038d0180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9092169190911790555b84614d975760e081015160028d0155614da2565b60e081015160018d01555b8a515f1385151514614dcf57614dc8614dba83612677565b61291e858e5f015103612677565b9950614dec565b614de9614de0848d5f015103612677565b61291e84612677565b99505b5050505050505b92959194509250565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260046020908152604080832085845290915281208054839290614e3b90849061603c565b9091555050604080513381526020810183905283915f9173ffffffffffffffffffffffffffffffffffffffff8716917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac728859910161203a565b6040518381528260020b60048201528160020b6024820152604481fd5b5f838302817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870982811083820303915050808411614eed575f80fd5b805f03614eff57508290049050610838565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161115614fa3579293925b73ffffffffffffffffffffffffffffffffffffffff8516614fca5762bfc9215f526004601cfd5b7bffffffffffffffffffffffffffffffff000000000000000000000000606084901b1673ffffffffffffffffffffffffffffffffffffffff8686031683615056578673ffffffffffffffffffffffffffffffffffffffff1661504383838973ffffffffffffffffffffffffffffffffffffffff16614eaf565b81615050576150506168d1565b0461509c565b61509c61507a83838973ffffffffffffffffffffffffffffffffffffffff16615482565b8873ffffffffffffffffffffffffffffffffffffffff16808204910615150190565b979650505050505050565b805f811215610c6257610c627f93dafdf100000000000000000000000000000000000000000000000000000000611cf5565b5f73ffffffffffffffffffffffffffffffffffffffff8481169086160360ff81901d908101186c010000000000000000000000006fffffffffffffffffffffffffffffffff851661512b818484614eaf565b9350845f83858409111684019350505050949350505050565b5f808211615150575f80fd5b507f0706060506020500060203020504000106050205030304010505030400000000601f6f8421084210842108cc6318c6db6d54be6fffffffffffffffffffffffffffffffff841160071b84811c67ffffffffffffffff1060061b1784811c63ffffffff1060051b1784811c61ffff1060041b1784811c60ff1060031b1793841c1c161a1790565b62bfffff8116610c628161241e565b5f80600284810b9086900b818107831391900503831561528557600281900b60081d600181900b5f908152602089905260409020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff808516908190039190911c91821680151595509091908561526757888360ff1686030261527a565b8861527182615144565b840360ff168603025b965050505050615308565b6001908101600281900b60081d80830b5f90815260208a905260409020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff841694851b0119908116801515955092939192856152ee57888360ff0360ff16860102615301565b88836152f9836154b2565b0360ff168601025b9650505050505b5094509492505050565b5f80808062ffffff851673ffffffffffffffffffffffffffffffffffffffff808a16908b16101582881280156153f5575f6153588a5f0385620f424003620f4240614eaf565b9050826153715761536c8d8d8d60016150d9565b61537e565b61537e8c8e8d6001614f6a565b96508681106153b2578b9750620f424084146153a9576153a4878586620f424003615482565b6153ab565b865b94506153cb565b8096506153c18d8c838661554c565b9750868a5f030394505b826153e1576153dc8d898d5f614f6a565b6153ed565b6153ed888e8d5f6150d9565b955050615473565b8161540b576154068c8c8c5f614f6a565b615417565b6154178b8d8c5f6150d9565b9450848910615428578a965061543a565b8894506154378c8b87856155b0565b96505b816154515761544c8c888c60016150d9565b61545e565b61545e878d8c6001614f6a565b9550615470868485620f424003615482565b93505b50505095509550955095915050565b5f61548e848484614eaf565b9050818061549e5761549e6168d1565b838509156108385760010180610838575f80fd5b5f8082116154be575f80fd5b507e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b15031604055f8290039091166101e07f804040554300526644320000502061067405302602000010750620017611707760fc7fb6db6db6ddddddddd34d34d349249249210842108c6318c639ce739cffffffff840260f81c161b60f71c1690811c63d76453e004601f169190911a1790565b5f6fffffffffffffffffffffffffffffffff84161573ffffffffffffffffffffffffffffffffffffffff861615171561558c57634f2461b85f526004601cfd5b816155a35761559e8585856001615609565b612b1b565b612b1b858585600161576b565b5f6fffffffffffffffffffffffffffffffff84161573ffffffffffffffffffffffffffffffffffffffff86161517156155f057634f2461b85f526004601cfd5b816156015761559e8585855f61576b565b612b1b8585855f5b5f81156156ae575f73ffffffffffffffffffffffffffffffffffffffff84111561565c57615657846c01000000000000000000000000876fffffffffffffffffffffffffffffffff16614eaf565b61567c565b61567c6fffffffffffffffffffffffffffffffff8616606086901b6168fe565b90506156a66156a18273ffffffffffffffffffffffffffffffffffffffff891661604f565b6158a0565b915050611ced565b5f73ffffffffffffffffffffffffffffffffffffffff8411156156fa576156f5846c01000000000000000000000000876fffffffffffffffffffffffffffffffff16615482565b615720565b615720606085901b6fffffffffffffffffffffffffffffffff8716808204910615150190565b90508073ffffffffffffffffffffffffffffffffffffffff87161161574c57634323a5555f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff8616039050611ced565b5f825f0361577a575083611ced565b7bffffffffffffffffffffffffffffffff000000000000000000000000606085901b1682156158455773ffffffffffffffffffffffffffffffffffffffff8616848102908582816157cd576157cd6168d1565b040361580a57818101828110615808576157fe838973ffffffffffffffffffffffffffffffffffffffff1683615482565b9350505050611ced565b505b506156a6818561583073ffffffffffffffffffffffffffffffffffffffff8a16836168fe565b61583a919061604f565b808204910615150190565b73ffffffffffffffffffffffffffffffffffffffff86168481029085820414818311166158795763f5c787f15f526004601cfd5b8082036157fe6156a18473ffffffffffffffffffffffffffffffffffffffff8b1684615482565b8073ffffffffffffffffffffffffffffffffffffffff81168114610c6257610c627f93dafdf100000000000000000000000000000000000000000000000000000000611cf5565b73ffffffffffffffffffffffffffffffffffffffff81168114611770575f80fd5b5f8060408385031215615919575f80fd5b8235615924816158e7565b946020939093013593505050565b5f60208284031215615942575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610838575f80fd5b5f805f60608486031215615983575f80fd5b833561598e816158e7565b95602085013595506040909401359392505050565b5f805f606084860312156159b5575f80fd5b83356159c0816158e7565b925060208401356159d0816158e7565b929592945050506040919091013590565b5f602082840312156159f1575f80fd5b5035919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516080810167ffffffffffffffff81118282101715615a4857615a486159f8565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715615a9557615a956159f8565b604052919050565b803562ffffff81168114610c62575f80fd5b8035600281900b8114610c62575f80fd5b5f60a08284031215615ad0575f80fd5b60405160a0810167ffffffffffffffff81118282101715615af357615af36159f8565b6040529050808235615b04816158e7565b81526020830135615b14816158e7565b6020820152615b2560408401615a9d565b6040820152615b3660608401615aaf565b60608201526080830135615b49816158e7565b6080919091015292915050565b5f8083601f840112615b66575f80fd5b50813567ffffffffffffffff811115615b7d575f80fd5b602083019150836020828501011115615b94575f80fd5b9250929050565b5f805f805f6101008688031215615bb0575f80fd5b615bba8787615ac0565b945060a0860135935060c0860135925060e086013567ffffffffffffffff811115615be3575f80fd5b615bef88828901615b56565b969995985093965092949392505050565b5f60208284031215615c10575f80fd5b8135610838816158e7565b5f8060408385031215615c2c575f80fd5b50508035926020909101359150565b602080825282518282018190525f918401906040840190835b81811015615c72578351835260209384019390920191600101615c54565b509095945050505050565b5f8060208385031215615c8e575f80fd5b823567ffffffffffffffff811115615ca4575f80fd5b615cb085828601615b56565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f8060c08385031215615d20575f80fd5b615d2a8484615ac0565b9150615d3860a08401615a9d565b90509250929050565b80358015158114610c62575f80fd5b5f8060408385031215615d61575f80fd5b8235615d6c816158e7565b9150615d3860208401615d41565b5f805f80848603610140811215615d8f575f80fd5b615d998787615ac0565b945060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6082011215615dca575f80fd5b50615dd3615a25565b615ddf60a08701615aaf565b8152615ded60c08701615aaf565b602082015260e086013560408201526101008601356060820152925061012085013567ffffffffffffffff811115615e23575f80fd5b615e2f87828801615b56565b95989497509550505050565b5f8060c08385031215615e4c575f80fd5b615e568484615ac0565b915060a0830135615e66816158e7565b809150509250929050565b5f8060208385031215615e82575f80fd5b823567ffffffffffffffff811115615e98575f80fd5b8301601f81018513615ea8575f80fd5b803567ffffffffffffffff811115615ebe575f80fd5b8560208260051b8401011115615ed2575f80fd5b6020919091019590945092505050565b5f8060408385031215615ef3575f80fd5b8235615efe816158e7565b91506020830135615e66816158e7565b5f805f80848603610120811215615f23575f80fd5b615f2d8787615ac0565b945060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6082011215615f5e575f80fd5b506040516060810167ffffffffffffffff81118282101715615f8257615f826159f8565b604052615f9160a08701615d41565b815260c0860135602082015260e0860135615fab816158e7565b6040820152925061010085013567ffffffffffffffff811115615e23575f80fd5b5f805f8060808587031215615fdf575f80fd5b8435615fea816158e7565b93506020850135615ffa816158e7565b93969395505050506040820135916060013590565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156107655761076561600f565b808201808211156107655761076561600f565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081525f611ced602083018486616062565b5f602082840312156160cc575f80fd5b815167ffffffffffffffff8111156160e2575f80fd5b8201601f810184136160f2575f80fd5b805167ffffffffffffffff81111561610c5761610c6159f8565b61613d60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601615a4e565b818152856020838501011115616151575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b73ffffffffffffffffffffffffffffffffffffffff87168152616209602082018773ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8460c08201528360e08201526101206101008201525f61622e61012083018486616062565b98975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff861681526162d5602082018673ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8351600290810b60c08301526020850151900b60e0820152604084015161010082015260608401516101208201526101606101408201525f61509c61016083018486616062565b73ffffffffffffffffffffffffffffffffffffffff881681526163b7602082018873ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8551600290810b60c08301526020870151900b60e08201526040860151610100820152606086015161012082015284610140820152836101608201526101a06101808201525f6145526101a083018486616062565b73ffffffffffffffffffffffffffffffffffffffff8416815260e081016164ab602083018573ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b73ffffffffffffffffffffffffffffffffffffffff831660c0830152949350505050565b73ffffffffffffffffffffffffffffffffffffffff85168152610100810161656f602083018673ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b73ffffffffffffffffffffffffffffffffffffffff841660c08301528260020b60e083015295945050505050565b5f602082840312156165ad575f80fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff8616815261664f602082018673ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8351151560c0820152602084015160e0820152604084015173ffffffffffffffffffffffffffffffffffffffff166101008201526101406101208201525f61509c61014083018486616062565b8082018281125f8312801582168215821617156113f4576113f461600f565b73ffffffffffffffffffffffffffffffffffffffff87168152616756602082018773ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8451151560c0820152602085015160e0820152604085015173ffffffffffffffffffffffffffffffffffffffff16610100820152836101208201526101606101408201525f61622e61016083018486616062565b600f81810b9083900b016f7fffffffffffffffffffffffffffffff81137fffffffffffffffffffffffffffffffff80000000000000000000000000000000821217156107655761076561600f565b805160208201517fffffffff0000000000000000000000000000000000000000000000000000000081169190600482101561685d577fffffffff00000000000000000000000000000000000000000000000000000000808360040360031b1b82161692505b5050919050565b600f82810b9082900b037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081126f7fffffffffffffffffffffffffffffff821317156107655761076561600f565b8181035f831280158383131683831282161715613a4157613a4161600f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f82616931577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea164736f6c634300081a000a60e060405234801561000f575f80fd5b5060405161116838038061116883398101604081905261002e916101a1565b8282825f61003c84826102a2565b50600161004983826102a2565b5060ff81166080524660a05261005d61006c565b60c052506103cd945050505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f60405161009c919061035c565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610127575f80fd5b81516001600160401b0381111561014057610140610104565b604051601f8201601f19908116603f011681016001600160401b038111828210171561016e5761016e610104565b604052818152838201602001851015610185575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f805f606084860312156101b3575f80fd5b83516001600160401b038111156101c8575f80fd5b6101d486828701610118565b602086015190945090506001600160401b038111156101f1575f80fd5b6101fd86828701610118565b925050604084015160ff81168114610213575f80fd5b809150509250925092565b600181811c9082168061023257607f821691505b60208210810361025057634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561029d57805f5260205f20601f840160051c8101602085101561027b5750805b601f840160051c820191505b8181101561029a575f8155600101610287565b50505b505050565b81516001600160401b038111156102bb576102bb610104565b6102cf816102c9845461021e565b84610256565b6020601f821160018114610301575f83156102ea5750848201515b5f19600385901b1c1916600184901b17845561029a565b5f84815260208120601f198516915b828110156103305787850151825560209485019460019092019101610310565b508482101561034d57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f8083546103698161021e565b6001821680156103805760018114610395576103c2565b60ff19831686528115158202860193506103c2565b865f5260205f205f5b838110156103ba5781548882015260019091019060200161039e565b505081860193505b509195945050505050565b60805160a05160c051610d716103f75f395f6104cf01525f61049a01525f6101590152610d715ff3fe608060405234801561000f575f80fd5b50600436106100e5575f3560e01c806370a08231116100885780639dc29fac116100635780639dc29fac146101f0578063a9059cbb14610203578063d505accf14610216578063dd62ed3e14610229575f80fd5b806370a08231146101aa5780637ecebe00146101c957806395d89b41146101e8575f80fd5b806323b872dd116100c357806323b872dd14610141578063313ce567146101545780633644e5151461018d57806340c10f1914610195575f80fd5b806306fdde03146100e9578063095ea7b31461010757806318160ddd1461012a575b5f80fd5b6100f1610253565b6040516100fe9190610a52565b60405180910390f35b61011a610115366004610acd565b6102de565b60405190151581526020016100fe565b61013360025481565b6040519081526020016100fe565b61011a61014f366004610af5565b610357565b61017b7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100fe565b610133610497565b6101a86101a3366004610acd565b6104f1565b005b6101336101b8366004610b2f565b60036020525f908152604090205481565b6101336101d7366004610b2f565b60056020525f908152604090205481565b6100f16104ff565b6101a86101fe366004610acd565b61050c565b61011a610211366004610acd565b610516565b6101a8610224366004610b4f565b610599565b610133610237366004610bbc565b600460209081525f928352604080842090915290825290205481565b5f805461025f90610bed565b80601f016020809104026020016040519081016040528092919081815260200182805461028b90610bed565b80156102d65780601f106102ad576101008083540402835291602001916102d6565b820191905f5260205f20905b8154815290600101906020018083116102b957829003601f168201915b505050505081565b335f81815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103459086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103e9576103b88382610c6b565b73ffffffffffffffffffffffffffffffffffffffff86165f9081526004602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff85165f908152600360205260408120805485929061041d908490610c6b565b909155505073ffffffffffffffffffffffffffffffffffffffff8085165f81815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104849087815260200190565b60405180910390a3506001949350505050565b5f7f000000000000000000000000000000000000000000000000000000000000000046146104cc576104c76108b7565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6104fb828261094f565b5050565b6001805461025f90610bed565b6104fb82826109c6565b335f90815260036020526040812080548391908390610536908490610c6b565b909155505073ffffffffffffffffffffffffffffffffffffffff83165f81815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103459086815260200190565b42841015610608576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b5f6001610613610497565b73ffffffffffffffffffffffffffffffffffffffff8a81165f8181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e0830190915280519201919091207f190100000000000000000000000000000000000000000000000000000000000061010083015261010282019290925261012281019190915261014201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201205f84529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610761573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906107dc57508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e455200000000000000000000000000000000000060448201526064016105ff565b73ffffffffffffffffffffffffffffffffffffffff9081165f9081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f6040516108e79190610c7e565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b8060025f8282546109609190610d51565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260036020526040812080548392906109fa908490610c6b565b90915550506002805482900390556040518181525f9073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016109ba565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610ac8575f80fd5b919050565b5f8060408385031215610ade575f80fd5b610ae783610aa5565b946020939093013593505050565b5f805f60608486031215610b07575f80fd5b610b1084610aa5565b9250610b1e60208501610aa5565b929592945050506040919091013590565b5f60208284031215610b3f575f80fd5b610b4882610aa5565b9392505050565b5f805f805f805f60e0888a031215610b65575f80fd5b610b6e88610aa5565b9650610b7c60208901610aa5565b95506040880135945060608801359350608088013560ff81168114610b9f575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215610bcd575f80fd5b610bd683610aa5565b9150610be460208401610aa5565b90509250929050565b600181811c90821680610c0157607f821691505b602082108103610c38577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561035157610351610c3e565b5f8083545f8160011c90506001821680610c9957607f821691505b602082108103610cd0577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b808015610ce45760018114610d1757610d45565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450610d45565b5f888152602090205f5b84811015610d3d57815489820152600190910190602001610d21565b505082870194505b50929695505050505050565b8082018082111561035157610351610c3e56fea164736f6c634300081a000aa164736f6c634300081a000a","sourceMap":"441:3250:243:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;492:116;;;;;;;;;;;;;:::i;:::-;;2907:134:12;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3823:151;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;2554::127:-;;;;;;;;;;-1:-1:-1;2554:151:127;;;;;;;;;;;;;;;;;;;;;;;;;;3054:1:262;3043:21;;;3025:40;;3101:21;;;;3096:2;3081:18;;3074:49;3139:18;;;3132:34;3197:2;3182:18;;3175:34;;;;3012:3;2997:19;2554:151:127;2804:411:262;3684:133:12;;;;;;;;;;;;;:::i;3385:141::-;;;;;;;;;;;;;:::i;1337:660:243:-;;;;;;;;;;;;;:::i;2329:69:127:-;;;;;;;;;;;;;:::i;:::-;;;3396:42:262;3384:55;;;3366:74;;3354:2;3339:18;2329:69:127;3220:226:262;3193:186:12;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3047:140::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;614:717:243:-;;;;;;;;;;;;;:::i;3532:146:12:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;2405:143:127:-;;;;;;;;;;-1:-1:-1;2405:143:127;;;;;;;;;;;;;;;;;;;;;;2754:147:12;;;;;;;;;;;;;:::i;1711:793:259:-;;;;;;;;;;;;;:::i;2711:128:127:-;;;;;;;;;;-1:-1:-1;2711:128:127;;;;;;;;;;;;;;;;;;;;7338:14:262;;7331:22;7313:41;;7385:2;7370:18;;7363:34;;;;7445:42;7433:55;7413:18;;;7406:83;7301:2;7286:18;2711:128:127;7119:376:262;2459:141:12;;;;;;;;;;;;;:::i;1243:204:8:-;;;;;;;;;;;;;:::i;:::-;;;7665:14:262;;7658:22;7640:41;;7628:2;7613:18;1243:204:8;7500:187:262;2846:843:243;;;;;;;;;;;;;:::i;2254:69:127:-;;;;;;;;;;;;;:::i;2003:837:243:-;;;;;;;;;;;;;:::i;2606:142:12:-;;;;;;;;;;;;;:::i;1016:26:19:-;;;;;;;;;;-1:-1:-1;1016:26:19;;;;;;;;492:116:243;526:44;:42;:44::i;:::-;587:14;:12;:14::i;:::-;580:21;;:4;;;;:21;;:4;:21;:::i;:::-;-1:-1:-1;580:21:243;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;492:116:243:o;2907:134:12:-;2954:33;3018:16;2999:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2907:134;:::o;3823:151::-;3872:42;3948:19;3926:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3823:151;:::o;3684:133::-;3730:33;3794:16;3775:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3684:133;:::o;3385:141::-;3433:35;3501:18;3480:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3385:141;:::o;1337:660:243:-;1512:77;;;;;;;;1545:4;1512:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1434:7;1512:77;;;;;;1415:16;-1:-1:-1;1512:77:243;;;;;1579:9;;;;;;;;;;-1:-1:-1;1512:77:243;;;1646:18;;1607:58;;875:4:173;;1646:18:243;;1512:77;;1646:18;;:::i;:::-;;;;;;;;;;;1607:8;;;;;;:4;:8;;1646:18;;;;;1607:4;;:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1607:8:243;;-1:-1:-1;1607:8:243;;:58;;-1:-1:-1;1607:8:243;:58::i;:::-;1600:65;;:4;;;;:65;;:4;:65;:::i;:::-;-1:-1:-1;1600:65:243;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;1718:4:243;:14;1707:42;;;1718:14;;;;1707:42;;;12089:74:262;12179:18;;12172:34;;;1718:14:243;12222:18:262;;;12215:50;1682:68:243;;-1:-1:-1;1272:4:173;;12062:18:262;;1707:42:243;;;;;;;;;;1682:8;;;;;;:4;:8;;1707:42;;;;;1682:4;;:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:68;1675:75;;:4;;;;:75;;:4;:75;:::i;:::-;-1:-1:-1;1675:75:243;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;1805:14:243;;1794:29;;;1805:14;;;;1794:29;;;12486:74:262;1805:14:243;12576:18:262;;;12569:45;1794:29:243;;;;;;;;;1767:8;;;;;;:4;:8;;:57;;-1:-1:-1;1475:4:173;;12459:18:262;;;1767:4:243;12459:18:262;;1767:4:243;;:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:57;1760:64;;:4;;;;:64;;:4;:64;:::i;:::-;-1:-1:-1;1760:64:243;;;;;;;;;;;;;;;;:::i;:::-;;;;;1835:17;1855:13;:4;:11;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:13::i;:::-;1878:6;;:27;;;;;1835:33;;-1:-1:-1;1878:6:243;;;:21;;:27;;1835:33;;1878:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1915:75:243;;;;;13050:2:262;1915:75:243;;;13032:21:262;13089:2;13069:18;;;13062:30;13128:34;13108:18;;;13101:62;13199:19;13179:18;;;13172:47;1915:22:243;;-1:-1:-1;1915:22:243;;-1:-1:-1;13236:19:262;;1915:75:243;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1405:592;;;1337:660::o;2329:69:127:-;2371:27;2397:1;2042:49:103;2371:27:127;:::i;:::-;2329:69;:::o;3193:186:12:-;3249:56;3346:26;3317:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3047:140;3095:34;3162:18;3141:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;614:717:243;796:77;;;;;;;;829:4;796:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;718:7;796:77;;;;;;699:16;-1:-1:-1;796:77:243;;;;;863:9;;;;;;;;;;-1:-1:-1;796:77:243;;;930:18;;891:58;;875:4:173;;930:18:243;;796:77;;930:18;;:::i;:::-;;;;;;;;;;;891:8;;;;;;:4;:8;;930:18;;;;;891:4;;:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:58;884:65;;:4;;;;:65;;:4;:65;:::i;:::-;-1:-1:-1;884:65:243;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;1006:4:243;:14;1022:17;;995:45;;;1006:14;;;;995:45;;;14120:74:262;14210:18;;14203:34;966:75:243;;-1:-1:-1;1321:4:173;;14093:18:262;;995:45:243;;;;;;;;;;966:8;;;;;;:4;:8;;995:45;;;;;966:4;;:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:75;959:82;;:4;;;;:82;;:4;:82;:::i;:::-;-1:-1:-1;959:82:243;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;1092:14:243;;1081:69;;;1092:14;;;;1081:69;;;14480:74:262;1116:4:243;14570:18:262;;;14563:83;1092:14:243;14662:18:262;;;14655:75;1058:93:243;;-1:-1:-1;1428:4:173;;14453:18:262;;1081:69:243;;;;;;;;;;1058:8;;;;;;:4;:8;;1081:69;;;;;1058:4;;:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:93;1051:100;;:4;;;;:100;;:4;:100;:::i;:::-;-1:-1:-1;1051:100:243;;;;;;;;;;;;;;;;:::i;:::-;;;;;1162:17;1182:13;:4;:11;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:13;1205:6;;:27;;;;;1162:33;;-1:-1:-1;1205:6:243;;;:21;;:27;;1162:33;;1205:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1242:82:243;;;;;14943:2:262;1242:82:243;;;14925:21:262;14982:2;14962:18;;;14955:30;15021:34;15001:18;;;14994:62;15092:26;15072:18;;;15065:54;1242:22:243;;-1:-1:-1;1242:22:243;;-1:-1:-1;15136:19:262;;1242:82:243;14741:420:262;3532:146:12;3580:40;3653:18;3632:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2754:147;2803:40;2876:18;2855:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1711:793:259;1782:20;:18;:20::i;:::-;1839:7;;1822:25;;1839:7;;;;;1822:25;;;:::i;:::-;3396:42:262;3384:55;;;3366:74;;3354:2;3339:18;1822:25:259;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1813:6:259;:34;;;;;;;;;;;1903:7;;1875:36;;1903:7;;;1875:36;;;:::i;:::-;3396:42:262;3384:55;;;3366:74;;3354:2;3339:18;1875:36:259;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1857:15:259;:54;;;;;;;;;;;;;;;-1:-1:-1;1950:29:259;1977:1;1950:26;:29::i;:::-;1922:57;;2024:6;2031:1;2024:9;;;;;;;;:::i;:::-;;;;;;;1990;;:45;;;;;;;;;;;;;;;;;;2079:6;2086:1;2079:9;;;;;;;;:::i;:::-;;;;;;;2045;;:45;;;;;;;;;;;;;;;;;;2134:6;2141:1;2134:9;;;;;;;;:::i;:::-;;;;;;;2100;;:45;;;;;;;;;;;;;;;;;;2189:6;2196:1;2189:9;;;;;;;;:::i;:::-;;;;;;;;;;;2155;:45;;;;;;;;;;;2253:9;;2223:52;;2253:9;-1:-1:-1;2223:29:259;:52::i;:::-;2211:64;;:9;:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2316:9;;2327;;2292:57;;2316:9;;;;2327;-1:-1:-1;2292:23:259;:57::i;:::-;2285:64;;:4;:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2390:9;;2401;;2366:57;;2390:9;;;;2401;-1:-1:-1;2366:23:259;:57::i;:::-;2359:64;;:4;:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2464:9;;2475;;2440:57;;2464:9;;;;2475;-1:-1:-1;2440:23:259;:57::i;:::-;2433:64;;:4;:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1711:793:259:o;2459:141:12:-;2508:34;2575:18;2554:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1243:204:8;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:8;;;;;1243:204::o;1298:143::-;1377:39;;;;;:7;:39;;;14120:74:262;;;1398:17:8;14210:18:262;;;14203:34;1428:1:8;;1377:7;;14093:18:262;;1377:39:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;2846:843:243:-;3022:77;;;;;;;;3055:4;3022:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2944:7;3022:77;;;;;;2925:16;-1:-1:-1;3022:77:243;;;;;3089:9;;;;;;;;;;;-1:-1:-1;3022:77:243;;;3181:6;;3149:50;;3181:6;2944:7;3149:23;:50::i;:::-;3217:58;875:4:173;3267:6:243;3256:18;;;;;;;;:::i;:::-;;;;;;;;;;;3217:8;;;;;;:4;:8;;3256:18;;;;;3217:4;;:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:58;3210:65;;:4;;;;:65;;:4;:65;:::i;:::-;-1:-1:-1;3210:65:243;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;3328:9:243;;3317:62;;;3328:9;;;;3317:62;;;12089:74:262;678:66:172;12179:18:262;;;12172:34;3328:9:243;12222:18:262;;;12215:50;3292:88:243;;-1:-1:-1;1272:4:173;;12062:18:262;;3317:62:243;;;;;;;;;;3292:8;;;;;;:4;:8;;3317:62;;;;;3292:4;;:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:88;3285:95;;:4;;;;:95;;:4;:95;:::i;:::-;-1:-1:-1;3285:95:243;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;3443:14:243;;3432:82;;;3443:14;;;;3432:82;;;14480:74:262;3443:14:243;14570:18:262;;;14563:83;3443:14:243;14662:18:262;;;14655:75;3409:106:243;;-1:-1:-1;1428:4:173;;14453:18:262;;3432:82:243;;;;;;;;;;3409:8;;;;;;:4;:8;;3432:82;;;;;3409:4;;:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:106;3390:125;;:4;;;;:125;;:4;:125;:::i;:::-;-1:-1:-1;3390:125:243;;;;;;;;;;;;;;;;:::i;:::-;;;;;3526:17;3546:13;:4;:11;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:13;3569:6;;:27;;;;;3526:33;;-1:-1:-1;3569:6:243;;;:21;;:27;;3526:33;;3569:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3606:76:243;;;;;16301:2:262;3606:76:243;;;16283:21:262;16340:2;16320:18;;;16313:30;16379:34;16359:18;;;16352:62;16450:20;16430:18;;;16423:48;3606:22:243;;-1:-1:-1;3606:22:243;;-1:-1:-1;16488:19:262;;3606:76:243;16099:414:262;2254:69:127;2296:27;1862:10:103;2322:1:127;2296:27;:::i;2003:837:243:-;2186:77;;;;;;;;2219:4;2186:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2108:7;2186:77;;;;;;2089:16;-1:-1:-1;2186:77:243;;;;;2253:9;;;;;;;;;;;-1:-1:-1;2186:77:243;;;2345:6;;2313:50;;2345:6;2108:7;2313:23;:50::i;:::-;2381:58;875:4:173;2431:6:243;2420:18;;;;;;;;:::i;:::-;;;;;;;;;;;2381:8;;;;;;:4;:8;;2420:18;;;;;2381:4;;:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:58;2374:65;;:4;;;;:65;;:4;:65;:::i;:::-;-1:-1:-1;2374:65:243;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;2492:4:243;:14;2481:67;;;2492:14;;;;2481:67;;;12089:74:262;678:66:172;12179:18:262;;;12172:34;2492:14:243;12222:18:262;;;12215:50;2456:93:243;;-1:-1:-1;1272:4:173;;12062:18:262;;2481:67:243;;;;;;;;;;2456:8;;;;;;:4;:8;;2481:67;;;;;2456:4;;:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:93;2449:100;;:4;;;;:100;;:4;:100;:::i;:::-;-1:-1:-1;2449:100:243;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;2600:14:243;;2589:69;;;2600:14;;;;2589:69;;;14480:74:262;2624:4:243;14570:18:262;;;14563:83;2600:14:243;14662:18:262;;;14655:75;2566:93:243;;-1:-1:-1;1428:4:173;;14453:18:262;;2589:69:243;;;;;;;;;;2566:8;;;;;;:4;:8;;2589:69;;;;;2566:4;;:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:93;2559:100;;:4;;;;:100;;:4;:100;:::i;:::-;-1:-1:-1;2559:100:243;;;;;;;;;;;;;;;;:::i;:::-;;;;;2670:17;2690:13;:4;:11;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:13;2713:6;;:27;;;;;2670:33;;-1:-1:-1;2713:6:243;;;:21;;:27;;2670:33;;2713:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2750:83:243;;;;;16989:2:262;2750:83:243;;;16971:21:262;17028:2;17008:18;;;17001:30;17067:34;17047:18;;;17040:62;17138:27;17118:18;;;17111:55;2750:22:243;;-1:-1:-1;2750:22:243;;-1:-1:-1;17183:19:262;;2750:83:243;16787:421:262;2606:142:12;2655:35;2723:18;2702:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2606:142;:::o;437:131:256:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;511:50:256;;526:9;;;;;-1:-1:-1;511:50:256;;;526:9;;;511:50;;545:14;;;;;;;;;;;-1:-1:-1;;511:50:256;;;;;;545:14;;;;;;;;;;;;;;;;;;;;-1:-1:-1;511:50:256;;504:57;437:131;-1:-1:-1;437:131:256:o;574:611::-;-1:-1:-1;;;;;;;;;;;;;;;;;687:20:256;720:4;:11;;;:18;741:1;720:22;;;;:::i;:::-;710:33;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;710:33:256;;687:56;;753:21;789:4;:11;;;:18;810:1;789:22;;;;:::i;:::-;777:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;753:59;;828:9;823:168;859:1;843:6;:13;:17;;;;:::i;:::-;839:1;:21;823:168;;;924:4;:11;;;936:1;924:14;;;;;;;;:::i;:::-;;;;;;;912:6;919:1;912:9;;;;;;;;:::i;:::-;;;;;;:26;;;;965:4;:12;;;978:1;965:15;;;;;;;;:::i;:::-;;;;;;;;;952:7;960:1;952:10;;;;;;;;:::i;:::-;;;;:28;;;;;;;;;;-1:-1:-1;862:3:256;;823:168;;;;1028:5;1000:6;1023:1;1007:6;:13;:17;;;;:::i;:::-;1000:25;;;;;;;;:::i;:::-;;;;;;:33;;;;1085:6;1072:21;;1043:7;1067:1;1051:6;:13;:17;;;;:::i;:::-;1043:26;;;;;;;;:::i;:::-;;;;:50;;;;;;;;;;-1:-1:-1;1104:22:256;;;1136:11;;;:20;-1:-1:-1;1104:22:256;;574:611;-1:-1:-1;;574:611:256:o;2561:132::-;2618:12;2660:4;:12;;;2674:4;:11;;;2649:37;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2642:44;;2561:132;;;:::o;3839:104:127:-;3930:4;3906:30;;;;;:::i;:::-;3396:42:262;3384:55;;;3366:74;;3354:2;3339:18;3906:30:127;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3896:7:127;:40;;;;;;;;;;;;;;;3839:104::o;2510:307:259:-;2577:18;2607:25;2635:29;2648:5;2655:8;2635:12;:29::i;:::-;2607:57;;2679:9;2674:114;2698:5;2694:9;;:1;:9;2674:114;;;2724:6;2731:1;2724:9;;;;;;;;:::i;:::-;;;;;;;;;;;2750:6;;2724:53;;;;;:17;2750:6;;;2724:53;;;14120:74:262;2759:17:259;14210:18:262;;;14203:34;2724:17:259;;;;;14093:18:262;;2724:53:259;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2705:3:259;;2674:114;;;-1:-1:-1;2804:6:259;2510:307;-1:-1:-1;;2510:307:259:o;3536:531::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3688:75:259;;;;;;;;-1:-1:-1;3688:75:259;;;;;;;;;;3736:4;3688:75;;;;3742:2;3688:75;;;;;;;;;;;3774:7;;:40;;;;;3688:75;;3774:7;;:18;;:40;;3688:75;;280:29:125;;3774:40:259;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3877:15:259;;;3824:89;;;;;:44;3877:15;;;3824:89;;;14120:74:262;3895:17:259;14210:18:262;;;14203:34;3824:44:259;;;;;;14093:18:262;3824:89:259;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3923:15:259;;3992:52;;;;;;;;4014:7;3992:52;;4023:6;3992:52;;;;3962:9;3992:52;;;;;;3923:15;3992:52;;;;3923:137;;;;;:15;;;;;:31;;3962:9;3923:137;;3986:4;;3992:52;3923:137;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2823:707::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3032:9:259;2987:55;;3003:9;2987:55;;;2983:108;;;3070:9;;3081;2983:108;-1:-1:-1;3108:57:259;;;;;;;;;;;;;;;;;;;;;3138:4;3108:57;;;;3144:2;3108:57;;;;;;;;;;;3176:7;;:40;;;;;3108:57;;3176:7;;:18;;:40;;3108:57;;280:29:125;;3176:40:259;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3280:15:259;;;3226:90;;;;;:45;3280:15;;;3226:90;;;14120:74:262;3298:17:259;14210:18:262;;;14203:34;3226:45:259;;;;;;14093:18:262;3226:90:259;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3380:15:259;;;3326:90;;;;;:45;3380:15;;;3326:90;;;14120:74:262;3398:17:259;14210:18:262;;;14203:34;3326:45:259;;;;;;14093:18:262;3326:90:259;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3426:15:259;;3464:52;;;;;;;;3486:7;3464:52;;3495:6;3464:52;;;;3503:9;3464:52;;;;3426:15;3464:52;;;;3426:97;;;;;:15;;;;;:31;;:97;;3458:4;;3464:52;3426:97;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2823:707;;;;;:::o;1472:2873:120:-;1743:12;1769:22;;;1765:2574;;1956:1;1953;1950;1947;1939:6;1935:2;1928:5;1923:35;1912:46;;2086:7;2081:127;;2113:80;2148:2;2159:1;2163:29;2113:34;:80::i;:::-;1765:2574;;;2352:4;2346:11;2488:66;2483:3;2476:79;2600:42;2596:2;2592:51;2588:1;2583:3;2579:11;2572:72;2720:6;2715:2;2710:3;2706:12;2699:28;3649:2;3646:1;3642:2;3637:3;3634:1;3624:8;3617:5;3612:40;3141:16;3134:24;3128:2;3110:16;3107:24;3103:1;3099;3093:8;3090:15;3086:46;3083:76;2859:815;2828:846;;3752:1;3747:3;3740:14;3853:1;3846:4;3841:3;3837:14;3830:25;3956:1;3949:4;3944:3;3940:14;3933:25;;4125:7;4120:209;;4152:162;4224:8;4235:31;4268:28;4152:34;:162::i;6188:318:127:-;6262:25;6324:5;6308:22;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6308:22:127;;6299:31;;6345:7;6340:160;6362:5;6358:9;;:1;:9;;;6340:160;;;6430:2;6400:33;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;6388:6;6395:1;6388:9;;;;;;;;;;:::i;:::-;;;;;;:45;;;;;;;;;;;6447:6;6454:1;6447:9;;;;;;;;;;:::i;:::-;;;;;;;;;;;:42;;;;;6470:4;6447:42;;;14120:74:262;14210:18;;;14203:34;;;6447:14:127;;;;;;;14093:18:262;;6447:42:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6369:3:127;;;;;-1:-1:-1;6340:160:127;;-1:-1:-1;6340:160:127;3508:1663:85;3953:4;3947:11;3710:21;4094:33;;;4186:42;4163:66;;4156:4;4147:14;;4140:90;4330:66;4299:98;;4276:4;4267:14;;4243:168;4483:4;4476;4467:14;;4460:28;3919:2;3909;3891:16;3887:25;3883:34;;;3879:43;4569:4;4565:26;;4558:4;4549:14;;4542:50;4662:16;4655:4;4646:14;;4639:40;3710:21;;4755:16;-1:-1:-1;4745:4:85;4736:14;;4721:51;4869:4;4850:15;4844:4;4840:26;4835:3;4831:36;4824:50;5022:66;5003:17;4999:90;4964:15;4958:4;4954:26;4949:3;4945:36;4921:182;5138:15;5132:4;5128:26;5123:3;5116:39;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;14:660:262;204:2;216:21;;;286:13;;189:18;;;308:22;;;156:4;;387:15;;;361:2;346:18;;;156:4;430:218;444:6;441:1;438:13;430:218;;;509:13;;524:42;505:62;493:75;;597:2;623:15;;;;588:12;;;;466:1;459:9;430:218;;;-1:-1:-1;665:3:262;;14:660;-1:-1:-1;;;;;14:660:262:o;679:348::-;721:3;759:5;753:12;786:6;781:3;774:19;842:6;835:4;828:5;824:16;817:4;812:3;808:14;802:47;894:1;887:4;878:6;873:3;869:16;865:27;858:38;1016:4;946:66;941:2;933:6;929:15;925:88;920:3;916:98;912:109;905:116;;;679:348;;;;:::o;1032:1767::-;1236:4;1284:2;1273:9;1269:18;1314:2;1303:9;1296:21;1337:6;1372;1366:13;1403:6;1395;1388:22;1441:2;1430:9;1426:18;1419:25;;1503:2;1493:6;1490:1;1486:14;1475:9;1471:30;1467:39;1453:53;;1541:2;1533:6;1529:15;1562:1;1572:1198;1586:6;1583:1;1580:13;1572:1198;;;1675:66;1651:22;;;1647:95;1635:108;;1766:13;;1853:9;;1864:42;1849:58;1834:74;;1955:2;1947:11;;;1941:18;1818:2;1979:15;;;1972:27;;;2060:19;;1806:15;;;2092:24;;;2247:21;;;2150:2;2200:1;2196:16;;;2184:29;;2180:38;;;2138:15;;;;-1:-1:-1;2306:355:262;2322:8;2317:3;2314:17;2306:355;;;2424:66;2415:6;2407;2403:19;2399:92;2392:5;2385:107;2519:42;2554:6;2543:8;2537:15;2519:42;:::i;:::-;2604:2;2590:17;;;;2509:52;;-1:-1:-1;2633:14:262;;;;;2350:1;2341:11;2306:355;;;-1:-1:-1;2684:6:262;;-1:-1:-1;;;2725:2:262;2748:12;;;;2713:15;;;;;-1:-1:-1;1608:1:262;1601:9;1572:1198;;;-1:-1:-1;2787:6:262;;1032:1767;-1:-1:-1;;;;;;1032:1767:262:o;3451:492::-;3503:3;3541:5;3535:12;3568:6;3563:3;3556:19;3600:4;3595:3;3591:14;3584:21;;3639:4;3632:5;3628:16;3662:1;3672:246;3686:6;3683:1;3680:13;3672:246;;;3751:13;;3766:66;3747:86;3735:99;;3863:4;3854:14;;;;3891:17;;;;3708:1;3701:9;3672:246;;;-1:-1:-1;3934:3:262;;3451:492;-1:-1:-1;;;;3451:492:262:o;3948:1202::-;4166:4;4214:2;4203:9;4199:18;4244:2;4233:9;4226:21;4267:6;4302;4296:13;4333:6;4325;4318:22;4371:2;4360:9;4356:18;4349:25;;4433:2;4423:6;4420:1;4416:14;4405:9;4401:30;4397:39;4383:53;;4471:2;4463:6;4459:15;4492:1;4502:619;4516:6;4513:1;4510:13;4502:619;;;4605:66;4593:9;4585:6;4581:22;4577:95;4572:3;4565:108;4702:6;4696:13;4748:2;4742:9;4779:2;4771:6;4764:18;4809:48;4853:2;4845:6;4841:15;4827:12;4809:48;:::i;:::-;4795:62;;4906:2;4902;4898:11;4892:18;4870:40;;4959:6;4951;4947:19;4942:2;4934:6;4930:15;4923:44;4990:51;5034:6;5018:14;4990:51;:::i;:::-;4980:61;-1:-1:-1;;;5076:2:262;5099:12;;;;5064:15;;;;;4538:1;4531:9;4502:619;;5155:841;5317:4;5365:2;5354:9;5350:18;5395:2;5384:9;5377:21;5418:6;5453;5447:13;5484:6;5476;5469:22;5522:2;5511:9;5507:18;5500:25;;5584:2;5574:6;5571:1;5567:14;5556:9;5552:30;5548:39;5534:53;;5622:2;5614:6;5610:15;5643:1;5653:314;5667:6;5664:1;5661:13;5653:314;;;5756:66;5744:9;5736:6;5732:22;5728:95;5723:3;5716:108;5847:40;5880:6;5871;5865:13;5847:40;:::i;:::-;5837:50;-1:-1:-1;5922:2:262;5945:12;;;;5910:15;;;;;5689:1;5682:9;5653:314;;6001:1113;6203:4;6251:2;6240:9;6236:18;6281:2;6270:9;6263:21;6304:6;6339;6333:13;6370:6;6362;6355:22;6408:2;6397:9;6393:18;6386:25;;6470:2;6460:6;6457:1;6453:14;6442:9;6438:30;6434:39;6420:53;;6508:2;6500:6;6496:15;6529:1;6539:546;6553:6;6550:1;6547:13;6539:546;;;6642:66;6630:9;6622:6;6618:22;6614:95;6609:3;6602:108;6739:6;6733:13;6789:42;6784:2;6778:9;6774:58;6766:6;6759:74;6880:2;6876;6872:11;6866:18;6846:38;;6921:2;6916;6908:6;6904:15;6897:27;6947:58;7001:2;6993:6;6989:15;6975:12;6947:58;:::i;:::-;6937:68;-1:-1:-1;;7040:2:262;7063:12;;;;7028:15;;;;;6575:1;6568:9;6539:546;;7692:184;7744:77;7741:1;7734:88;7841:4;7838:1;7831:15;7865:4;7862:1;7855:15;7881:437;7960:1;7956:12;;;;8003;;;8024:61;;8078:4;8070:6;8066:17;8056:27;;8024:61;8131:2;8123:6;8120:14;8100:18;8097:38;8094:218;;8168:77;8165:1;8158:88;8269:4;8266:1;8259:15;8297:4;8294:1;8287:15;8094:218;;7881:437;;;:::o;8448:517::-;8549:2;8544:3;8541:11;8538:421;;;8585:5;8582:1;8575:16;8629:4;8626:1;8616:18;8699:2;8687:10;8683:19;8680:1;8676:27;8670:4;8666:38;8735:4;8723:10;8720:20;8717:47;;;-1:-1:-1;8758:4:262;8717:47;8813:2;8808:3;8804:12;8801:1;8797:20;8791:4;8787:31;8777:41;;8868:81;8886:2;8879:5;8876:13;8868:81;;;8945:1;8931:16;;8912:1;8901:13;8868:81;;;8872:3;;8448:517;;;:::o;9201:1414::-;9325:3;9319:10;9352:18;9344:6;9341:30;9338:56;;;9374:18;;:::i;:::-;9403:96;9492:6;9452:38;9484:4;9478:11;9452:38;:::i;:::-;9446:4;9403:96;:::i;:::-;9548:4;9579:2;9568:14;;9596:1;9591:767;;;;10402:1;10419:6;10416:89;;;-1:-1:-1;10471:19:262;;;10465:26;10416:89;9107:66;9098:1;9094:11;;;9090:84;9086:89;9076:100;9182:1;9178:11;;;9073:117;10518:81;;9561:1048;;9591:767;8395:1;8388:14;;;8432:4;8419:18;;9639:66;9627:79;;;9803:222;9817:7;9814:1;9811:14;9803:222;;;9899:19;;;9893:26;9878:42;;10006:4;9991:20;;;;9959:1;9947:14;;;;9833:12;9803:222;;;9807:3;10053:6;10044:7;10041:19;10038:261;;;10114:19;;;10108:26;10215:66;10197:1;10193:14;;;10209:3;10189:24;10185:97;10181:102;10166:118;10151:134;;10038:261;-1:-1:-1;;;;10345:1:262;10329:14;;;10325:22;10312:36;;-1:-1:-1;9201:1414:262:o;11118:740::-;11329:2;11318:9;11311:21;11341:60;11397:2;11386:9;11382:18;11373:6;11367:13;10711:42;10703:5;10697:12;10693:61;10688:3;10681:74;10816:42;10808:4;10801:5;10797:16;10791:23;10787:72;10780:4;10775:3;10771:14;10764:96;10921:8;10913:4;10906:5;10902:16;10896:23;10892:38;10885:4;10880:3;10876:14;10869:62;10994:4;10987:5;10983:16;10977:23;10974:1;10963:38;10956:4;10951:3;10947:14;10940:62;11063:42;11055:4;11048:5;11044:16;11038:23;11034:72;11027:4;11022:3;11018:14;11011:96;;;10620:493;11341:60;11470:2;11462:6;11458:15;11452:22;11445:30;11438:38;11432:3;11421:9;11417:19;11410:67;11544:34;11536:4;11528:6;11524:17;11518:24;11514:65;11508:3;11497:9;11493:19;11486:94;11647:34;11639:4;11631:6;11627:17;11621:24;11617:65;11611:3;11600:9;11596:19;11589:94;11292:4;11730;11722:6;11718:17;11712:24;11776:6;11767;11756:9;11752:22;11745:38;11800:52;11847:3;11836:9;11832:19;11818:12;11800:52;:::i;:::-;11792:60;11118:740;-1:-1:-1;;;;11118:740:262:o;12625:218::-;12772:2;12761:9;12754:21;12735:4;12792:45;12833:2;12822:9;12818:18;12810:6;12792:45;:::i;:::-;12784:53;12625:218;-1:-1:-1;;;12625:218:262:o;13266:184::-;13336:6;13389:2;13377:9;13368:7;13364:23;13360:32;13357:52;;;13405:1;13402;13395:12;13357:52;-1:-1:-1;13428:16:262;;13266:184;-1:-1:-1;13266:184:262:o;13455:::-;13507:77;13504:1;13497:88;13604:4;13601:1;13594:15;13628:4;13625:1;13618:15;13644:267;13774:42;13767:50;;;13715;;;13711:107;;13830:52;;13827:78;;;13885:18;;:::i;:::-;13644:267;;;;:::o;15419:184::-;15471:77;15468:1;15461:88;15568:4;15565:1;15558:15;15592:4;15589:1;15582:15;16518:264;16646:42;16587:50;;;16639;;;16583:107;;16702:51;;16699:77;;;16756:18;;:::i;17213:125::-;17278:9;;;17299:10;;;17296:36;;;17312:18;;:::i;17343:128::-;17410:9;;;17431:11;;;17428:37;;;17445:18;;:::i;17476:962::-;17719:2;17708:9;17701:21;17682:4;17745:45;17786:2;17775:9;17771:18;17763:6;17745:45;:::i;:::-;17838:9;17830:6;17826:22;17821:2;17810:9;17806:18;17799:50;17869:6;17904;17898:13;17935:6;17927;17920:22;17970:2;17962:6;17958:15;17951:22;;18029:2;18019:6;18016:1;18012:14;18004:6;18000:27;17996:36;18067:2;18059:6;18055:15;18088:1;18098:311;18112:6;18109:1;18106:13;18098:311;;;18198:66;18189:6;18181;18177:19;18173:92;18168:3;18161:105;18289:40;18322:6;18313;18307:13;18289:40;:::i;:::-;18364:2;18387:12;;;;18279:50;;-1:-1:-1;18352:15:262;;;;;18134:1;18127:9;18098:311;;;-1:-1:-1;18426:6:262;;17476:962;-1:-1:-1;;;;;;;;17476:962:262:o;18976:277::-;19043:6;19096:2;19084:9;19075:7;19071:23;19067:32;19064:52;;;19112:1;19109;19102:12;19064:52;19144:9;19138:16;19197:5;19190:13;19183:21;19176:5;19173:32;19163:60;;19219:1;19216;19209:12;19258:370;19472:3;19457:19;;19485:44;19461:9;19511:6;10711:42;10703:5;10697:12;10693:61;10688:3;10681:74;10816:42;10808:4;10801:5;10797:16;10791:23;10787:72;10780:4;10775:3;10771:14;10764:96;10921:8;10913:4;10906:5;10902:16;10896:23;10892:38;10885:4;10880:3;10876:14;10869:62;10994:4;10987:5;10983:16;10977:23;10974:1;10963:38;10956:4;10951:3;10947:14;10940:62;11063:42;11055:4;11048:5;11044:16;11038:23;11034:72;11027:4;11022:3;11018:14;11011:96;;;10620:493;19485:44;19578:42;19570:6;19566:55;19560:3;19549:9;19545:19;19538:84;19258:370;;;;;:::o;19633:277::-;19701:6;19754:2;19742:9;19733:7;19729:23;19725:32;19722:52;;;19770:1;19767;19760:12;19722:52;19802:9;19796:16;19855:5;19852:1;19841:20;19834:5;19831:31;19821:59;;19876:1;19873;19866:12;19915:846;20286:44;20320:9;20312:6;10711:42;10703:5;10697:12;10693:61;10688:3;10681:74;10816:42;10808:4;10801:5;10797:16;10791:23;10787:72;10780:4;10775:3;10771:14;10764:96;10921:8;10913:4;10906:5;10902:16;10896:23;10892:38;10885:4;10880:3;10876:14;10869:62;10994:4;10987:5;10983:16;10977:23;10974:1;10963:38;10956:4;10951:3;10947:14;10940:62;11063:42;11055:4;11048:5;11044:16;11038:23;11034:72;11027:4;11022:3;11018:14;11011:96;;;10620:493;20286:44;20387:6;20381:13;20378:1;20367:28;20361:3;20350:9;20346:19;20339:57;20465:4;20457:6;20453:17;20447:24;20444:1;20433:39;20427:3;20416:9;20412:19;20405:68;20528:4;20520:6;20516:17;20510:24;20504:3;20493:9;20489:19;20482:53;20590:4;20582:6;20578:17;20572:24;20566:3;20555:9;20551:19;20544:53;20634:3;20628;20617:9;20613:19;20606:32;20675:1;20669:3;20658:9;20654:19;20647:30;20714:4;20708:3;20697:9;20693:19;20686:33;20267:4;20751:3;20740:9;20736:19;20728:27;;19915:846;;;;;:::o;21146:586::-;21484:2;21473:9;21466:21;21447:4;21510:49;21555:2;21544:9;21540:18;21066:1;21054:14;;21100:6;21093:4;21084:14;;21077:30;21132:2;21123:12;;20989:152;21510:49;21607:9;21599:6;21595:22;21590:2;21579:9;21575:18;21568:50;21635:37;21665:6;21066:1;21054:14;;21100:6;21093:4;21084:14;;21077:30;21132:2;21123:12;;20989:152;21635:37;21627:45;;;21720:4;21712:6;21708:17;21703:2;21692:9;21688:18;21681:45;21146:586;;;;:::o","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","LIQUIDITY_PARAMS()":"93ad73ed","MAX_PRICE_LIMIT()":"542524dd","MIN_PRICE_LIMIT()":"c7b8e15d","REMOVE_LIQUIDITY_PARAMS()":"39cd2013","SWAP_PARAMS()":"b1a73b8a","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSelectors()":"b0464fdc","excludeSenders()":"1ed7831c","failed()":"ba414fa6","setUp()":"0a9254e4","setupRouterCurrenciesAndPoolsWithLiquidity()":"b0f3d802","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","test_gas_swap_settleFromCaller_takeAllToMsgSender()":"4996879b","test_gas_swap_settleFromCaller_takeAllToSpecifiedAddress()":"8dd3c5bd","test_gas_swap_settleWithBalance_takeAllToMsgSender()":"c2f6c3a9","test_gas_swap_settleWithBalance_takeAllToSpecifiedAddress()":"d8cc2b40"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LIQUIDITY_PARAMS\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"int256\",\"name\":\"liquidityDelta\",\"type\":\"int256\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_PRICE_LIMIT\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"\",\"type\":\"uint160\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_PRICE_LIMIT\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"\",\"type\":\"uint160\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REMOVE_LIQUIDITY_PARAMS\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"int256\",\"name\":\"liquidityDelta\",\"type\":\"int256\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SWAP_PARAMS\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setupRouterCurrenciesAndPoolsWithLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"artifact\",\"type\":\"string\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzArtifactSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_gas_swap_settleFromCaller_takeAllToMsgSender\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_gas_swap_settleFromCaller_takeAllToSpecifiedAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_gas_swap_settleWithBalance_takeAllToMsgSender\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_gas_swap_settleWithBalance_takeAllToSpecifiedAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/router/Payments.gas.t.sol\":\"PaymentsTests\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":44444444},\"remappings\":[\":@ensdomains/=lib/v4-core/node_modules/@ensdomains/\",\":@openzeppelin/=lib/v4-core/lib/openzeppelin-contracts/\",\":@uniswap/v4-core/=lib/v4-core/\",\":ds-test/=lib/v4-core/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/v4-core/lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-gas-snapshot/=lib/permit2/lib/forge-gas-snapshot/src/\",\":forge-std/=lib/v4-core/lib/forge-std/src/\",\":hardhat/=lib/v4-core/node_modules/hardhat/\",\":openzeppelin-contracts/=lib/v4-core/lib/openzeppelin-contracts/\",\":permit2/=lib/permit2/\",\":solmate/=lib/v4-core/lib/solmate/\",\":v4-core/=lib/v4-core/src/\"]},\"sources\":{\"lib/permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0\",\"dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN\"]},\"lib/permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"]},\"lib/v4-core/lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/v4-core/lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x4584f551c3a875c26423c1e50a77179bc2f9c9c1ee6d0f0c6be0f89ca5ee8270\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef118876a862b60ba8a6612b8b3f3a6c226e11a0071a2e9695f021586d1bfdbe\",\"dweb:/ipfs/QmXd2vD91PkvoFWasFkgbDi89PctmgsHVxGvGNyhjmRK2b\"]},\"lib/v4-core/lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x7dd11ac4db798fa196e00a0cfa288ce984acac881f1f34de03fe3187deed58de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c15fb03d5545e2d8d3948661596410edec5ec278a73988914b14a05d0d54557\",\"dweb:/ipfs/QmWGjkLgp4wSrTrFxF8cmhghaXQp5VyXYQvWE1DUTPL4rG\"]},\"lib/v4-core/lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xc28b654cfbcafb8f7688c8dc69134921bb4841c82ddc2e5f27bcf5d8eb2177cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3f1875b52fb32efefdc467d9566bf93d72dad036547ce6955e4f7a318eea9d6f\",\"dweb:/ipfs/QmbgbSX8JajLzTyWcPqrYAcsQcHNuGTFTKdQ3HNTvyRgdj\"]},\"lib/v4-core/lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/v4-core/lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x4dab3021edfa9511bbdd80c48f060ef62eaf457f99eaf841f561fc2557d9a08d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07668628673174cf8f27f8f4e1f862bab775013ec247eb34f698c5005f229391\",\"dweb:/ipfs/QmPJsiiYwmCZXMsHmQv5tg8VF3CAhNdat7WnKLTWZZH2v5\"]},\"lib/v4-core/lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xbc0132abe1c2accc2867c0f03667afffdf92f3e95a581bb03c9557eaa38ea500\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb6fab37dc73c219cfbb7b4f4998bcf7677ca5397a867e850f40232192073974\",\"dweb:/ipfs/QmUHsbVdp9SKmgek7ZfPcLTKrpZFXpqaqt4sVejzxGEQL3\"]},\"lib/v4-core/lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/v4-core/lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57\",\"dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ\"]},\"lib/v4-core/lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/v4-core/lib/forge-std/src/StdToml.sol\":{\"keccak256\":\"0x58a72c765ed3f7ff6b105509689658795b8a3739b8931772a497155878381861\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4a3746f4fabaeb980bd77d9e091d3904ee38a6c0e191bfa8ba6874c6f8558a3\",\"dweb:/ipfs/QmUfFDMEn461FgGEXt5HicyGD54sc28sLaQ9JRWDMBKed8\"]},\"lib/v4-core/lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x4a5853bb9688c4e1c65626036cddd8ea2af84ef1046b704ddc3782d84a892410\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09c1024e6aac9657312fcfcf5c3dee62c22edf9f74a1065e6924c4ec710ecafa\",\"dweb:/ipfs/QmRNURoTUkd6DiZnf8yY8o3stJpVQBifopdSpQgP9RhvRr\"]},\"lib/v4-core/lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e\",\"dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK\"]},\"lib/v4-core/lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1\",\"dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD\"]},\"lib/v4-core/lib/forge-std/src/console.sol\":{\"keccak256\":\"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57\",\"dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP\"]},\"lib/v4-core/lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d\",\"dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ\"]},\"lib/v4-core/lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/v4-core/lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/v4-core/lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/v4-core/lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/v4-core/lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/v4-core/lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0xbfbb755bb379f58b97699f7cda0e9a2b9113daaa072e41b280a5ce6a3bff44c9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5ae0c31d29db14d6a0e9b62d33d550feb307f48a6f45068901a013321f337f87\",\"dweb:/ipfs/QmX25DVXW6XZDvRm6SNBGCWrZQ6oNhdq5CmgtVocvsUdwv\"]},\"lib/v4-core/lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab\",\"dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3\"]},\"lib/v4-core/lib/solmate/src/auth/Owned.sol\":{\"keccak256\":\"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\",\"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\"]},\"lib/v4-core/lib/solmate/src/test/utils/mocks/MockERC20.sol\":{\"keccak256\":\"0x525129ccb4103c9ecb8f235618d2ff4a8ffde4b8654f7c17766ad175d10ef466\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://45692a21807ba815c0cf0bfc7d633a14a6cb9ba863ab53f18fc639375a72125e\",\"dweb:/ipfs/QmSrqxyodjDtSU1Dc6G3ScnNc9CFjMnAeHpK8a8guM3nJu\"]},\"lib/v4-core/lib/solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"lib/v4-core/lib/solmate/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x6ab948013c2c7ca6351e593600425b0ec6df9035320280c678e735bce16e996b\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://2ab977d0eeb2bf458f9798250215c646d2f3b1f90b5a7e2b506fdf3335c0f060\",\"dweb:/ipfs/QmYPRoPhNtBAmCSq7imN1scMVpKNQvMTpoqab3tXUx5Tnv\"]},\"lib/v4-core/src/ERC6909.sol\":{\"keccak256\":\"0x22476a1c183be1b547a509b3e6906abaccb6408375f798fce805ff7877aca09f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e85580e1563ea0556705132fb6bd038ca4aa355749039923853ebcb76b7c84e6\",\"dweb:/ipfs/QmVoxPrbagRKpFdRWoaCSKmStYLZrhNFuedcuyGycSGR7q\"]},\"lib/v4-core/src/ERC6909Claims.sol\":{\"keccak256\":\"0xf496ef3a5a9bf4f4aa2eec951dbeff09a01ef058bb9f64b1664cf46c9e85cd49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a0a97c359a7a4c526ba9fc4ceb20af8050f9cf7886ea7e1f38c9c10b4a3750c\",\"dweb:/ipfs/QmPy6pCQbvzCdJRqG1thHRSwEZoLBAaLo3KQnueL3wxb8i\"]},\"lib/v4-core/src/Extsload.sol\":{\"keccak256\":\"0x784074bd04a1541c7c6ace074e30245746133fd37c3ba16b025dce394db986ce\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35f1f4fb306bf01e98b7eca012b85f3ab978b39fa5136193363e2519c4435e51\",\"dweb:/ipfs/QmeGrjGMt71dJymVhkEadh5CuCW5GxRqNEZLi5AJxvC5tU\"]},\"lib/v4-core/src/Exttload.sol\":{\"keccak256\":\"0x769ee2733a08112c652274f4b972c45fb56cc46109f233b9a30f81561b15dd54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd19e88d50ae77c1ed5581baca1c75b3fb828d0b58cded90188d55c4e336266c\",\"dweb:/ipfs/Qmc8YM6Tfpwwa4qivHHzRxNdhZzdzGiD7VexWsDvkaQTxG\"]},\"lib/v4-core/src/NoDelegateCall.sol\":{\"keccak256\":\"0xacb81aecb7c74c86650a035462dae38c313b4b7b5842e14b645f864f61da2b51\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://363a0e15fc30ea68a5d52a78772facecde6433ea156e3ec2ce25068c97cd5ad6\",\"dweb:/ipfs/QmYhWaF3wH71SDx5TZr9qEXXQf5FYQvdjoo3B2qWiAbm18\"]},\"lib/v4-core/src/PoolManager.sol\":{\"keccak256\":\"0xf9ff5d5e261a21a5e72a01c5badd988beeff437e0f6b82fd56f80be42d727c07\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4a92a25102c73245e1343f0dbc8400b8bac3c464ba064aa5574b9584a12e6c72\",\"dweb:/ipfs/QmfCcvspZ8XzDeQjEd2FfM76wzkfE9KDgBoqAcqhf3nsnu\"]},\"lib/v4-core/src/ProtocolFees.sol\":{\"keccak256\":\"0x81362ef1d19670b41cefc2b6f2dc0333b6743fe39a1929edd36bd9b6a1111755\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de483bbd8bf9a53b9644d7f9a6a6fe77ae527b755cf29e1db8725de89e70c7aa\",\"dweb:/ipfs/Qmex3PcgJGbYsuDNaMXc8mg5fW1DNaPGiNToPpAAzz6GEq\"]},\"lib/v4-core/src/interfaces/IExtsload.sol\":{\"keccak256\":\"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1\",\"dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN\"]},\"lib/v4-core/src/interfaces/IExttload.sol\":{\"keccak256\":\"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8\",\"dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY\"]},\"lib/v4-core/src/interfaces/IHooks.sol\":{\"keccak256\":\"0xc131ffa2d04c10a012fe715fe2c115811526b7ea34285cf0a04ce7ce8320da8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3b212358897db5d99c21244d88f97b2e788527552cb430629b472a8cc6289aec\",\"dweb:/ipfs/QmQtwV4dDe2RYk2ErLpaAX7U82jWh1L6Lw2HRuKDvBi84G\"]},\"lib/v4-core/src/interfaces/IPoolManager.sol\":{\"keccak256\":\"0xbdab3544da3d32dfdf7457baa94e17d5a3012952428559e013ffac45d067038e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce95ff864468e37c76adf71df061d4f3d6f3a5ec1f9bc3aea090463bc72798f4\",\"dweb:/ipfs/QmSbWh1pLbz51yQF4HEu5NRhr8XVv9JYGEw1hq1HudAnCi\"]},\"lib/v4-core/src/interfaces/IProtocolFees.sol\":{\"keccak256\":\"0x32a666e588a2f66334430357bb1e2424fe7eebeb98a3364b1dd16eb6ccca9848\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85751d302125881f72e5f8af051c2d5d9b1f606ebaea8ca7d04fccdd27cc252d\",\"dweb:/ipfs/QmeRwomeh9NWm6A6fgNA4KZPQZHPpdKsPQyYsHSFmvud7J\"]},\"lib/v4-core/src/interfaces/callback/IUnlockCallback.sol\":{\"keccak256\":\"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b\",\"dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK\"]},\"lib/v4-core/src/interfaces/external/IERC20Minimal.sol\":{\"keccak256\":\"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de\",\"dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d\"]},\"lib/v4-core/src/interfaces/external/IERC6909Claims.sol\":{\"keccak256\":\"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f\",\"dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK\"]},\"lib/v4-core/src/libraries/BitMath.sol\":{\"keccak256\":\"0x51b9be4f5c4fd3e80cbc9631a65244a2eb2be250b6b7f128a2035080e18aee8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fe98bbd5498e912146b9319827fc63621eb66ff55d5baae0fa02a7a972ab8d1e\",\"dweb:/ipfs/QmY5hCuyrtgsJtk4AavrxcvBkRrChfr4N6ZnhdC8roPpNi\"]},\"lib/v4-core/src/libraries/CurrencyDelta.sol\":{\"keccak256\":\"0x80dbd898cf0f90c5c27192689b16c34edc765d6ab21b8358e3bb792c7fef238c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://107698da024313f132d9fe28deb920b5c03d14624889c3ce5720e588f03635bb\",\"dweb:/ipfs/QmQteUbhj5SsWbvSF6U8niBUSrETqVbEwULc8E7vS4Kbnn\"]},\"lib/v4-core/src/libraries/CurrencyReserves.sol\":{\"keccak256\":\"0x1576616129933fcdf3b684cea33cffd9c95e18fafbd2832a8c48ac3d8526d4c3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://33b050efb9b81803b18f562271e7cca2ec5362c4d505860d6419b4a345636725\",\"dweb:/ipfs/QmQtFtTwKZ5pFVGD2ENDUXvp7ECFvzqeCuJ1miJcUHdmiX\"]},\"lib/v4-core/src/libraries/CustomRevert.sol\":{\"keccak256\":\"0x111ed3031b6990c80a93ae35dde6b6ac0b7e6af471388fdd7461e91edda9b7de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9ea883c98d6ae1829160d0977bb5195761cfd5bc81692d0a941f45717f594cd\",\"dweb:/ipfs/QmZPwxzaeMNv536wzrAMrMswu7vMHuqPVpjcqL3YvCMoxt\"]},\"lib/v4-core/src/libraries/FixedPoint128.sol\":{\"keccak256\":\"0xad236e10853f4b4b20a35a9bb52b857c4fc79874846b7e444e06ead7f2630542\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0de1f9a06520b1a689660943faa14fc0b8344ab41fab9e6012ea34bff4b9b3eb\",\"dweb:/ipfs/QmRNMPTyko7W6d6KxuTsnDBa9oZgDK4xiwRRq3H9ASTbwy\"]},\"lib/v4-core/src/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xef5c3fd41aee26bb12aa1c32873cfee88e67eddfe7c2b32283786265ac669741\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4de298d02f662a1c36c7be0a150f18c2a161408a5d3e48432e707efd01fac9a4\",\"dweb:/ipfs/QmSiM4oeMmLVKmAtJXz2feYkv4R9ZcyBpkTRW5Nhw5KDyJ\"]},\"lib/v4-core/src/libraries/FullMath.sol\":{\"keccak256\":\"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52\",\"dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC\"]},\"lib/v4-core/src/libraries/Hooks.sol\":{\"keccak256\":\"0xd679b4b2d429689bc44f136050ebc958fb2d7d0d3a3c7b3e48c08ab4fba09aaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287190cb72840e5eb63cc7a8a1d0b9150af17d8e4ea0323f47c7e7928f2033cb\",\"dweb:/ipfs/QmVfqWBnAQM2jUcuREDdvjcP21gNuLU35CoL3NG5CEhNcx\"]},\"lib/v4-core/src/libraries/LPFeeLibrary.sol\":{\"keccak256\":\"0xbf6914e01014e7c1044111feb7df7a3d96bb503b3da827ad8464b1955580d13b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33823c20a91882c9aacdcbb02f0558c05209f4d5954aa6dd4fa17c95664db475\",\"dweb:/ipfs/QmR7owkFgpfztpp1QUg3ut3nw9iPVQqLGP4hzgmZtRUQ2J\"]},\"lib/v4-core/src/libraries/LiquidityMath.sol\":{\"keccak256\":\"0x000ef2eadcc1eb7b2c18a77655f94e76e0e860f605783484657ef65fd6eda353\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a766b620a7a22798b43c6c1f23b5c6cff0ebf588deb89842bad05208d448cd99\",\"dweb:/ipfs/QmVKjaFJdzkqA3ey2Byum8iTCMssWVD8MmVC8rw62Tj5WD\"]},\"lib/v4-core/src/libraries/Lock.sol\":{\"keccak256\":\"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c\",\"dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF\"]},\"lib/v4-core/src/libraries/NonzeroDeltaCount.sol\":{\"keccak256\":\"0x0666ebd5d3528d7d52c48538296367a4cff97a578cf13365c51983fae3219b87\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d27f1be3bd09d85c53d3e6a539dd6529ddd8b2b764ccb47fd7765fc81f9add59\",\"dweb:/ipfs/QmQdZujNXhKEXQBkKtF5jbdvo1yXMqPDUoBBaF9S5u3Kpm\"]},\"lib/v4-core/src/libraries/ParseBytes.sol\":{\"keccak256\":\"0x7533b13f53ee2c2c55500100b22ffd6e37e7523c27874edc98663d53a8672b15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82449058634fde28a085f3c59a6a5f412550c02181590593fd84c3e8b329aa17\",\"dweb:/ipfs/Qmev4E9Au6SsE4wsArChCwfg94KhHc5gYsEsZUnjF5sRLa\"]},\"lib/v4-core/src/libraries/Pool.sol\":{\"keccak256\":\"0xb8191707c5913f5e2f589cec5167e3fac4a5b86bd84f61fdba0fbe6a8ce8a3a0\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a609f9c365f05becf61877d9dc767e7825bce8c34607dbfc0f0437a71f6ff407\",\"dweb:/ipfs/QmThDUzLePs2Hbp6XTpRSHT67rdsjQLhdmS6krm8cpKSey\"]},\"lib/v4-core/src/libraries/Position.sol\":{\"keccak256\":\"0xddab2a831f1befb6abf5567e77c4582169ca8156cf69eb4f22d8e87f7226a3f9\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c79fe61b50f3b70cff503abfa6f5643fcbefb9b794855bee1019b1e6d9c083b2\",\"dweb:/ipfs/QmbKmYNQesaMz8bo1b7TMHQcAwaDd3eDPrE5pAdPPZTtk5\"]},\"lib/v4-core/src/libraries/ProtocolFeeLibrary.sol\":{\"keccak256\":\"0xf483001899229ab10f5a626fe1c5866134d9e965b48ce6cf55ce0d7f74f7d8ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ba9211a7f69bbb44649c35211eb29d193c09032ec600064ef9d04b4625dd8ba\",\"dweb:/ipfs/QmQSjQvtguYgMJSkkKRhHjxasfX9xfTbrbcZ1QmjUVb787\"]},\"lib/v4-core/src/libraries/SafeCast.sol\":{\"keccak256\":\"0x42c4a24f996a14d358be397b71f7ec9d7daf666aaec78002c63315a6ee67aa86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3db86e2ba3679105fc32edec656c70282e1fede6cab11217702443f6c26fa59\",\"dweb:/ipfs/QmX4yaaSPdKQzYNRsezjTvZKsubzS8JRTEGFD3fPpTTCcj\"]},\"lib/v4-core/src/libraries/SqrtPriceMath.sol\":{\"keccak256\":\"0xf8079fe6e3460db495451d06b1705e18f1c4075c1af96a31ad313545f7082982\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://582fc51546723a0a8acccf782f69b530bacf9b3ef929458e82569b7121f0b138\",\"dweb:/ipfs/QmSBXcmqZdFsM7M4sRaiyQAxykCeMNFKyKgBcwSMTw1bcF\"]},\"lib/v4-core/src/libraries/StateLibrary.sol\":{\"keccak256\":\"0x96db333ee126a841dd959e38e452cc59d73583cb0437a1d48b2052e33a74f952\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8672bba1eb69608299b0904f4ff305238eb18479d371c26518f278c9ee184cd0\",\"dweb:/ipfs/QmTLu3s6ECvsEDHStQv8HTVHYtvkviBbdjPrFJd4SpVRFY\"]},\"lib/v4-core/src/libraries/SwapMath.sol\":{\"keccak256\":\"0x6baa782ae523269c079cc763639a9b91a25fcfa1743c049c76e43741ef494bd9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://035c337e62e05262a5bd5d3bc85bc9a383c1013001216b429f49cf1e129a0812\",\"dweb:/ipfs/QmU7s4h58Fh2A6mM8yeorZ2ygwEJMQw8zdZLLkHeDoSWxD\"]},\"lib/v4-core/src/libraries/TickBitmap.sol\":{\"keccak256\":\"0x6779f89e28a0b4af6e09d518caf014b7e8fc627400f5561f86fed11635b1458a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a64dee983106de3be3f968be94368c1e37592f5418aa2a39e8dd358d5a962b0d\",\"dweb:/ipfs/QmYuECZTiEeQVxDLYx6pBSSnVrg56Apw75bugQiM3FmGwy\"]},\"lib/v4-core/src/libraries/TickMath.sol\":{\"keccak256\":\"0x4e1a11e154eb06106cb1c4598f06cca5f5ca16eaa33494ba2f0e74981123eca8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a79a57f7b240783b045168d1c4f774ac1812caf8f9a83cb6959a86b0b07b6c70\",\"dweb:/ipfs/QmTb5kvxwDNW8jDuQaqdJ445cCFejNkUqEB17Bjo8UBiva\"]},\"lib/v4-core/src/libraries/TransientStateLibrary.sol\":{\"keccak256\":\"0x7d1e0875747bd89b32c25f1a48da2766e5f4aff1f671ad5f3c0c07ebbbcb946a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d76cfeb1cb60595b41ecc51c8a12fb4bf63a7fc733d0b1a2e3adb55abeb1f9d5\",\"dweb:/ipfs/Qmb8oX7DtsRpw3tTtdWZwGhauj1evq43d3PLwe4nSDAKkV\"]},\"lib/v4-core/src/libraries/UnsafeMath.sol\":{\"keccak256\":\"0xa6e55e0a43a15df2df471d9972cd48f613d07c663ecb8bbeaf7623f6f99bcce4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02ea6e13879fc5a5f35149a2f1cd8af3a1f0877ff69101dad53841d16f515572\",\"dweb:/ipfs/QmcpL4gdG6hL2w1wqs2Vw4J1EFCwBs9T1Qd4p16CtECQkn\"]},\"lib/v4-core/src/test/ActionsRouter.sol\":{\"keccak256\":\"0x14dee9e42a1df016ee93959efbff2989c0f5fc3be2583cc7f220e8c99bc1ca52\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://cede28a88b18e6506407d4f35787fb2891a6023a363b15beb5c3af3d57ceaeef\",\"dweb:/ipfs/QmbwcWHBnD9615BPSpPZ7hTuCCXG9BWHdHQS67KRtfrEqR\"]},\"lib/v4-core/src/test/BaseTestHooks.sol\":{\"keccak256\":\"0x8bb1b533b9df117bc4c85ef9d4c2afa7758771581a752e0a2a69dcae1041e546\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://eebf2728b8bda26bfd0e8c9726950f9cad3f2b8ffa5951117f2c2a9534e37ba6\",\"dweb:/ipfs/QmPCbUDp3e3sF5EPfte4v3VEF9Lhz8db6jLhZQJxXDvBSE\"]},\"lib/v4-core/src/test/PoolClaimsTest.sol\":{\"keccak256\":\"0x12833a6562b06737ebb1b08a8a8ef233314f0b9e03129cff3550d9fd4c184986\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://09d31189420ccd828f8e529782c9e1e31b0ce3f07f59efb6db5a8848395e7887\",\"dweb:/ipfs/Qmb4rosxr2DLxUAH6qUDfqVbj1CfnzrDwxfLLjpneMSwRW\"]},\"lib/v4-core/src/test/PoolDonateTest.sol\":{\"keccak256\":\"0x5e517fea38336bb86419f7280d5f80b26fe8cab9eac1cf400e27f87562d3d105\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5528c6a97eefbb94607d1a2aa07b1ec6f9c9b955b5f4a123ee88beabf6a03deb\",\"dweb:/ipfs/QmYfcaX1vkzjb1s389Rj7VsvCttB5wdarP17vyHWiejbqq\"]},\"lib/v4-core/src/test/PoolModifyLiquidityTest.sol\":{\"keccak256\":\"0x4a3ca2a5ed763efa34d9dfa8b90cafcff6b42a0903c6f20815c1a51e785b3af3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://e47a2fe202e60b0a58fd01acf1d3d021266903f81965302b60cace8a4c7d37d1\",\"dweb:/ipfs/QmcYmtXwL1F45tFLP2DA5KbU9icmcvj5rJCEkpMHJcwGrK\"]},\"lib/v4-core/src/test/PoolModifyLiquidityTestNoChecks.sol\":{\"keccak256\":\"0xf3c98e8674634ccbc96a8a234631c888e5915b1f26531acbe0540e145063f093\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://e26d6ea447b8ff4d07fa4999dca110a7c6a3443793c6c451ff81951a5a2beb58\",\"dweb:/ipfs/QmZf2wixTDBwSzGgPeAQWAY1jZpFXcMLLfBxUnCuKSKXey\"]},\"lib/v4-core/src/test/PoolNestedActionsTest.sol\":{\"keccak256\":\"0xa57a52caf5227e13bf2e4592a3dabf30839d78b6c1a14e7e074dd214f101355e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4e2aba8b16522cee958cc4b214ab9fc88b8929d7f4d67fec8e514f80eea5a765\",\"dweb:/ipfs/QmSqA2QY1pSvD7NXjWwpNKnh41yT9kVWVBM5KnddaCytVx\"]},\"lib/v4-core/src/test/PoolSwapTest.sol\":{\"keccak256\":\"0x3d769a76b948910a1a2321435e8d19156ff767ad3ddbd5abe4fa60d1e9b11ac0\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4bb4ca24457237b3af7a8023f19d667d20a60066cbf911b728968f34b6055753\",\"dweb:/ipfs/QmXVNWTHDcVbQrf6Y82j9whpWyYmgWvBJqYZ3Vp8to3H6j\"]},\"lib/v4-core/src/test/PoolTakeTest.sol\":{\"keccak256\":\"0xcdc76eb93c349a5f5c30abff0438d5599427ac6f6892e0abf8d0346c46244368\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5d005b6672e38d7c673677be08e041e32670a4a64bd3b92dc07e29d1609c5193\",\"dweb:/ipfs/QmZVqyEz1BgYNmyAPooef5c77yjj4A2e9ooWfrJ2SducJ2\"]},\"lib/v4-core/src/test/PoolTestBase.sol\":{\"keccak256\":\"0xc3b1c46487231f8416d053652cfb3c773d728705a6a1a542ea48e8d1cca44962\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://c2229b5915fcf17c58253b81cd4bbff62f7fbc6df8c370188c771fc40febf15a\",\"dweb:/ipfs/QmRu2Qb341KpA9k9prYH8buJek6vZiE7bxnyC9UkjVGBxV\"]},\"lib/v4-core/src/test/SwapRouterNoChecks.sol\":{\"keccak256\":\"0xc335bd807d977008a679c6fc5964542544324ef4c243a33c15c81fa38270e575\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://72d9c5ed82e70c0e669ff8e9e357ae59826e73e3d96cd11c401c605f0f1c4d0e\",\"dweb:/ipfs/Qmdrb1MCzw9GhxXado6nQrUBxVbDqNB7D3f7mRTAVQY5f5\"]},\"lib/v4-core/src/types/BalanceDelta.sol\":{\"keccak256\":\"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9\",\"dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H\"]},\"lib/v4-core/src/types/BeforeSwapDelta.sol\":{\"keccak256\":\"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782\",\"dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K\"]},\"lib/v4-core/src/types/Currency.sol\":{\"keccak256\":\"0x4a0b84b282577ff6f8acf13ec9f4d32dbb9348748b49611d00e68bee96609c93\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45f9d62ab3d51b52957279e353853ba1547c3182c9a1e3d1846ada4a90263b01\",\"dweb:/ipfs/QmS8NG84ccQS1yXVD8cv3eKX7J1UKxuJhbUfHTQR2opKF5\"]},\"lib/v4-core/src/types/PoolId.sol\":{\"keccak256\":\"0x308311916ea0f5c2fd878b6a2751eb223d170a69e33f601fae56dfe3c5d392af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669c2cd7ac17690b5d8831e0bda72822376c3a04b36afed6d31df4d75fe60918\",\"dweb:/ipfs/QmT6EpkxqU8VF3WsgrZ66F3s1cCQRffR95z1HDYZz7ph6y\"]},\"lib/v4-core/src/types/PoolKey.sol\":{\"keccak256\":\"0xf89856e0580d7a4856d3187a76858377ccee9d59702d230c338d84388221b786\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f3118fa189025695c37fdf0bdd1190f085ad097484d3c88cf4c56d1db65f639\",\"dweb:/ipfs/QmamXpgtB8GV1CaFLvqefPWSoikLDhMk1yU4heBnVzU8gi\"]},\"lib/v4-core/src/types/PoolOperation.sol\":{\"keccak256\":\"0x7a1a107fc1f2208abb2c9364c8c54e56e98dca27673e9441bed2b949b6382162\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ad2470383bc5595d5af17840c64971f457adac68895a4db41ba5c71a4478e07\",\"dweb:/ipfs/QmdwKhBHDZFuqXrR2BfDBD9r7rB2ULGQBznsajRTkTmL4c\"]},\"lib/v4-core/src/types/Slot0.sol\":{\"keccak256\":\"0x8b4912fac7e25ea680056748121113f902d56f8b2640f421d5c38d438db11c1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c19b1ff5b951fb54129268d2be37d82c8bb3ea6e29ac9bc78a8a37794fc082b8\",\"dweb:/ipfs/QmTAQ2mUoiT77hoWJAfn9pyoGy47qaevn45QHrbyovGt2C\"]},\"lib/v4-core/test/utils/Constants.sol\":{\"keccak256\":\"0x19c8d60baec46e1d43fa26f852718d4955154e844be14971e0597a63c22a9d43\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9bebdabeab512f3ca999c856641e3fa0d7b86082a01cf826f8647e188e0b35d3\",\"dweb:/ipfs/QmWLFXaTz4Wejd3ZHcyTMDEW8mqUzCfQahQxuVtryxM5Na\"]},\"lib/v4-core/test/utils/CurrencySettler.sol\":{\"keccak256\":\"0x2569dc02a637111de76e8e8c65f27510e7608273c19652fe6d31d76c983c19b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e9fbc9085e011e7208505c8ff7d402e4dba13b5105b25a24eac85b4a5921de58\",\"dweb:/ipfs/QmPyBSC5JvZrePDjdt2AiNt3EEUXgxX1orvTX1JZidz9PP\"]},\"lib/v4-core/test/utils/Deployers.sol\":{\"keccak256\":\"0x7565b26ec3a14fb6cb312d99a5642a64f8ccb435a0471963b900f56d54f736a7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ca989e1dccd6a1fc823cde3143ecb94b36c1f8351f582b5e56dfe5c14ce67ad6\",\"dweb:/ipfs/QmWP7xRGYBrTwkWcGz2xwEnCE3eUMo3BwpyKjnvY4WUK6J\"]},\"lib/v4-core/test/utils/LiquidityAmounts.sol\":{\"keccak256\":\"0x3ec40b1ddf34a1b33fe3934a2f1e4f66dbcf4378a4c672d0d6ce845ccf8bcae2\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6fc4a4688f272d4b55c1d0440ee5ebdc951e5299ff23ae79a4b52cc83e978b8a\",\"dweb:/ipfs/QmYJogZFeyaVeSFbYLCMdwEZtL8sWB8Ndx5AuepWdHsHGY\"]},\"lib/v4-core/test/utils/SortTokens.sol\":{\"keccak256\":\"0xdc74b25e20e04e5e4f3cf0bda4c81f70fac35562a74a47df56ef650fc7e3c844\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://324616a6154688bc9bd2d07777592df5a1fbdcc32acaa66bc7b0daa07f14e3f0\",\"dweb:/ipfs/QmPK8dG1LDkm67Qn89h51ExwEfsVJEcs33dL8dSDeZ4ChD\"]},\"src/V4Router.sol\":{\"keccak256\":\"0x492c743b65a9fc0e54c2a20b13c7d0230e93d4d5b41fba6aaf52f911dfdacf83\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://abcf73253c19bd5539480cc10f4c15263059fe0ebdfda9c12fae76612e8006e8\",\"dweb:/ipfs/QmP81WPqTM4x1E9RVgoaGaa6zC1PgfEZyvRXfX43MS9yEH\"]},\"src/base/BaseActionsRouter.sol\":{\"keccak256\":\"0xc9ed11618c4d82c5b723841a7d8eaf61600118c593e01e9929a193ecdb1ad63a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b048aa814ef6bdeec79eba67aa765186d74b58f98f4b2be913cc291a15986169\",\"dweb:/ipfs/QmRoFpoCG7DYJtc3uewYwwj2Eb4bXLrefgV3t8vekY3XWg\"]},\"src/base/DeltaResolver.sol\":{\"keccak256\":\"0x94a2da2be5c924df65a8e1e29f585bbe4c37777fedd43b45989c66d509a4a83c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://42bba590f6e817fd56328b74ae99bfdc4df57386d0a69ee22b9108341953ed36\",\"dweb:/ipfs/QmdusastK7FWYouLz9gvV5J3z8MQbNKLJNNHTrc1vi7DWw\"]},\"src/base/ImmutableState.sol\":{\"keccak256\":\"0x1867c9fa2f9b4fa73bab0fcdc9d19ccef4eeac552273d8b84a170cd1cc90350a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af2d699b439e13b599632fddfe82718aebd41055fba7c075f186675c588d1337\",\"dweb:/ipfs/Qmc111gckSKb9aESn3wRFLeLiS4KGujaUcaYJgRnCRfwQU\"]},\"src/base/ReentrancyLock.sol\":{\"keccak256\":\"0x66dd19f8eb40b7a86afea0e5b1dcada6268041027b0dfc493b80ca1f66af217d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac6d34517e2dd2c9cd03e16c5333defd003c134a4bff52ad95b673a5e8804609\",\"dweb:/ipfs/QmPSRdswfajCZCchH9j8rC7U3GLJ4w24gK35gxRVY3Qxz4\"]},\"src/base/SafeCallback.sol\":{\"keccak256\":\"0xd78b583df1b9ee06d58e83b84fc9f08971389b34dd34bc13db072e0c13c710da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0a47f4bcd6060c4462153b9a7c52a60a460ace91acb6ddd5492eab28ec26173\",\"dweb:/ipfs/QmdRCTRS1dhFjWEy6z577j4xz9J5HPfHBwcNzAic8G59oT\"]},\"src/interfaces/IEIP712_v4.sol\":{\"keccak256\":\"0xd7f7115476e307a0bfc32a0f0a0f5434e9e5ca62a6c5af1e18b75e48161bb408\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1600b953556da38a7adc5ad2a2925ec5fb138fecf8eec48743646543195b736\",\"dweb:/ipfs/QmarZi2aiLVAfHXgnDWV1cCFiZk2DdPW7KJnWHqzuRChJR\"]},\"src/interfaces/IERC721Permit_v4.sol\":{\"keccak256\":\"0x103adbba724ef536abc536fe8a4d7dc12880724c562109b69f2adce4a91fa017\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06f51b5a5a218e0bc866a83e7821be53c9db9de0ca921f16abd3d13ea0eab69d\",\"dweb:/ipfs/QmbnhLy992hpQZyphTkj7fpr6jKKVva2AzfmLiDZEuqHAk\"]},\"src/interfaces/IImmutableState.sol\":{\"keccak256\":\"0x36ab3100e87457ecf04887f4f540e34fd7f21d8e3b83880cb679239e60b7b06b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f290c7ce8e4832608d637a51b13dff95abecf6549485448e647a11c8ed01341\",\"dweb:/ipfs/QmfD1R6mTp8j4EjQXmQZW3vCh11EYFjnvoaw8rXRP27mMq\"]},\"src/interfaces/IMsgSender.sol\":{\"keccak256\":\"0xcc7d4e3f2fde34cf1ad9f05a8e43977e04d19624f71eb8a8c295feaf64b362a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e02044b5e19cc9ca24d23f55667142fde6daefba66408b56c4f620b625fc189\",\"dweb:/ipfs/QmUqWdRBqWi2tZkNAPhzLZbknP26TZbD8iRQMd3fdZGFgi\"]},\"src/interfaces/IMulticall_v4.sol\":{\"keccak256\":\"0x336bec303f7ff86497d2679464c5adad5040f412b3d0769ce5e1d2a42f7e2c08\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7734f047d98d331c8abc51ad9f358ceee0a6dcae8d89ac49084b84de0d2d42e7\",\"dweb:/ipfs/QmWij2h7mU36LsXhb9P6pkYXrSCua4ixeWaVFSrsEcEmPQ\"]},\"src/interfaces/INotifier.sol\":{\"keccak256\":\"0xfdc5187a98240a1691aae98b7dd2444d4c2bfb4746f3c34de9f3d18399c17c5e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://683af56401ec4f8817e8dfe150e7b3febaf0baaf40efe8d0d0475f735275f746\",\"dweb:/ipfs/QmRQ6S3nFnSc2jjDcQTvUJdTf4xKPojmvCkpvgyr6qTuVV\"]},\"src/interfaces/IPermit2Forwarder.sol\":{\"keccak256\":\"0xfad472937280e861125ff12aa6f9c2cf7440fbb20a2cc29485c24662ad4279c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31bfbc331f5972fc373d9469fd1ca1d14818db3275f21b7b590f20820cb4439d\",\"dweb:/ipfs/QmX3Bv9wfYpAFZKBcxKsQSXUrSC8mqNBdzh6XVMS72aNx9\"]},\"src/interfaces/IPoolInitializer_v4.sol\":{\"keccak256\":\"0x2e4feda94650a2642039e0309ffdec480ee050bc40864bf5e1dba42bb4dc9e98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://964c178b4da8bab9ef898b94bb26d7c17cc44c5cf20485f55dcf5e9c7e1b1d92\",\"dweb:/ipfs/QmVd2c3SYteyr5xZgUS4sDAiZF43dLwVAEKdCfvQbkZpRJ\"]},\"src/interfaces/IPositionManager.sol\":{\"keccak256\":\"0x62dfa0cbee8314ee7e6787db8bc1d364245c340f940875ac7ff11e89d074fc7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26f560c77d8a187bf93a710b827e3167eab3446922192fa8f92f208da2103834\",\"dweb:/ipfs/Qmbzp5gSYdTpMBF9aAb2GraxMEQZb5LRJCyg8VaRUyjTFc\"]},\"src/interfaces/ISubscriber.sol\":{\"keccak256\":\"0x34ceadec4a63019680e543fe73197f198a55c825d86e18f327840354760b57e7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31734feafe1fe162a0702ddf862fcc3bd97505931afb3c685033c0185d898051\",\"dweb:/ipfs/QmQEANYVyaXTNzXKcjUVfPhLU71Bix5vxQH75BpPWMkWgw\"]},\"src/interfaces/IUnorderedNonce.sol\":{\"keccak256\":\"0xd7f32fee74dc7d1a3b078ca1263961baccaa6bf434c79e8fe0e092e30c3e0ec3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e7d1e92d89d5f49c84aa82f3b259678c2c97a4473b22d753ca4411a6b0cec36d\",\"dweb:/ipfs/QmNZoQyminStaAdaLqoDLoWaBU5QWrWjXFjmBm4aFhzL8i\"]},\"src/interfaces/IV4Router.sol\":{\"keccak256\":\"0xc4133fae25e61cc2447d7331729f6035322d7c1fe26b39b225422bf98cc63459\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c24ff8428504e973e947a059f96289a66c520cd7f8ef47a3224f9cb6abdaf25\",\"dweb:/ipfs/QmVqxYnngWXXcCiuTC143vTEJrjZK5NXWB92pjvVbuJBQ5\"]},\"src/libraries/ActionConstants.sol\":{\"keccak256\":\"0x3d6f0e5b4a7b1e60bad93e73dce5db67fb66bebef11c31ed8355014a79aa03b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6dfa42e24b1b5c7f66e75304ab034fbb6768518eb2410ccfff8b3defdd1658f2\",\"dweb:/ipfs/QmQQ7fud9mmv7PEWPAQiNzeZhNkWf28Z6nCHc2e6WJFfa7\"]},\"src/libraries/Actions.sol\":{\"keccak256\":\"0x8efd4b8b289177ee27e557d9d0a5a9f973d66fe1eb1ef8959d316b11987ca830\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07fe35f194eb99465028f0546359befea574d844da53767d32f22b233c3bcc98\",\"dweb:/ipfs/Qmc19631uFxABTHAbGrDrroexi9GdyxWntaum1v8npPYz5\"]},\"src/libraries/BipsLibrary.sol\":{\"keccak256\":\"0x37ebf99f5d086d9d9f6e7cecbf4d62167f47c63c30248cfcb921e828f0d7a359\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4f8e68a66bb6c166d72cdba6ed6fb83a93f713b79c2c572e8058084eb90ab6c\",\"dweb:/ipfs/QmY32FxtSBRf9PJzNUVzXqFY4i2ApTPHTUMpCBGovd2zo3\"]},\"src/libraries/CalldataDecoder.sol\":{\"keccak256\":\"0x26df49e13fb5410fd4db253cca877dfdfb3a1ba03e394d054c0e0514a88a56e5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72a0c98c52171708f332f83d517deeb97fdd50ecf28f2510e1866e54593a6ff8\",\"dweb:/ipfs/QmY4LiDUfSKGj86nML7B6a8euiPciUqwYehasAyAVnMCHq\"]},\"src/libraries/Locker.sol\":{\"keccak256\":\"0x5c0859290a277fbfba8579b506426d3fc4b2ff7d8b691c03dd23aa85797fdae1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://18ad9effea8da74b9988373dddddd6669f11701fc954f77d2cb58beb9a9cc3ad\",\"dweb:/ipfs/QmQdBMoXdVACo6k6rumWj15UPDCqGpWNSPvQbejxKuV9RJ\"]},\"src/libraries/PathKey.sol\":{\"keccak256\":\"0xbbd79ffefe045f025263e389539021266fb4d371463aefba405e1ff1d3fcf9bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d1c47b81a01218be46ee79f0a8837095479b94dc5cfd18abbf2006709f0ea89\",\"dweb:/ipfs/QmRb6CQ13Zp7f3WF5jbZtsF2szhxpPgcuWs9mjwQXxzqtg\"]},\"src/libraries/PositionInfoLibrary.sol\":{\"keccak256\":\"0xc5ddf96bd088bc87ea50a20f907fc932fb28397a42682a301b268a11b7f34078\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7dfeb4dc747537240f8167243e8066b6f5f08057386fb8bda93f82973fc18ad6\",\"dweb:/ipfs/Qmby9DAAaHj8hjsMUnqY3vjqCHKGAKrT5EULMmeGcjbbGx\"]},\"test/mocks/MockV4Router.sol\":{\"keccak256\":\"0x62fcb424645af503ff11d47d4f872f5358671bbfd95a87b184637764a861f1ab\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f289cb40776aa4533f621cbf1fbced441ee1420ecc3cc97484d66e16e24e3f45\",\"dweb:/ipfs/QmXoYhsSKm8PBoFqysYcZ11FRNfzvLEJ2z3Yw7ag3xoAKs\"]},\"test/router/Payments.gas.t.sol\":{\"keccak256\":\"0x6c98c7b63e7a4e70dace1dd14818feeb2058e773c06022903a8645d6cc853986\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://cfa62c13ee3a7e06328d58743697e75735268b2672e2c409038888e3ae4c5e06\",\"dweb:/ipfs/QmQNZV2YJKMwpv32Zgp1zehEkCFyw3rA4DujK9f76VY2oH\"]},\"test/shared/HookSavesDelta.sol\":{\"keccak256\":\"0x3a2c5629e37b0d999ffb27c8f528b1f5877bc4f7fbcc148a5cfa663d1a509eda\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://84d35648d09735095eb62b90f5eefc59f99f4246903d947f97dac68ca991d985\",\"dweb:/ipfs/QmPmnJ2j1Rn9BYKrFSvuBB4y45CJyEYwqzJdYKxancm89Z\"]},\"test/shared/LiquidityOperations.sol\":{\"keccak256\":\"0x096251cfe2acb56b25893366ae766eede53b69aba83f85f982d1ca72cdc42753\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60d12773ef8f7b0befdb8d0348bd562ef839c6e3681e8f357bfe8d24e5923f46\",\"dweb:/ipfs/QmXaT4qoG23TRDJVpdcXiJUWwwSgV5EddyfnL22oA8PbzN\"]},\"test/shared/Planner.sol\":{\"keccak256\":\"0xc2a26375605104a06d9f0b7a0d5e83edd8730a9eab047f6e86f6ed2569adf174\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8a2dddae573fe2f88e742e66192c2e580db2edc23761b5c16bfbb04556430a17\",\"dweb:/ipfs/QmZPLofzBrot14HMnve7LX17KhNNskh7q5FLP2uMRGqbZk\"]},\"test/shared/PositionConfig.sol\":{\"keccak256\":\"0x08990d795c0862c45fc34458310e0f3aaa7629715ca2bcc4df82f3530c08beaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://803f7bff618b759d05103418d52d6363e8f25312effb06eace7168ff24a010f2\",\"dweb:/ipfs/QmcWWnjBvHGZaj9XaAKDwqRot5xzYc1jrwqvRGghe8jMjd\"]},\"test/shared/RoutingTestHelpers.sol\":{\"keccak256\":\"0x8d7611e792004e0db663b7cbe48a842f313014a81acf44f56aa62349a41f9b00\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a90c4f095b9d20cdc8d7a1f82de22ef32260f0dc33a5b4e74a4088ba0992aae\",\"dweb:/ipfs/QmeVu7BuncejQtfm3PGPcU6RopMNL8Ts4jgb3TA3EsKK47\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LIQUIDITY_PARAMS","outputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int256","name":"liquidityDelta","type":"int256"},{"internalType":"bytes32","name":"salt","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_PRICE_LIMIT","outputs":[{"internalType":"uint160","name":"","type":"uint160"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MIN_PRICE_LIMIT","outputs":[{"internalType":"uint160","name":"","type":"uint160"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"REMOVE_LIQUIDITY_PARAMS","outputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int256","name":"liquidityDelta","type":"int256"},{"internalType":"bytes32","name":"salt","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SWAP_PARAMS","outputs":[{"internalType":"bool","name":"zeroForOne","type":"bool"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"excludedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setupRouterCurrenciesAndPoolsWithLiquidity"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzArtifactSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"string","name":"artifact","type":"string"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_gas_swap_settleFromCaller_takeAllToMsgSender"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_gas_swap_settleFromCaller_takeAllToSpecifiedAddress"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_gas_swap_settleWithBalance_takeAllToMsgSender"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_gas_swap_settleWithBalance_takeAllToSpecifiedAddress"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains/=lib/v4-core/node_modules/@ensdomains/","@openzeppelin/=lib/v4-core/lib/openzeppelin-contracts/","@uniswap/v4-core/=lib/v4-core/","ds-test/=lib/v4-core/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/v4-core/lib/openzeppelin-contracts/lib/erc4626-tests/","forge-gas-snapshot/=lib/permit2/lib/forge-gas-snapshot/src/","forge-std/=lib/v4-core/lib/forge-std/src/","hardhat/=lib/v4-core/node_modules/hardhat/","openzeppelin-contracts/=lib/v4-core/lib/openzeppelin-contracts/","permit2/=lib/permit2/","solmate/=lib/v4-core/lib/solmate/","v4-core/=lib/v4-core/src/"],"optimizer":{"enabled":true,"runs":44444444},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"test/router/Payments.gas.t.sol":"PaymentsTests"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/permit2/src/interfaces/IAllowanceTransfer.sol":{"keccak256":"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29","urls":["bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0","dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN"],"license":"MIT"},"lib/permit2/src/interfaces/IEIP712.sol":{"keccak256":"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138","urls":["bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72","dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/StdAssertions.sol":{"keccak256":"0x4584f551c3a875c26423c1e50a77179bc2f9c9c1ee6d0f0c6be0f89ca5ee8270","urls":["bzz-raw://ef118876a862b60ba8a6612b8b3f3a6c226e11a0071a2e9695f021586d1bfdbe","dweb:/ipfs/QmXd2vD91PkvoFWasFkgbDi89PctmgsHVxGvGNyhjmRK2b"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/StdChains.sol":{"keccak256":"0x7dd11ac4db798fa196e00a0cfa288ce984acac881f1f34de03fe3187deed58de","urls":["bzz-raw://2c15fb03d5545e2d8d3948661596410edec5ec278a73988914b14a05d0d54557","dweb:/ipfs/QmWGjkLgp4wSrTrFxF8cmhghaXQp5VyXYQvWE1DUTPL4rG"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/StdCheats.sol":{"keccak256":"0xc28b654cfbcafb8f7688c8dc69134921bb4841c82ddc2e5f27bcf5d8eb2177cf","urls":["bzz-raw://3f1875b52fb32efefdc467d9566bf93d72dad036547ce6955e4f7a318eea9d6f","dweb:/ipfs/QmbgbSX8JajLzTyWcPqrYAcsQcHNuGTFTKdQ3HNTvyRgdj"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x4dab3021edfa9511bbdd80c48f060ef62eaf457f99eaf841f561fc2557d9a08d","urls":["bzz-raw://07668628673174cf8f27f8f4e1f862bab775013ec247eb34f698c5005f229391","dweb:/ipfs/QmPJsiiYwmCZXMsHmQv5tg8VF3CAhNdat7WnKLTWZZH2v5"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/StdJson.sol":{"keccak256":"0xbc0132abe1c2accc2867c0f03667afffdf92f3e95a581bb03c9557eaa38ea500","urls":["bzz-raw://eb6fab37dc73c219cfbb7b4f4998bcf7677ca5397a867e850f40232192073974","dweb:/ipfs/QmUHsbVdp9SKmgek7ZfPcLTKrpZFXpqaqt4sVejzxGEQL3"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/StdStorage.sol":{"keccak256":"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc","urls":["bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57","dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/StdToml.sol":{"keccak256":"0x58a72c765ed3f7ff6b105509689658795b8a3739b8931772a497155878381861","urls":["bzz-raw://b4a3746f4fabaeb980bd77d9e091d3904ee38a6c0e191bfa8ba6874c6f8558a3","dweb:/ipfs/QmUfFDMEn461FgGEXt5HicyGD54sc28sLaQ9JRWDMBKed8"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/StdUtils.sol":{"keccak256":"0x4a5853bb9688c4e1c65626036cddd8ea2af84ef1046b704ddc3782d84a892410","urls":["bzz-raw://09c1024e6aac9657312fcfcf5c3dee62c22edf9f74a1065e6924c4ec710ecafa","dweb:/ipfs/QmRNURoTUkd6DiZnf8yY8o3stJpVQBifopdSpQgP9RhvRr"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/Test.sol":{"keccak256":"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe","urls":["bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e","dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/Vm.sol":{"keccak256":"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e","urls":["bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1","dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD"],"license":"MIT OR Apache-2.0"},"lib/v4-core/lib/forge-std/src/console.sol":{"keccak256":"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5","urls":["bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57","dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/console2.sol":{"keccak256":"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f","urls":["bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d","dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0xbfbb755bb379f58b97699f7cda0e9a2b9113daaa072e41b280a5ce6a3bff44c9","urls":["bzz-raw://5ae0c31d29db14d6a0e9b62d33d550feb307f48a6f45068901a013321f337f87","dweb:/ipfs/QmX25DVXW6XZDvRm6SNBGCWrZQ6oNhdq5CmgtVocvsUdwv"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11","urls":["bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab","dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3"],"license":"MIT"},"lib/v4-core/lib/solmate/src/auth/Owned.sol":{"keccak256":"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea","urls":["bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4","dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx"],"license":"AGPL-3.0-only"},"lib/v4-core/lib/solmate/src/test/utils/mocks/MockERC20.sol":{"keccak256":"0x525129ccb4103c9ecb8f235618d2ff4a8ffde4b8654f7c17766ad175d10ef466","urls":["bzz-raw://45692a21807ba815c0cf0bfc7d633a14a6cb9ba863ab53f18fc639375a72125e","dweb:/ipfs/QmSrqxyodjDtSU1Dc6G3ScnNc9CFjMnAeHpK8a8guM3nJu"],"license":"AGPL-3.0-only"},"lib/v4-core/lib/solmate/src/tokens/ERC20.sol":{"keccak256":"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10","urls":["bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35","dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97"],"license":"AGPL-3.0-only"},"lib/v4-core/lib/solmate/src/utils/SafeTransferLib.sol":{"keccak256":"0x6ab948013c2c7ca6351e593600425b0ec6df9035320280c678e735bce16e996b","urls":["bzz-raw://2ab977d0eeb2bf458f9798250215c646d2f3b1f90b5a7e2b506fdf3335c0f060","dweb:/ipfs/QmYPRoPhNtBAmCSq7imN1scMVpKNQvMTpoqab3tXUx5Tnv"],"license":"AGPL-3.0-only"},"lib/v4-core/src/ERC6909.sol":{"keccak256":"0x22476a1c183be1b547a509b3e6906abaccb6408375f798fce805ff7877aca09f","urls":["bzz-raw://e85580e1563ea0556705132fb6bd038ca4aa355749039923853ebcb76b7c84e6","dweb:/ipfs/QmVoxPrbagRKpFdRWoaCSKmStYLZrhNFuedcuyGycSGR7q"],"license":"MIT"},"lib/v4-core/src/ERC6909Claims.sol":{"keccak256":"0xf496ef3a5a9bf4f4aa2eec951dbeff09a01ef058bb9f64b1664cf46c9e85cd49","urls":["bzz-raw://2a0a97c359a7a4c526ba9fc4ceb20af8050f9cf7886ea7e1f38c9c10b4a3750c","dweb:/ipfs/QmPy6pCQbvzCdJRqG1thHRSwEZoLBAaLo3KQnueL3wxb8i"],"license":"MIT"},"lib/v4-core/src/Extsload.sol":{"keccak256":"0x784074bd04a1541c7c6ace074e30245746133fd37c3ba16b025dce394db986ce","urls":["bzz-raw://35f1f4fb306bf01e98b7eca012b85f3ab978b39fa5136193363e2519c4435e51","dweb:/ipfs/QmeGrjGMt71dJymVhkEadh5CuCW5GxRqNEZLi5AJxvC5tU"],"license":"MIT"},"lib/v4-core/src/Exttload.sol":{"keccak256":"0x769ee2733a08112c652274f4b972c45fb56cc46109f233b9a30f81561b15dd54","urls":["bzz-raw://dd19e88d50ae77c1ed5581baca1c75b3fb828d0b58cded90188d55c4e336266c","dweb:/ipfs/Qmc8YM6Tfpwwa4qivHHzRxNdhZzdzGiD7VexWsDvkaQTxG"],"license":"MIT"},"lib/v4-core/src/NoDelegateCall.sol":{"keccak256":"0xacb81aecb7c74c86650a035462dae38c313b4b7b5842e14b645f864f61da2b51","urls":["bzz-raw://363a0e15fc30ea68a5d52a78772facecde6433ea156e3ec2ce25068c97cd5ad6","dweb:/ipfs/QmYhWaF3wH71SDx5TZr9qEXXQf5FYQvdjoo3B2qWiAbm18"],"license":"MIT"},"lib/v4-core/src/PoolManager.sol":{"keccak256":"0xf9ff5d5e261a21a5e72a01c5badd988beeff437e0f6b82fd56f80be42d727c07","urls":["bzz-raw://4a92a25102c73245e1343f0dbc8400b8bac3c464ba064aa5574b9584a12e6c72","dweb:/ipfs/QmfCcvspZ8XzDeQjEd2FfM76wzkfE9KDgBoqAcqhf3nsnu"],"license":"BUSL-1.1"},"lib/v4-core/src/ProtocolFees.sol":{"keccak256":"0x81362ef1d19670b41cefc2b6f2dc0333b6743fe39a1929edd36bd9b6a1111755","urls":["bzz-raw://de483bbd8bf9a53b9644d7f9a6a6fe77ae527b755cf29e1db8725de89e70c7aa","dweb:/ipfs/Qmex3PcgJGbYsuDNaMXc8mg5fW1DNaPGiNToPpAAzz6GEq"],"license":"MIT"},"lib/v4-core/src/interfaces/IExtsload.sol":{"keccak256":"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43","urls":["bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1","dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN"],"license":"MIT"},"lib/v4-core/src/interfaces/IExttload.sol":{"keccak256":"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937","urls":["bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8","dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY"],"license":"MIT"},"lib/v4-core/src/interfaces/IHooks.sol":{"keccak256":"0xc131ffa2d04c10a012fe715fe2c115811526b7ea34285cf0a04ce7ce8320da8d","urls":["bzz-raw://3b212358897db5d99c21244d88f97b2e788527552cb430629b472a8cc6289aec","dweb:/ipfs/QmQtwV4dDe2RYk2ErLpaAX7U82jWh1L6Lw2HRuKDvBi84G"],"license":"MIT"},"lib/v4-core/src/interfaces/IPoolManager.sol":{"keccak256":"0xbdab3544da3d32dfdf7457baa94e17d5a3012952428559e013ffac45d067038e","urls":["bzz-raw://ce95ff864468e37c76adf71df061d4f3d6f3a5ec1f9bc3aea090463bc72798f4","dweb:/ipfs/QmSbWh1pLbz51yQF4HEu5NRhr8XVv9JYGEw1hq1HudAnCi"],"license":"MIT"},"lib/v4-core/src/interfaces/IProtocolFees.sol":{"keccak256":"0x32a666e588a2f66334430357bb1e2424fe7eebeb98a3364b1dd16eb6ccca9848","urls":["bzz-raw://85751d302125881f72e5f8af051c2d5d9b1f606ebaea8ca7d04fccdd27cc252d","dweb:/ipfs/QmeRwomeh9NWm6A6fgNA4KZPQZHPpdKsPQyYsHSFmvud7J"],"license":"MIT"},"lib/v4-core/src/interfaces/callback/IUnlockCallback.sol":{"keccak256":"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719","urls":["bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b","dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK"],"license":"MIT"},"lib/v4-core/src/interfaces/external/IERC20Minimal.sol":{"keccak256":"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f","urls":["bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de","dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d"],"license":"MIT"},"lib/v4-core/src/interfaces/external/IERC6909Claims.sol":{"keccak256":"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48","urls":["bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f","dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK"],"license":"MIT"},"lib/v4-core/src/libraries/BitMath.sol":{"keccak256":"0x51b9be4f5c4fd3e80cbc9631a65244a2eb2be250b6b7f128a2035080e18aee8d","urls":["bzz-raw://fe98bbd5498e912146b9319827fc63621eb66ff55d5baae0fa02a7a972ab8d1e","dweb:/ipfs/QmY5hCuyrtgsJtk4AavrxcvBkRrChfr4N6ZnhdC8roPpNi"],"license":"MIT"},"lib/v4-core/src/libraries/CurrencyDelta.sol":{"keccak256":"0x80dbd898cf0f90c5c27192689b16c34edc765d6ab21b8358e3bb792c7fef238c","urls":["bzz-raw://107698da024313f132d9fe28deb920b5c03d14624889c3ce5720e588f03635bb","dweb:/ipfs/QmQteUbhj5SsWbvSF6U8niBUSrETqVbEwULc8E7vS4Kbnn"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/CurrencyReserves.sol":{"keccak256":"0x1576616129933fcdf3b684cea33cffd9c95e18fafbd2832a8c48ac3d8526d4c3","urls":["bzz-raw://33b050efb9b81803b18f562271e7cca2ec5362c4d505860d6419b4a345636725","dweb:/ipfs/QmQtFtTwKZ5pFVGD2ENDUXvp7ECFvzqeCuJ1miJcUHdmiX"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/CustomRevert.sol":{"keccak256":"0x111ed3031b6990c80a93ae35dde6b6ac0b7e6af471388fdd7461e91edda9b7de","urls":["bzz-raw://c9ea883c98d6ae1829160d0977bb5195761cfd5bc81692d0a941f45717f594cd","dweb:/ipfs/QmZPwxzaeMNv536wzrAMrMswu7vMHuqPVpjcqL3YvCMoxt"],"license":"MIT"},"lib/v4-core/src/libraries/FixedPoint128.sol":{"keccak256":"0xad236e10853f4b4b20a35a9bb52b857c4fc79874846b7e444e06ead7f2630542","urls":["bzz-raw://0de1f9a06520b1a689660943faa14fc0b8344ab41fab9e6012ea34bff4b9b3eb","dweb:/ipfs/QmRNMPTyko7W6d6KxuTsnDBa9oZgDK4xiwRRq3H9ASTbwy"],"license":"MIT"},"lib/v4-core/src/libraries/FixedPoint96.sol":{"keccak256":"0xef5c3fd41aee26bb12aa1c32873cfee88e67eddfe7c2b32283786265ac669741","urls":["bzz-raw://4de298d02f662a1c36c7be0a150f18c2a161408a5d3e48432e707efd01fac9a4","dweb:/ipfs/QmSiM4oeMmLVKmAtJXz2feYkv4R9ZcyBpkTRW5Nhw5KDyJ"],"license":"MIT"},"lib/v4-core/src/libraries/FullMath.sol":{"keccak256":"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2","urls":["bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52","dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC"],"license":"MIT"},"lib/v4-core/src/libraries/Hooks.sol":{"keccak256":"0xd679b4b2d429689bc44f136050ebc958fb2d7d0d3a3c7b3e48c08ab4fba09aaa","urls":["bzz-raw://287190cb72840e5eb63cc7a8a1d0b9150af17d8e4ea0323f47c7e7928f2033cb","dweb:/ipfs/QmVfqWBnAQM2jUcuREDdvjcP21gNuLU35CoL3NG5CEhNcx"],"license":"MIT"},"lib/v4-core/src/libraries/LPFeeLibrary.sol":{"keccak256":"0xbf6914e01014e7c1044111feb7df7a3d96bb503b3da827ad8464b1955580d13b","urls":["bzz-raw://33823c20a91882c9aacdcbb02f0558c05209f4d5954aa6dd4fa17c95664db475","dweb:/ipfs/QmR7owkFgpfztpp1QUg3ut3nw9iPVQqLGP4hzgmZtRUQ2J"],"license":"MIT"},"lib/v4-core/src/libraries/LiquidityMath.sol":{"keccak256":"0x000ef2eadcc1eb7b2c18a77655f94e76e0e860f605783484657ef65fd6eda353","urls":["bzz-raw://a766b620a7a22798b43c6c1f23b5c6cff0ebf588deb89842bad05208d448cd99","dweb:/ipfs/QmVKjaFJdzkqA3ey2Byum8iTCMssWVD8MmVC8rw62Tj5WD"],"license":"MIT"},"lib/v4-core/src/libraries/Lock.sol":{"keccak256":"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5","urls":["bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c","dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/NonzeroDeltaCount.sol":{"keccak256":"0x0666ebd5d3528d7d52c48538296367a4cff97a578cf13365c51983fae3219b87","urls":["bzz-raw://d27f1be3bd09d85c53d3e6a539dd6529ddd8b2b764ccb47fd7765fc81f9add59","dweb:/ipfs/QmQdZujNXhKEXQBkKtF5jbdvo1yXMqPDUoBBaF9S5u3Kpm"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/ParseBytes.sol":{"keccak256":"0x7533b13f53ee2c2c55500100b22ffd6e37e7523c27874edc98663d53a8672b15","urls":["bzz-raw://82449058634fde28a085f3c59a6a5f412550c02181590593fd84c3e8b329aa17","dweb:/ipfs/Qmev4E9Au6SsE4wsArChCwfg94KhHc5gYsEsZUnjF5sRLa"],"license":"MIT"},"lib/v4-core/src/libraries/Pool.sol":{"keccak256":"0xb8191707c5913f5e2f589cec5167e3fac4a5b86bd84f61fdba0fbe6a8ce8a3a0","urls":["bzz-raw://a609f9c365f05becf61877d9dc767e7825bce8c34607dbfc0f0437a71f6ff407","dweb:/ipfs/QmThDUzLePs2Hbp6XTpRSHT67rdsjQLhdmS6krm8cpKSey"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/Position.sol":{"keccak256":"0xddab2a831f1befb6abf5567e77c4582169ca8156cf69eb4f22d8e87f7226a3f9","urls":["bzz-raw://c79fe61b50f3b70cff503abfa6f5643fcbefb9b794855bee1019b1e6d9c083b2","dweb:/ipfs/QmbKmYNQesaMz8bo1b7TMHQcAwaDd3eDPrE5pAdPPZTtk5"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/ProtocolFeeLibrary.sol":{"keccak256":"0xf483001899229ab10f5a626fe1c5866134d9e965b48ce6cf55ce0d7f74f7d8ec","urls":["bzz-raw://6ba9211a7f69bbb44649c35211eb29d193c09032ec600064ef9d04b4625dd8ba","dweb:/ipfs/QmQSjQvtguYgMJSkkKRhHjxasfX9xfTbrbcZ1QmjUVb787"],"license":"MIT"},"lib/v4-core/src/libraries/SafeCast.sol":{"keccak256":"0x42c4a24f996a14d358be397b71f7ec9d7daf666aaec78002c63315a6ee67aa86","urls":["bzz-raw://c3db86e2ba3679105fc32edec656c70282e1fede6cab11217702443f6c26fa59","dweb:/ipfs/QmX4yaaSPdKQzYNRsezjTvZKsubzS8JRTEGFD3fPpTTCcj"],"license":"MIT"},"lib/v4-core/src/libraries/SqrtPriceMath.sol":{"keccak256":"0xf8079fe6e3460db495451d06b1705e18f1c4075c1af96a31ad313545f7082982","urls":["bzz-raw://582fc51546723a0a8acccf782f69b530bacf9b3ef929458e82569b7121f0b138","dweb:/ipfs/QmSBXcmqZdFsM7M4sRaiyQAxykCeMNFKyKgBcwSMTw1bcF"],"license":"MIT"},"lib/v4-core/src/libraries/StateLibrary.sol":{"keccak256":"0x96db333ee126a841dd959e38e452cc59d73583cb0437a1d48b2052e33a74f952","urls":["bzz-raw://8672bba1eb69608299b0904f4ff305238eb18479d371c26518f278c9ee184cd0","dweb:/ipfs/QmTLu3s6ECvsEDHStQv8HTVHYtvkviBbdjPrFJd4SpVRFY"],"license":"MIT"},"lib/v4-core/src/libraries/SwapMath.sol":{"keccak256":"0x6baa782ae523269c079cc763639a9b91a25fcfa1743c049c76e43741ef494bd9","urls":["bzz-raw://035c337e62e05262a5bd5d3bc85bc9a383c1013001216b429f49cf1e129a0812","dweb:/ipfs/QmU7s4h58Fh2A6mM8yeorZ2ygwEJMQw8zdZLLkHeDoSWxD"],"license":"MIT"},"lib/v4-core/src/libraries/TickBitmap.sol":{"keccak256":"0x6779f89e28a0b4af6e09d518caf014b7e8fc627400f5561f86fed11635b1458a","urls":["bzz-raw://a64dee983106de3be3f968be94368c1e37592f5418aa2a39e8dd358d5a962b0d","dweb:/ipfs/QmYuECZTiEeQVxDLYx6pBSSnVrg56Apw75bugQiM3FmGwy"],"license":"MIT"},"lib/v4-core/src/libraries/TickMath.sol":{"keccak256":"0x4e1a11e154eb06106cb1c4598f06cca5f5ca16eaa33494ba2f0e74981123eca8","urls":["bzz-raw://a79a57f7b240783b045168d1c4f774ac1812caf8f9a83cb6959a86b0b07b6c70","dweb:/ipfs/QmTb5kvxwDNW8jDuQaqdJ445cCFejNkUqEB17Bjo8UBiva"],"license":"MIT"},"lib/v4-core/src/libraries/TransientStateLibrary.sol":{"keccak256":"0x7d1e0875747bd89b32c25f1a48da2766e5f4aff1f671ad5f3c0c07ebbbcb946a","urls":["bzz-raw://d76cfeb1cb60595b41ecc51c8a12fb4bf63a7fc733d0b1a2e3adb55abeb1f9d5","dweb:/ipfs/Qmb8oX7DtsRpw3tTtdWZwGhauj1evq43d3PLwe4nSDAKkV"],"license":"MIT"},"lib/v4-core/src/libraries/UnsafeMath.sol":{"keccak256":"0xa6e55e0a43a15df2df471d9972cd48f613d07c663ecb8bbeaf7623f6f99bcce4","urls":["bzz-raw://02ea6e13879fc5a5f35149a2f1cd8af3a1f0877ff69101dad53841d16f515572","dweb:/ipfs/QmcpL4gdG6hL2w1wqs2Vw4J1EFCwBs9T1Qd4p16CtECQkn"],"license":"MIT"},"lib/v4-core/src/test/ActionsRouter.sol":{"keccak256":"0x14dee9e42a1df016ee93959efbff2989c0f5fc3be2583cc7f220e8c99bc1ca52","urls":["bzz-raw://cede28a88b18e6506407d4f35787fb2891a6023a363b15beb5c3af3d57ceaeef","dweb:/ipfs/QmbwcWHBnD9615BPSpPZ7hTuCCXG9BWHdHQS67KRtfrEqR"],"license":"UNLICENSED"},"lib/v4-core/src/test/BaseTestHooks.sol":{"keccak256":"0x8bb1b533b9df117bc4c85ef9d4c2afa7758771581a752e0a2a69dcae1041e546","urls":["bzz-raw://eebf2728b8bda26bfd0e8c9726950f9cad3f2b8ffa5951117f2c2a9534e37ba6","dweb:/ipfs/QmPCbUDp3e3sF5EPfte4v3VEF9Lhz8db6jLhZQJxXDvBSE"],"license":"UNLICENSED"},"lib/v4-core/src/test/PoolClaimsTest.sol":{"keccak256":"0x12833a6562b06737ebb1b08a8a8ef233314f0b9e03129cff3550d9fd4c184986","urls":["bzz-raw://09d31189420ccd828f8e529782c9e1e31b0ce3f07f59efb6db5a8848395e7887","dweb:/ipfs/Qmb4rosxr2DLxUAH6qUDfqVbj1CfnzrDwxfLLjpneMSwRW"],"license":"UNLICENSED"},"lib/v4-core/src/test/PoolDonateTest.sol":{"keccak256":"0x5e517fea38336bb86419f7280d5f80b26fe8cab9eac1cf400e27f87562d3d105","urls":["bzz-raw://5528c6a97eefbb94607d1a2aa07b1ec6f9c9b955b5f4a123ee88beabf6a03deb","dweb:/ipfs/QmYfcaX1vkzjb1s389Rj7VsvCttB5wdarP17vyHWiejbqq"],"license":"UNLICENSED"},"lib/v4-core/src/test/PoolModifyLiquidityTest.sol":{"keccak256":"0x4a3ca2a5ed763efa34d9dfa8b90cafcff6b42a0903c6f20815c1a51e785b3af3","urls":["bzz-raw://e47a2fe202e60b0a58fd01acf1d3d021266903f81965302b60cace8a4c7d37d1","dweb:/ipfs/QmcYmtXwL1F45tFLP2DA5KbU9icmcvj5rJCEkpMHJcwGrK"],"license":"UNLICENSED"},"lib/v4-core/src/test/PoolModifyLiquidityTestNoChecks.sol":{"keccak256":"0xf3c98e8674634ccbc96a8a234631c888e5915b1f26531acbe0540e145063f093","urls":["bzz-raw://e26d6ea447b8ff4d07fa4999dca110a7c6a3443793c6c451ff81951a5a2beb58","dweb:/ipfs/QmZf2wixTDBwSzGgPeAQWAY1jZpFXcMLLfBxUnCuKSKXey"],"license":"UNLICENSED"},"lib/v4-core/src/test/PoolNestedActionsTest.sol":{"keccak256":"0xa57a52caf5227e13bf2e4592a3dabf30839d78b6c1a14e7e074dd214f101355e","urls":["bzz-raw://4e2aba8b16522cee958cc4b214ab9fc88b8929d7f4d67fec8e514f80eea5a765","dweb:/ipfs/QmSqA2QY1pSvD7NXjWwpNKnh41yT9kVWVBM5KnddaCytVx"],"license":"UNLICENSED"},"lib/v4-core/src/test/PoolSwapTest.sol":{"keccak256":"0x3d769a76b948910a1a2321435e8d19156ff767ad3ddbd5abe4fa60d1e9b11ac0","urls":["bzz-raw://4bb4ca24457237b3af7a8023f19d667d20a60066cbf911b728968f34b6055753","dweb:/ipfs/QmXVNWTHDcVbQrf6Y82j9whpWyYmgWvBJqYZ3Vp8to3H6j"],"license":"UNLICENSED"},"lib/v4-core/src/test/PoolTakeTest.sol":{"keccak256":"0xcdc76eb93c349a5f5c30abff0438d5599427ac6f6892e0abf8d0346c46244368","urls":["bzz-raw://5d005b6672e38d7c673677be08e041e32670a4a64bd3b92dc07e29d1609c5193","dweb:/ipfs/QmZVqyEz1BgYNmyAPooef5c77yjj4A2e9ooWfrJ2SducJ2"],"license":"UNLICENSED"},"lib/v4-core/src/test/PoolTestBase.sol":{"keccak256":"0xc3b1c46487231f8416d053652cfb3c773d728705a6a1a542ea48e8d1cca44962","urls":["bzz-raw://c2229b5915fcf17c58253b81cd4bbff62f7fbc6df8c370188c771fc40febf15a","dweb:/ipfs/QmRu2Qb341KpA9k9prYH8buJek6vZiE7bxnyC9UkjVGBxV"],"license":"UNLICENSED"},"lib/v4-core/src/test/SwapRouterNoChecks.sol":{"keccak256":"0xc335bd807d977008a679c6fc5964542544324ef4c243a33c15c81fa38270e575","urls":["bzz-raw://72d9c5ed82e70c0e669ff8e9e357ae59826e73e3d96cd11c401c605f0f1c4d0e","dweb:/ipfs/Qmdrb1MCzw9GhxXado6nQrUBxVbDqNB7D3f7mRTAVQY5f5"],"license":"UNLICENSED"},"lib/v4-core/src/types/BalanceDelta.sol":{"keccak256":"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f","urls":["bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9","dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H"],"license":"MIT"},"lib/v4-core/src/types/BeforeSwapDelta.sol":{"keccak256":"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78","urls":["bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782","dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K"],"license":"MIT"},"lib/v4-core/src/types/Currency.sol":{"keccak256":"0x4a0b84b282577ff6f8acf13ec9f4d32dbb9348748b49611d00e68bee96609c93","urls":["bzz-raw://45f9d62ab3d51b52957279e353853ba1547c3182c9a1e3d1846ada4a90263b01","dweb:/ipfs/QmS8NG84ccQS1yXVD8cv3eKX7J1UKxuJhbUfHTQR2opKF5"],"license":"MIT"},"lib/v4-core/src/types/PoolId.sol":{"keccak256":"0x308311916ea0f5c2fd878b6a2751eb223d170a69e33f601fae56dfe3c5d392af","urls":["bzz-raw://669c2cd7ac17690b5d8831e0bda72822376c3a04b36afed6d31df4d75fe60918","dweb:/ipfs/QmT6EpkxqU8VF3WsgrZ66F3s1cCQRffR95z1HDYZz7ph6y"],"license":"MIT"},"lib/v4-core/src/types/PoolKey.sol":{"keccak256":"0xf89856e0580d7a4856d3187a76858377ccee9d59702d230c338d84388221b786","urls":["bzz-raw://6f3118fa189025695c37fdf0bdd1190f085ad097484d3c88cf4c56d1db65f639","dweb:/ipfs/QmamXpgtB8GV1CaFLvqefPWSoikLDhMk1yU4heBnVzU8gi"],"license":"MIT"},"lib/v4-core/src/types/PoolOperation.sol":{"keccak256":"0x7a1a107fc1f2208abb2c9364c8c54e56e98dca27673e9441bed2b949b6382162","urls":["bzz-raw://4ad2470383bc5595d5af17840c64971f457adac68895a4db41ba5c71a4478e07","dweb:/ipfs/QmdwKhBHDZFuqXrR2BfDBD9r7rB2ULGQBznsajRTkTmL4c"],"license":"MIT"},"lib/v4-core/src/types/Slot0.sol":{"keccak256":"0x8b4912fac7e25ea680056748121113f902d56f8b2640f421d5c38d438db11c1b","urls":["bzz-raw://c19b1ff5b951fb54129268d2be37d82c8bb3ea6e29ac9bc78a8a37794fc082b8","dweb:/ipfs/QmTAQ2mUoiT77hoWJAfn9pyoGy47qaevn45QHrbyovGt2C"],"license":"MIT"},"lib/v4-core/test/utils/Constants.sol":{"keccak256":"0x19c8d60baec46e1d43fa26f852718d4955154e844be14971e0597a63c22a9d43","urls":["bzz-raw://9bebdabeab512f3ca999c856641e3fa0d7b86082a01cf826f8647e188e0b35d3","dweb:/ipfs/QmWLFXaTz4Wejd3ZHcyTMDEW8mqUzCfQahQxuVtryxM5Na"],"license":"UNLICENSED"},"lib/v4-core/test/utils/CurrencySettler.sol":{"keccak256":"0x2569dc02a637111de76e8e8c65f27510e7608273c19652fe6d31d76c983c19b6","urls":["bzz-raw://e9fbc9085e011e7208505c8ff7d402e4dba13b5105b25a24eac85b4a5921de58","dweb:/ipfs/QmPyBSC5JvZrePDjdt2AiNt3EEUXgxX1orvTX1JZidz9PP"],"license":"MIT"},"lib/v4-core/test/utils/Deployers.sol":{"keccak256":"0x7565b26ec3a14fb6cb312d99a5642a64f8ccb435a0471963b900f56d54f736a7","urls":["bzz-raw://ca989e1dccd6a1fc823cde3143ecb94b36c1f8351f582b5e56dfe5c14ce67ad6","dweb:/ipfs/QmWP7xRGYBrTwkWcGz2xwEnCE3eUMo3BwpyKjnvY4WUK6J"],"license":"UNLICENSED"},"lib/v4-core/test/utils/LiquidityAmounts.sol":{"keccak256":"0x3ec40b1ddf34a1b33fe3934a2f1e4f66dbcf4378a4c672d0d6ce845ccf8bcae2","urls":["bzz-raw://6fc4a4688f272d4b55c1d0440ee5ebdc951e5299ff23ae79a4b52cc83e978b8a","dweb:/ipfs/QmYJogZFeyaVeSFbYLCMdwEZtL8sWB8Ndx5AuepWdHsHGY"],"license":"UNLICENSED"},"lib/v4-core/test/utils/SortTokens.sol":{"keccak256":"0xdc74b25e20e04e5e4f3cf0bda4c81f70fac35562a74a47df56ef650fc7e3c844","urls":["bzz-raw://324616a6154688bc9bd2d07777592df5a1fbdcc32acaa66bc7b0daa07f14e3f0","dweb:/ipfs/QmPK8dG1LDkm67Qn89h51ExwEfsVJEcs33dL8dSDeZ4ChD"],"license":"UNLICENSED"},"src/V4Router.sol":{"keccak256":"0x492c743b65a9fc0e54c2a20b13c7d0230e93d4d5b41fba6aaf52f911dfdacf83","urls":["bzz-raw://abcf73253c19bd5539480cc10f4c15263059fe0ebdfda9c12fae76612e8006e8","dweb:/ipfs/QmP81WPqTM4x1E9RVgoaGaa6zC1PgfEZyvRXfX43MS9yEH"],"license":"MIT"},"src/base/BaseActionsRouter.sol":{"keccak256":"0xc9ed11618c4d82c5b723841a7d8eaf61600118c593e01e9929a193ecdb1ad63a","urls":["bzz-raw://b048aa814ef6bdeec79eba67aa765186d74b58f98f4b2be913cc291a15986169","dweb:/ipfs/QmRoFpoCG7DYJtc3uewYwwj2Eb4bXLrefgV3t8vekY3XWg"],"license":"MIT"},"src/base/DeltaResolver.sol":{"keccak256":"0x94a2da2be5c924df65a8e1e29f585bbe4c37777fedd43b45989c66d509a4a83c","urls":["bzz-raw://42bba590f6e817fd56328b74ae99bfdc4df57386d0a69ee22b9108341953ed36","dweb:/ipfs/QmdusastK7FWYouLz9gvV5J3z8MQbNKLJNNHTrc1vi7DWw"],"license":"MIT"},"src/base/ImmutableState.sol":{"keccak256":"0x1867c9fa2f9b4fa73bab0fcdc9d19ccef4eeac552273d8b84a170cd1cc90350a","urls":["bzz-raw://af2d699b439e13b599632fddfe82718aebd41055fba7c075f186675c588d1337","dweb:/ipfs/Qmc111gckSKb9aESn3wRFLeLiS4KGujaUcaYJgRnCRfwQU"],"license":"MIT"},"src/base/ReentrancyLock.sol":{"keccak256":"0x66dd19f8eb40b7a86afea0e5b1dcada6268041027b0dfc493b80ca1f66af217d","urls":["bzz-raw://ac6d34517e2dd2c9cd03e16c5333defd003c134a4bff52ad95b673a5e8804609","dweb:/ipfs/QmPSRdswfajCZCchH9j8rC7U3GLJ4w24gK35gxRVY3Qxz4"],"license":"MIT"},"src/base/SafeCallback.sol":{"keccak256":"0xd78b583df1b9ee06d58e83b84fc9f08971389b34dd34bc13db072e0c13c710da","urls":["bzz-raw://c0a47f4bcd6060c4462153b9a7c52a60a460ace91acb6ddd5492eab28ec26173","dweb:/ipfs/QmdRCTRS1dhFjWEy6z577j4xz9J5HPfHBwcNzAic8G59oT"],"license":"MIT"},"src/interfaces/IEIP712_v4.sol":{"keccak256":"0xd7f7115476e307a0bfc32a0f0a0f5434e9e5ca62a6c5af1e18b75e48161bb408","urls":["bzz-raw://b1600b953556da38a7adc5ad2a2925ec5fb138fecf8eec48743646543195b736","dweb:/ipfs/QmarZi2aiLVAfHXgnDWV1cCFiZk2DdPW7KJnWHqzuRChJR"],"license":"MIT"},"src/interfaces/IERC721Permit_v4.sol":{"keccak256":"0x103adbba724ef536abc536fe8a4d7dc12880724c562109b69f2adce4a91fa017","urls":["bzz-raw://06f51b5a5a218e0bc866a83e7821be53c9db9de0ca921f16abd3d13ea0eab69d","dweb:/ipfs/QmbnhLy992hpQZyphTkj7fpr6jKKVva2AzfmLiDZEuqHAk"],"license":"MIT"},"src/interfaces/IImmutableState.sol":{"keccak256":"0x36ab3100e87457ecf04887f4f540e34fd7f21d8e3b83880cb679239e60b7b06b","urls":["bzz-raw://7f290c7ce8e4832608d637a51b13dff95abecf6549485448e647a11c8ed01341","dweb:/ipfs/QmfD1R6mTp8j4EjQXmQZW3vCh11EYFjnvoaw8rXRP27mMq"],"license":"MIT"},"src/interfaces/IMsgSender.sol":{"keccak256":"0xcc7d4e3f2fde34cf1ad9f05a8e43977e04d19624f71eb8a8c295feaf64b362a3","urls":["bzz-raw://1e02044b5e19cc9ca24d23f55667142fde6daefba66408b56c4f620b625fc189","dweb:/ipfs/QmUqWdRBqWi2tZkNAPhzLZbknP26TZbD8iRQMd3fdZGFgi"],"license":"MIT"},"src/interfaces/IMulticall_v4.sol":{"keccak256":"0x336bec303f7ff86497d2679464c5adad5040f412b3d0769ce5e1d2a42f7e2c08","urls":["bzz-raw://7734f047d98d331c8abc51ad9f358ceee0a6dcae8d89ac49084b84de0d2d42e7","dweb:/ipfs/QmWij2h7mU36LsXhb9P6pkYXrSCua4ixeWaVFSrsEcEmPQ"],"license":"MIT"},"src/interfaces/INotifier.sol":{"keccak256":"0xfdc5187a98240a1691aae98b7dd2444d4c2bfb4746f3c34de9f3d18399c17c5e","urls":["bzz-raw://683af56401ec4f8817e8dfe150e7b3febaf0baaf40efe8d0d0475f735275f746","dweb:/ipfs/QmRQ6S3nFnSc2jjDcQTvUJdTf4xKPojmvCkpvgyr6qTuVV"],"license":"MIT"},"src/interfaces/IPermit2Forwarder.sol":{"keccak256":"0xfad472937280e861125ff12aa6f9c2cf7440fbb20a2cc29485c24662ad4279c5","urls":["bzz-raw://31bfbc331f5972fc373d9469fd1ca1d14818db3275f21b7b590f20820cb4439d","dweb:/ipfs/QmX3Bv9wfYpAFZKBcxKsQSXUrSC8mqNBdzh6XVMS72aNx9"],"license":"MIT"},"src/interfaces/IPoolInitializer_v4.sol":{"keccak256":"0x2e4feda94650a2642039e0309ffdec480ee050bc40864bf5e1dba42bb4dc9e98","urls":["bzz-raw://964c178b4da8bab9ef898b94bb26d7c17cc44c5cf20485f55dcf5e9c7e1b1d92","dweb:/ipfs/QmVd2c3SYteyr5xZgUS4sDAiZF43dLwVAEKdCfvQbkZpRJ"],"license":"MIT"},"src/interfaces/IPositionManager.sol":{"keccak256":"0x62dfa0cbee8314ee7e6787db8bc1d364245c340f940875ac7ff11e89d074fc7e","urls":["bzz-raw://26f560c77d8a187bf93a710b827e3167eab3446922192fa8f92f208da2103834","dweb:/ipfs/Qmbzp5gSYdTpMBF9aAb2GraxMEQZb5LRJCyg8VaRUyjTFc"],"license":"MIT"},"src/interfaces/ISubscriber.sol":{"keccak256":"0x34ceadec4a63019680e543fe73197f198a55c825d86e18f327840354760b57e7","urls":["bzz-raw://31734feafe1fe162a0702ddf862fcc3bd97505931afb3c685033c0185d898051","dweb:/ipfs/QmQEANYVyaXTNzXKcjUVfPhLU71Bix5vxQH75BpPWMkWgw"],"license":"MIT"},"src/interfaces/IUnorderedNonce.sol":{"keccak256":"0xd7f32fee74dc7d1a3b078ca1263961baccaa6bf434c79e8fe0e092e30c3e0ec3","urls":["bzz-raw://e7d1e92d89d5f49c84aa82f3b259678c2c97a4473b22d753ca4411a6b0cec36d","dweb:/ipfs/QmNZoQyminStaAdaLqoDLoWaBU5QWrWjXFjmBm4aFhzL8i"],"license":"MIT"},"src/interfaces/IV4Router.sol":{"keccak256":"0xc4133fae25e61cc2447d7331729f6035322d7c1fe26b39b225422bf98cc63459","urls":["bzz-raw://3c24ff8428504e973e947a059f96289a66c520cd7f8ef47a3224f9cb6abdaf25","dweb:/ipfs/QmVqxYnngWXXcCiuTC143vTEJrjZK5NXWB92pjvVbuJBQ5"],"license":"MIT"},"src/libraries/ActionConstants.sol":{"keccak256":"0x3d6f0e5b4a7b1e60bad93e73dce5db67fb66bebef11c31ed8355014a79aa03b3","urls":["bzz-raw://6dfa42e24b1b5c7f66e75304ab034fbb6768518eb2410ccfff8b3defdd1658f2","dweb:/ipfs/QmQQ7fud9mmv7PEWPAQiNzeZhNkWf28Z6nCHc2e6WJFfa7"],"license":"MIT"},"src/libraries/Actions.sol":{"keccak256":"0x8efd4b8b289177ee27e557d9d0a5a9f973d66fe1eb1ef8959d316b11987ca830","urls":["bzz-raw://07fe35f194eb99465028f0546359befea574d844da53767d32f22b233c3bcc98","dweb:/ipfs/Qmc19631uFxABTHAbGrDrroexi9GdyxWntaum1v8npPYz5"],"license":"MIT"},"src/libraries/BipsLibrary.sol":{"keccak256":"0x37ebf99f5d086d9d9f6e7cecbf4d62167f47c63c30248cfcb921e828f0d7a359","urls":["bzz-raw://c4f8e68a66bb6c166d72cdba6ed6fb83a93f713b79c2c572e8058084eb90ab6c","dweb:/ipfs/QmY32FxtSBRf9PJzNUVzXqFY4i2ApTPHTUMpCBGovd2zo3"],"license":"MIT"},"src/libraries/CalldataDecoder.sol":{"keccak256":"0x26df49e13fb5410fd4db253cca877dfdfb3a1ba03e394d054c0e0514a88a56e5","urls":["bzz-raw://72a0c98c52171708f332f83d517deeb97fdd50ecf28f2510e1866e54593a6ff8","dweb:/ipfs/QmY4LiDUfSKGj86nML7B6a8euiPciUqwYehasAyAVnMCHq"],"license":"MIT"},"src/libraries/Locker.sol":{"keccak256":"0x5c0859290a277fbfba8579b506426d3fc4b2ff7d8b691c03dd23aa85797fdae1","urls":["bzz-raw://18ad9effea8da74b9988373dddddd6669f11701fc954f77d2cb58beb9a9cc3ad","dweb:/ipfs/QmQdBMoXdVACo6k6rumWj15UPDCqGpWNSPvQbejxKuV9RJ"],"license":"MIT"},"src/libraries/PathKey.sol":{"keccak256":"0xbbd79ffefe045f025263e389539021266fb4d371463aefba405e1ff1d3fcf9bc","urls":["bzz-raw://2d1c47b81a01218be46ee79f0a8837095479b94dc5cfd18abbf2006709f0ea89","dweb:/ipfs/QmRb6CQ13Zp7f3WF5jbZtsF2szhxpPgcuWs9mjwQXxzqtg"],"license":"MIT"},"src/libraries/PositionInfoLibrary.sol":{"keccak256":"0xc5ddf96bd088bc87ea50a20f907fc932fb28397a42682a301b268a11b7f34078","urls":["bzz-raw://7dfeb4dc747537240f8167243e8066b6f5f08057386fb8bda93f82973fc18ad6","dweb:/ipfs/Qmby9DAAaHj8hjsMUnqY3vjqCHKGAKrT5EULMmeGcjbbGx"],"license":"MIT"},"test/mocks/MockV4Router.sol":{"keccak256":"0x62fcb424645af503ff11d47d4f872f5358671bbfd95a87b184637764a861f1ab","urls":["bzz-raw://f289cb40776aa4533f621cbf1fbced441ee1420ecc3cc97484d66e16e24e3f45","dweb:/ipfs/QmXoYhsSKm8PBoFqysYcZ11FRNfzvLEJ2z3Yw7ag3xoAKs"],"license":"UNLICENSED"},"test/router/Payments.gas.t.sol":{"keccak256":"0x6c98c7b63e7a4e70dace1dd14818feeb2058e773c06022903a8645d6cc853986","urls":["bzz-raw://cfa62c13ee3a7e06328d58743697e75735268b2672e2c409038888e3ae4c5e06","dweb:/ipfs/QmQNZV2YJKMwpv32Zgp1zehEkCFyw3rA4DujK9f76VY2oH"],"license":"UNLICENSED"},"test/shared/HookSavesDelta.sol":{"keccak256":"0x3a2c5629e37b0d999ffb27c8f528b1f5877bc4f7fbcc148a5cfa663d1a509eda","urls":["bzz-raw://84d35648d09735095eb62b90f5eefc59f99f4246903d947f97dac68ca991d985","dweb:/ipfs/QmPmnJ2j1Rn9BYKrFSvuBB4y45CJyEYwqzJdYKxancm89Z"],"license":"UNLICENSED"},"test/shared/LiquidityOperations.sol":{"keccak256":"0x096251cfe2acb56b25893366ae766eede53b69aba83f85f982d1ca72cdc42753","urls":["bzz-raw://60d12773ef8f7b0befdb8d0348bd562ef839c6e3681e8f357bfe8d24e5923f46","dweb:/ipfs/QmXaT4qoG23TRDJVpdcXiJUWwwSgV5EddyfnL22oA8PbzN"],"license":"MIT"},"test/shared/Planner.sol":{"keccak256":"0xc2a26375605104a06d9f0b7a0d5e83edd8730a9eab047f6e86f6ed2569adf174","urls":["bzz-raw://8a2dddae573fe2f88e742e66192c2e580db2edc23761b5c16bfbb04556430a17","dweb:/ipfs/QmZPLofzBrot14HMnve7LX17KhNNskh7q5FLP2uMRGqbZk"],"license":"UNLICENSED"},"test/shared/PositionConfig.sol":{"keccak256":"0x08990d795c0862c45fc34458310e0f3aaa7629715ca2bcc4df82f3530c08beaa","urls":["bzz-raw://803f7bff618b759d05103418d52d6363e8f25312effb06eace7168ff24a010f2","dweb:/ipfs/QmcWWnjBvHGZaj9XaAKDwqRot5xzYc1jrwqvRGghe8jMjd"],"license":"MIT"},"test/shared/RoutingTestHelpers.sol":{"keccak256":"0x8d7611e792004e0db663b7cbe48a842f313014a81acf44f56aa62349a41f9b00","urls":["bzz-raw://7a90c4f095b9d20cdc8d7a1f82de22ef32260f0dc33a5b4e74a4088ba0992aae","dweb:/ipfs/QmeVu7BuncejQtfm3PGPcU6RopMNL8Ts4jgb3TA3EsKK47"],"license":"MIT"}},"version":1},"id":243}