From cc53be2987067034d23ea1d80a25499ecfe33f0c Mon Sep 17 00:00:00 2001 From: marktoda Date: Thu, 2 May 2024 16:24:13 -0400 Subject: [PATCH] feat(uniswapx-sdk): update UniswapX SDK contracts (#17) --- sdks/uniswapx-sdk/abis/V2DutchOrderReactor.json | 2 +- .../contracts/factories/V2DutchOrderReactor__factory.ts | 9 ++------- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/sdks/uniswapx-sdk/abis/V2DutchOrderReactor.json b/sdks/uniswapx-sdk/abis/V2DutchOrderReactor.json index dc8c56397..d049d918d 100644 --- a/sdks/uniswapx-sdk/abis/V2DutchOrderReactor.json +++ b/sdks/uniswapx-sdk/abis/V2DutchOrderReactor.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_permit2","type":"address","internalType":"contract IPermit2"},{"name":"_protocolFeeOwner","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"execute","inputs":[{"name":"order","type":"tuple","internalType":"struct SignedOrder","components":[{"name":"order","type":"bytes","internalType":"bytes"},{"name":"sig","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeBatch","inputs":[{"name":"orders","type":"tuple[]","internalType":"struct SignedOrder[]","components":[{"name":"order","type":"bytes","internalType":"bytes"},{"name":"sig","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeBatchWithCallback","inputs":[{"name":"orders","type":"tuple[]","internalType":"struct SignedOrder[]","components":[{"name":"order","type":"bytes","internalType":"bytes"},{"name":"sig","type":"bytes","internalType":"bytes"}]},{"name":"callbackData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeWithCallback","inputs":[{"name":"order","type":"tuple","internalType":"struct SignedOrder","components":[{"name":"order","type":"bytes","internalType":"bytes"},{"name":"sig","type":"bytes","internalType":"bytes"}]},{"name":"callbackData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"feeController","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IProtocolFeeController"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"permit2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPermit2"}],"stateMutability":"view"},{"type":"function","name":"setProtocolFeeController","inputs":[{"name":"_newFeeController","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Fill","inputs":[{"name":"orderHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"filler","type":"address","indexed":true,"internalType":"address"},{"name":"swapper","type":"address","indexed":true,"internalType":"address"},{"name":"nonce","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ProtocolFeeControllerSet","inputs":[{"name":"oldFeeController","type":"address","indexed":false,"internalType":"address"},{"name":"newFeeController","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"error","name":"DeadlineBeforeEndTime","inputs":[]},{"type":"error","name":"DuplicateFeeOutput","inputs":[{"name":"duplicateToken","type":"address","internalType":"address"}]},{"type":"error","name":"EndTimeBeforeStartTime","inputs":[]},{"type":"error","name":"FeeTooLarge","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"recipient","type":"address","internalType":"address"}]},{"type":"error","name":"IncorrectAmounts","inputs":[]},{"type":"error","name":"InputAndOutputDecay","inputs":[]},{"type":"error","name":"InsufficientEth","inputs":[]},{"type":"error","name":"InvalidCosignature","inputs":[]},{"type":"error","name":"InvalidCosignerInput","inputs":[]},{"type":"error","name":"InvalidCosignerOutput","inputs":[]},{"type":"error","name":"InvalidFeeToken","inputs":[{"name":"feeToken","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidReactor","inputs":[]},{"type":"error","name":"NativeTransferFailed","inputs":[]},{"type":"error","name":"NoExclusiveOverride","inputs":[]}],"bytecode":{"object":"0x60a06040523480156200001157600080fd5b5060405162003524380380620035248339810160408190526200003491620000b8565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f79050565b6001600160a01b0381168114620000b557600080fd5b50565b60008060408385031215620000cc57600080fd5b8251620000d9816200009f565b6020840151909250620000ec816200009f565b809150509250929050565b60805161340b620001196000396000818160e00152611b61015261340b6000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b4366004612476565b6101eb565b005b6100b96100c9366004612524565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b9610139366004612566565b6104c5565b34801561014a57600080fd5b506100b9610159366004612604565b610683565b6100b961016c366004612628565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e6366004612604565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c561268c565b60200260200101819052506102d981610b6d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da628906103199084908790879060040161288e565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610bbe565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff8111156103885761038861265d565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d8585838181106104665761046661268c565b90506020028101906104789190612954565b6109f6565b82828151811061048f5761048f61268c565b6020908102919091010152600101610449565b506104ac81610b6d565b6104b581610bbe565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e961265d565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c78787838181106104665761046661268c565b8282815181106105d9576105d961268c565b60209081029190910101526001016105aa565b506105f681610b6d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da628906106369084908890889060040161288e565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610bbe565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b816000815181106108695761086961268c565b602002602001018190525061087d81610b6d565b61088681610bbe565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f8380612992565b810190610a7c9190612dd1565b90506000610a8982610d11565b9050610a958183610f43565b610a9e82611227565b6040805160a081018252835181526080840151805160209182015193860151929391840192610acf92909190611392565b81526080840151805160209182015160608701519290930192610af3929190611464565b8152602001858060200190610b089190612992565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001829052608083015160408101518151606090920151929550610b669286929061154b565b5050919050565b805160005b8181101561035f576000838281518110610b8e57610b8e61268c565b60200260200101519050610ba1816115ec565b610bab8133611a66565b610bb58133611b5f565b50600101610b72565b805160005b81811015610d00576000838281518110610bdf57610bdf61268c565b602002602001015190506000816040015151905060005b81811015610c6057600083604001518281518110610c1657610c1661268c565b60200260200101519050610c5781604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611ea19092919063ffffffff16565b50600101610bf6565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610ca957610ca961268c565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610cee91815260200190565b60405180910390a45050600101610bc3565b5047156104c1576104c13347611ee8565b6040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260009060b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181526080830190915260528083529091906132c960208301396040518060c00160405280608d8152602001613349608d9139604051602001610e9193929190612ece565b60405160208183030381529060405280519060200120610eb48360000151611f82565b6020808501516040808701518051938101519101516060880151929392610eda9061201c565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff938416606087015292909116608085015260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b6080810151602001518151606001511015610f8a576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6080810151805160209091015111610fce576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808260a00151806020019051810190610fe99190612f11565b9150915060008360a001516040815181106110065761100661268c565b602001015160f81c60f81b60f81c9050600060018686608001516040516020016110309190612f35565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261106c9291602001612fc5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600084529083018083525260ff851690820152606081018690526080810185905260a0016020604051602081039080840390855afa1580156110e8573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff1614158015611149575073ffffffffffffffffffffffffffffffffffffffff811615155b15611180576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8460400151604001518560400151602001511461121f5760005b85606001515181101561121d576000866060015182815181106111bf576111bf61268c565b60200260200101519050806040015181602001511461120a576040517fd303758b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50806112158161301a565b91505061119a565b505b505050505050565b60808082015101511561129057806040015160200151816080015160800151111561127e576040517fac9143e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808082015101516040820151602001525b806060015151816080015160a0015151146112d7576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8160600151518110156104c1576000826060015182815181106112ff576112ff61268c565b602002602001015190506000836080015160a0015183815181106113255761132561268c565b602002602001015190508060001461137d578160200151811015611375576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602082018190525b5050808061138a9061301a565b9150506112da565b6113cc6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b83604001518460200151111561140e576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006114248560200151866040015186866120ba565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff8111156114825761148261265d565b6040519080825280602002602001820160405280156114eb57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816114a05790505b50915060005b818110156115425761151d86828151811061150e5761150e61268c565b60200260200101518686612153565b83828151811061152f5761152f61268c565b60209081029190910101526001016114f1565b50509392505050565b6115558383612223565b61067d5780611590576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604084015160005b815181101561121f5760008282815181106115b5576115b561268c565b602002602001015190506115de846127106115d09190613052565b602083015190612710612270565b602090910152600101611598565b60015473ffffffffffffffffffffffffffffffffffffffff1661160c5750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611663908590600401613065565b600060405180830381865afa158015611680573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526116c69190810190613078565b60408301515181519192509060006116de8284613052565b67ffffffffffffffff8111156116f6576116f661265d565b60405190808252806020026020018201604052801561175f57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816117145790505b50905060005b838110156117b057856040015181815181106117835761178361268c565b602002602001015182828151811061179d5761179d61268c565b6020908102919091010152600101611765565b5060005b82811015611a575760008582815181106117d0576117d061268c565b6020026020010151905060005b8281101561188e578681815181106117f7576117f761268c565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036118865781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6001016117dd565b506000805b86811015611913576000896040015182815181106118b3576118b361268c565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361190a5760208101516119079084613052565b92505b50600101611893565b50815160208901515173ffffffffffffffffffffffffffffffffffffffff91821691160361195057602080890151015161194d9082613052565b90505b806000036119a55781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6119b3816005612710612270565b82602001511115611a26578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8184611a328589613052565b81518110611a4257611a4261268c565b602090810291909101015250506001016117b4565b50604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611ab7576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b90611b339084908690600401613148565b60006040518083038186803b158015611b4b57600080fd5b505afa15801561121f573d6000803e3d6000fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611c1f846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff86168252808701518101519082015285600001516020015186608001516040518060800160405280605281526020016132c9605291396040518060c00160405280608d8152602001613349608d91396040518060600160405280602e815260200161331b602e91396040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611e0694939291602001613177565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611e739695949392600401613200565b600060405180830381600087803b158015611e8d57600080fd5b505af115801561121f573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611ec65761035f8282611ee8565b61035f73ffffffffffffffffffffffffffffffffffffffff84163384846122ac565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611f42576040519150601f19603f3d011682016040523d82523d6000602084013e611f47565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d8152602001613349608d913980516020918201208351848301516040808701516060880151608089015160a08a01518051908901209351610f2698939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff81111561203c5761203c61265d565b6040519080825280601f01601f191660200182016040528015612066576020820181803683370190505b50905060005b83518110156120ab57600061209985838151811061208c5761208c61268c565b602002602001015161239e565b6020838102850101525060010161206c565b50805160209091012092915050565b60008282116120f5576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b42821161210357508261214b565b42831061211157508361214b565b42839003838303868610156121365761212d8688038383612270565b87039250612148565b6121438787038383612270565b870192505b50505b949350505050565b60408051606081018252600080825260208201819052918101919091528360400151846020015110156121b2576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006121c88560200151866040015186866120ba565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff8316158061224757508142115b80612267575073ffffffffffffffffffffffffffffffffffffffff831633145b90505b92915050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026122a557600080fd5b5091020490565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080612397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b5050505050565b60006040518060800160405280605281526020016132c960529139805160209182012083518483015160408087015160608801519151610f26969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b60006040828403121561242757600080fd5b50919050565b60008083601f84011261243f57600080fd5b50813567ffffffffffffffff81111561245757600080fd5b60208301915083602082850101111561246f57600080fd5b9250929050565b60008060006040848603121561248b57600080fd5b833567ffffffffffffffff808211156124a357600080fd5b6124af87838801612415565b945060208601359150808211156124c557600080fd5b506124d28682870161242d565b9497909650939450505050565b60008083601f8401126124f157600080fd5b50813567ffffffffffffffff81111561250957600080fd5b6020830191508360208260051b850101111561246f57600080fd5b6000806020838503121561253757600080fd5b823567ffffffffffffffff81111561254e57600080fd5b61255a858286016124df565b90969095509350505050565b6000806000806040858703121561257c57600080fd5b843567ffffffffffffffff8082111561259457600080fd5b6125a0888389016124df565b909650945060208701359150808211156125b957600080fd5b506125c68782880161242d565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356125ff816125d2565b919050565b60006020828403121561261657600080fd5b8135612621816125d2565b9392505050565b60006020828403121561263a57600080fd5b813567ffffffffffffffff81111561265157600080fd5b61214b84828501612415565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156126d65781810151838201526020016126be565b50506000910152565b600081518084526126f78160208601602086016126bb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600081518084526020808501945080840160005b83811015612788578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a015260409182015116908801526060909601959082019060010161273d565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526128076101a08501826126df565b905060208301516128456020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b506040830151848203608086015261285d8282612729565b915050606083015184820360a086015261287782826126df565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b83811015612903577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526128f1868351612793565b955093820193908201906001016128b7565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261298857600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126129c757600080fd5b83018035915067ffffffffffffffff8211156129e257600080fd5b60200191503681900382131561246f57600080fd5b60405160c0810167ffffffffffffffff81118282101715612a1a57612a1a61265d565b60405290565b6040516060810167ffffffffffffffff81118282101715612a1a57612a1a61265d565b6040516080810167ffffffffffffffff81118282101715612a1a57612a1a61265d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612aad57612aad61265d565b604052919050565b600082601f830112612ac657600080fd5b813567ffffffffffffffff811115612ae057612ae061265d565b612b1160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612a66565b818152846020838601011115612b2657600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612b5557600080fd5b612b5d6129f7565b90508135612b6a816125d2565b81526020820135612b7a816125d2565b8060208301525060408201356040820152606082013560608201526080820135612ba3816125d2565b608082015260a082013567ffffffffffffffff811115612bc257600080fd5b612bce84828501612ab5565b60a08301525092915050565b600060608284031215612bec57600080fd5b612bf4612a20565b90508135612c01816125d2565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612c3957612c3961265d565b5060051b60200190565b600082601f830112612c5457600080fd5b81356020612c69612c6483612c1f565b612a66565b82815260079290921b84018101918181019086841115612c8857600080fd5b8286015b84811015612ced5760808189031215612ca55760008081fd5b612cad612a43565b8135612cb8816125d2565b8152818501358582015260408083013590820152606080830135612cdb816125d2565b90820152835291830191608001612c8c565b509695505050505050565b600060c08284031215612d0a57600080fd5b612d126129f7565b905081358152602080830135818301526040830135612d30816125d2565b80604084015250606083013560608301526080830135608083015260a083013567ffffffffffffffff811115612d6557600080fd5b8301601f81018513612d7657600080fd5b8035612d84612c6482612c1f565b81815260059190911b82018301908381019087831115612da357600080fd5b928401925b82841015612dc157833582529284019290840190612da8565b60a0860152509295945050505050565b600060208284031215612de357600080fd5b813567ffffffffffffffff80821115612dfb57600080fd5b908301906101008286031215612e1057600080fd5b612e186129f7565b823582811115612e2757600080fd5b612e3387828601612b43565b825250612e42602084016125f4565b6020820152612e548660408501612bda565b604082015260a083013582811115612e6b57600080fd5b612e7787828601612c43565b60608301525060c083013582811115612e8f57600080fd5b612e9b87828601612cf8565b60808301525060e083013582811115612eb357600080fd5b612ebf87828601612ab5565b60a08301525095945050505050565b60008451612ee08184602089016126bb565b845190830190612ef48183602089016126bb565b8451910190612f078183602088016126bb565b0195945050505050565b60008060408385031215612f2457600080fd5b505080516020909101519092909150565b6000602080835260e0830184518285015281850151604085015273ffffffffffffffffffffffffffffffffffffffff604086015116606085015260608501516080850152608085015160a085015260a085015160c080860152818151808452610100870191508483019350600092505b80831015612ced5783518252928401926001929092019190840190612fa5565b82815260008251612fdd8160208501602087016126bb565b919091016020019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361304b5761304b612feb565b5060010190565b8082018082111561226a5761226a612feb565b6020815260006122676020830184612793565b6000602080838503121561308b57600080fd5b825167ffffffffffffffff8111156130a257600080fd5b8301601f810185136130b357600080fd5b80516130c1612c6482612c1f565b818152606091820283018401918482019190888411156130e057600080fd5b938501935b8385101561313c5780858a0312156130fd5760008081fd5b613105612a20565b8551613110816125d2565b81528587015187820152604080870151613129816125d2565b90820152835293840193918501916130e5565b50979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061214b6040830184612793565b7f563244757463684f72646572207769746e6573732900000000000000000000008152600085516131af816015850160208a016126bb565b8551908301906131c6816015840160208a016126bb565b85519101906131dc8160158401602089016126bb565b84519101906131f28160158401602088016126bb565b016015019695505050505050565b6000610140613230838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526132716080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e0840152806101008401526132a6818401866126df565b90508281036101208401526132bb81856126df565b999850505050505050505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a26469706673582212208f5ca0756750ceaf422af83c2939e746254af6aae2235a7a02c1911b9aa1739664736f6c63430008130033","sourceMap":"1102:5172:62:-:0;;;1932:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1045:5:35;:14;;-1:-1:-1;;;;;;1045:14:35;-1:-1:-1;;;;;1045:14:35;;;;;;;1075:40;;2010:8:62;;1045:14:35;;;;;;:5;1075:40;;1045:5;;1075:40;-1:-1:-1;;1716:1:21;1821:7;:22;-1:-1:-1;;;;;;1551:18:60::1;;::::0;-1:-1:-1;1102:5172:62;;-1:-1:-1;1102:5172:62;14:141:80;-1:-1:-1;;;;;99:31:80;;89:42;;79:70;;145:1;142;135:12;79:70;14:141;:::o;160:423::-;257:6;265;318:2;306:9;297:7;293:23;289:32;286:52;;;334:1;331;324:12;286:52;366:9;360:16;385:41;420:5;385:41;:::i;:::-;495:2;480:18;;474:25;445:5;;-1:-1:-1;508:43:80;474:25;508:43;:::i;:::-;570:7;560:17;;;160:423;;;;;:::o;:::-;1102:5172:62;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b4366004612476565b6101eb565b005b6100b96100c9366004612524565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b9610139366004612566565b6104c5565b34801561014a57600080fd5b506100b9610159366004612604565b610683565b6100b961016c366004612628565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e6366004612604565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c561268c565b60200260200101819052506102d981610b6d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da628906103199084908790879060040161288e565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610bbe565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff8111156103885761038861265d565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d8585838181106104665761046661268c565b90506020028101906104789190612954565b6109f6565b82828151811061048f5761048f61268c565b6020908102919091010152600101610449565b506104ac81610b6d565b6104b581610bbe565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e961265d565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c78787838181106104665761046661268c565b8282815181106105d9576105d961268c565b60209081029190910101526001016105aa565b506105f681610b6d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da628906106369084908890889060040161288e565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610bbe565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b816000815181106108695761086961268c565b602002602001018190525061087d81610b6d565b61088681610bbe565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f8380612992565b810190610a7c9190612dd1565b90506000610a8982610d11565b9050610a958183610f43565b610a9e82611227565b6040805160a081018252835181526080840151805160209182015193860151929391840192610acf92909190611392565b81526080840151805160209182015160608701519290930192610af3929190611464565b8152602001858060200190610b089190612992565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001829052608083015160408101518151606090920151929550610b669286929061154b565b5050919050565b805160005b8181101561035f576000838281518110610b8e57610b8e61268c565b60200260200101519050610ba1816115ec565b610bab8133611a66565b610bb58133611b5f565b50600101610b72565b805160005b81811015610d00576000838281518110610bdf57610bdf61268c565b602002602001015190506000816040015151905060005b81811015610c6057600083604001518281518110610c1657610c1661268c565b60200260200101519050610c5781604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611ea19092919063ffffffff16565b50600101610bf6565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610ca957610ca961268c565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610cee91815260200190565b60405180910390a45050600101610bc3565b5047156104c1576104c13347611ee8565b6040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260009060b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181526080830190915260528083529091906132c960208301396040518060c00160405280608d8152602001613349608d9139604051602001610e9193929190612ece565b60405160208183030381529060405280519060200120610eb48360000151611f82565b6020808501516040808701518051938101519101516060880151929392610eda9061201c565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff938416606087015292909116608085015260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b6080810151602001518151606001511015610f8a576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6080810151805160209091015111610fce576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808260a00151806020019051810190610fe99190612f11565b9150915060008360a001516040815181106110065761100661268c565b602001015160f81c60f81b60f81c9050600060018686608001516040516020016110309190612f35565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261106c9291602001612fc5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600084529083018083525260ff851690820152606081018690526080810185905260a0016020604051602081039080840390855afa1580156110e8573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff1614158015611149575073ffffffffffffffffffffffffffffffffffffffff811615155b15611180576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8460400151604001518560400151602001511461121f5760005b85606001515181101561121d576000866060015182815181106111bf576111bf61268c565b60200260200101519050806040015181602001511461120a576040517fd303758b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50806112158161301a565b91505061119a565b505b505050505050565b60808082015101511561129057806040015160200151816080015160800151111561127e576040517fac9143e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808082015101516040820151602001525b806060015151816080015160a0015151146112d7576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8160600151518110156104c1576000826060015182815181106112ff576112ff61268c565b602002602001015190506000836080015160a0015183815181106113255761132561268c565b602002602001015190508060001461137d578160200151811015611375576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602082018190525b5050808061138a9061301a565b9150506112da565b6113cc6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b83604001518460200151111561140e576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006114248560200151866040015186866120ba565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff8111156114825761148261265d565b6040519080825280602002602001820160405280156114eb57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816114a05790505b50915060005b818110156115425761151d86828151811061150e5761150e61268c565b60200260200101518686612153565b83828151811061152f5761152f61268c565b60209081029190910101526001016114f1565b50509392505050565b6115558383612223565b61067d5780611590576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604084015160005b815181101561121f5760008282815181106115b5576115b561268c565b602002602001015190506115de846127106115d09190613052565b602083015190612710612270565b602090910152600101611598565b60015473ffffffffffffffffffffffffffffffffffffffff1661160c5750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611663908590600401613065565b600060405180830381865afa158015611680573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526116c69190810190613078565b60408301515181519192509060006116de8284613052565b67ffffffffffffffff8111156116f6576116f661265d565b60405190808252806020026020018201604052801561175f57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816117145790505b50905060005b838110156117b057856040015181815181106117835761178361268c565b602002602001015182828151811061179d5761179d61268c565b6020908102919091010152600101611765565b5060005b82811015611a575760008582815181106117d0576117d061268c565b6020026020010151905060005b8281101561188e578681815181106117f7576117f761268c565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036118865781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6001016117dd565b506000805b86811015611913576000896040015182815181106118b3576118b361268c565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361190a5760208101516119079084613052565b92505b50600101611893565b50815160208901515173ffffffffffffffffffffffffffffffffffffffff91821691160361195057602080890151015161194d9082613052565b90505b806000036119a55781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6119b3816005612710612270565b82602001511115611a26578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8184611a328589613052565b81518110611a4257611a4261268c565b602090810291909101015250506001016117b4565b50604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611ab7576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b90611b339084908690600401613148565b60006040518083038186803b158015611b4b57600080fd5b505afa15801561121f573d6000803e3d6000fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611c1f846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff86168252808701518101519082015285600001516020015186608001516040518060800160405280605281526020016132c9605291396040518060c00160405280608d8152602001613349608d91396040518060600160405280602e815260200161331b602e91396040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611e0694939291602001613177565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611e739695949392600401613200565b600060405180830381600087803b158015611e8d57600080fd5b505af115801561121f573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611ec65761035f8282611ee8565b61035f73ffffffffffffffffffffffffffffffffffffffff84163384846122ac565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611f42576040519150601f19603f3d011682016040523d82523d6000602084013e611f47565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d8152602001613349608d913980516020918201208351848301516040808701516060880151608089015160a08a01518051908901209351610f2698939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff81111561203c5761203c61265d565b6040519080825280601f01601f191660200182016040528015612066576020820181803683370190505b50905060005b83518110156120ab57600061209985838151811061208c5761208c61268c565b602002602001015161239e565b6020838102850101525060010161206c565b50805160209091012092915050565b60008282116120f5576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b42821161210357508261214b565b42831061211157508361214b565b42839003838303868610156121365761212d8688038383612270565b87039250612148565b6121438787038383612270565b870192505b50505b949350505050565b60408051606081018252600080825260208201819052918101919091528360400151846020015110156121b2576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006121c88560200151866040015186866120ba565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff8316158061224757508142115b80612267575073ffffffffffffffffffffffffffffffffffffffff831633145b90505b92915050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026122a557600080fd5b5091020490565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080612397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b5050505050565b60006040518060800160405280605281526020016132c960529139805160209182012083518483015160408087015160608801519151610f26969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b60006040828403121561242757600080fd5b50919050565b60008083601f84011261243f57600080fd5b50813567ffffffffffffffff81111561245757600080fd5b60208301915083602082850101111561246f57600080fd5b9250929050565b60008060006040848603121561248b57600080fd5b833567ffffffffffffffff808211156124a357600080fd5b6124af87838801612415565b945060208601359150808211156124c557600080fd5b506124d28682870161242d565b9497909650939450505050565b60008083601f8401126124f157600080fd5b50813567ffffffffffffffff81111561250957600080fd5b6020830191508360208260051b850101111561246f57600080fd5b6000806020838503121561253757600080fd5b823567ffffffffffffffff81111561254e57600080fd5b61255a858286016124df565b90969095509350505050565b6000806000806040858703121561257c57600080fd5b843567ffffffffffffffff8082111561259457600080fd5b6125a0888389016124df565b909650945060208701359150808211156125b957600080fd5b506125c68782880161242d565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356125ff816125d2565b919050565b60006020828403121561261657600080fd5b8135612621816125d2565b9392505050565b60006020828403121561263a57600080fd5b813567ffffffffffffffff81111561265157600080fd5b61214b84828501612415565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156126d65781810151838201526020016126be565b50506000910152565b600081518084526126f78160208601602086016126bb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600081518084526020808501945080840160005b83811015612788578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a015260409182015116908801526060909601959082019060010161273d565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526128076101a08501826126df565b905060208301516128456020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b506040830151848203608086015261285d8282612729565b915050606083015184820360a086015261287782826126df565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b83811015612903577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526128f1868351612793565b955093820193908201906001016128b7565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261298857600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126129c757600080fd5b83018035915067ffffffffffffffff8211156129e257600080fd5b60200191503681900382131561246f57600080fd5b60405160c0810167ffffffffffffffff81118282101715612a1a57612a1a61265d565b60405290565b6040516060810167ffffffffffffffff81118282101715612a1a57612a1a61265d565b6040516080810167ffffffffffffffff81118282101715612a1a57612a1a61265d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612aad57612aad61265d565b604052919050565b600082601f830112612ac657600080fd5b813567ffffffffffffffff811115612ae057612ae061265d565b612b1160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612a66565b818152846020838601011115612b2657600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612b5557600080fd5b612b5d6129f7565b90508135612b6a816125d2565b81526020820135612b7a816125d2565b8060208301525060408201356040820152606082013560608201526080820135612ba3816125d2565b608082015260a082013567ffffffffffffffff811115612bc257600080fd5b612bce84828501612ab5565b60a08301525092915050565b600060608284031215612bec57600080fd5b612bf4612a20565b90508135612c01816125d2565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612c3957612c3961265d565b5060051b60200190565b600082601f830112612c5457600080fd5b81356020612c69612c6483612c1f565b612a66565b82815260079290921b84018101918181019086841115612c8857600080fd5b8286015b84811015612ced5760808189031215612ca55760008081fd5b612cad612a43565b8135612cb8816125d2565b8152818501358582015260408083013590820152606080830135612cdb816125d2565b90820152835291830191608001612c8c565b509695505050505050565b600060c08284031215612d0a57600080fd5b612d126129f7565b905081358152602080830135818301526040830135612d30816125d2565b80604084015250606083013560608301526080830135608083015260a083013567ffffffffffffffff811115612d6557600080fd5b8301601f81018513612d7657600080fd5b8035612d84612c6482612c1f565b81815260059190911b82018301908381019087831115612da357600080fd5b928401925b82841015612dc157833582529284019290840190612da8565b60a0860152509295945050505050565b600060208284031215612de357600080fd5b813567ffffffffffffffff80821115612dfb57600080fd5b908301906101008286031215612e1057600080fd5b612e186129f7565b823582811115612e2757600080fd5b612e3387828601612b43565b825250612e42602084016125f4565b6020820152612e548660408501612bda565b604082015260a083013582811115612e6b57600080fd5b612e7787828601612c43565b60608301525060c083013582811115612e8f57600080fd5b612e9b87828601612cf8565b60808301525060e083013582811115612eb357600080fd5b612ebf87828601612ab5565b60a08301525095945050505050565b60008451612ee08184602089016126bb565b845190830190612ef48183602089016126bb565b8451910190612f078183602088016126bb565b0195945050505050565b60008060408385031215612f2457600080fd5b505080516020909101519092909150565b6000602080835260e0830184518285015281850151604085015273ffffffffffffffffffffffffffffffffffffffff604086015116606085015260608501516080850152608085015160a085015260a085015160c080860152818151808452610100870191508483019350600092505b80831015612ced5783518252928401926001929092019190840190612fa5565b82815260008251612fdd8160208501602087016126bb565b919091016020019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361304b5761304b612feb565b5060010190565b8082018082111561226a5761226a612feb565b6020815260006122676020830184612793565b6000602080838503121561308b57600080fd5b825167ffffffffffffffff8111156130a257600080fd5b8301601f810185136130b357600080fd5b80516130c1612c6482612c1f565b818152606091820283018401918482019190888411156130e057600080fd5b938501935b8385101561313c5780858a0312156130fd5760008081fd5b613105612a20565b8551613110816125d2565b81528587015187820152604080870151613129816125d2565b90820152835293840193918501916130e5565b50979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061214b6040830184612793565b7f563244757463684f72646572207769746e6573732900000000000000000000008152600085516131af816015850160208a016126bb565b8551908301906131c6816015840160208a016126bb565b85519101906131dc8160158401602089016126bb565b84519101906131f28160158401602088016126bb565b016015019695505050505050565b6000610140613230838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526132716080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e0840152806101008401526132a6818401866126df565b90508281036101208401526132bb81856126df565b999850505050505050505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a26469706673582212208f5ca0756750ceaf422af83c2939e746254af6aae2235a7a02c1911b9aa1739664736f6c63430008130033","sourceMap":"1102:5172:62:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1919:434:60;;;;;;:::i;:::-;;:::i;:::-;;2388:452;;;;;;:::i;:::-;;:::i;1411:33::-;;;;;;;;;;;;;;;;;;2288:42:80;2276:55;;;2258:74;;2246:2;2231:18;1411:33:60;;;;;;;2875:613;;;;;;:::i;:::-;;:::i;3955:289:41:-;;;;;;;;;;-1:-1:-1;3955:289:41;;;;;:::i;:::-;;:::i;1611:273:60:-;;;;;;:::i;:::-;;:::i;1379:43:41:-;;;;;;;;;;-1:-1:-1;1379:43:41;;;;;;;;690:20:35;;;;;;;;;;-1:-1:-1;690:20:35;;;;;;;;1312:161;;;;;;;;;;-1:-1:-1;1312:161:35;;;;;:::i;:::-;;:::i;1919:434:60:-;2261:21:21;:19;:21::i;:::-;2130:22:60::1;::::0;;2150:1:::1;2130:22:::0;;;;;::::1;::::0;;;2090:37:::1;::::0;2130:22:::1;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2130:22:60;;;;;;;::::1;::::0;::::1;;;;;2090:62;;2182:14;2190:5;2182:7;:14::i;:::-;2162;2177:1;2162:17;;;;;;;;:::i;:::-;;;;;;:34;;;;2207:24;2216:14;2207:8;:24::i;:::-;2241:74;::::0;;;;2258:10:::1;::::0;2241:44:::1;::::0;:74:::1;::::0;2286:14;;2302:12;;;;2241:74:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2325:21;2331:14;2325:5;:21::i;:::-;2080:273;2303:20:21::0;1716:1;2809:7;:22;2629:209;2303:20;1919:434:60;;;:::o;2388:452::-;2261:21:21;:19;:21::i;:::-;2513:6:60;2490:20:::1;2513:6:::0;2576:33:::1;::::0;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2576:33:60;;;;;;;::::1;::::0;::::1;;;;;;2536:73;;2649:9;2644:114;2668:12;2664:1;:16;2644:114;;;2725:18;2733:6;;2740:1;2733:9;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;2725:7;:18::i;:::-;2705:14;2720:1;2705:17;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:38;2682:3:::1;;2644:114;;;;2778:24;2787:14;2778:8;:24::i;:::-;2812:21;2818:14;2812:5;:21::i;:::-;2480:360;;2303:20:21::0;1716:1;2809:7;:22;2629:209;2303:20;2388:452:60;;:::o;2875:613::-;2261:21:21;:19;:21::i;:::-;3077:6:60;3054:20:::1;3077:6:::0;3140:33:::1;::::0;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3140:33:60;;;;;;;::::1;::::0;::::1;;;;;;3100:73;;3213:9;3208:114;3232:12;3228:1;:16;3208:114;;;3289:18;3297:6;;3304:1;3297:9;;;;;;;:::i;3289:18::-;3269:14;3284:1;3269:17;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:38;3246:3:::1;;3208:114;;;;3342:24;3351:14;3342:8;:24::i;:::-;3376:74;::::0;;;;3393:10:::1;::::0;3376:44:::1;::::0;:74:::1;::::0;3421:14;;3437:12;;;;3376:74:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;3460:21;3466:14;3460:5;:21::i;:::-;3044:444;;2303:20:21::0;1716:1;2809:7;:22;2629:209;2303:20;2875:613:60;;;;:::o;3955:289:41:-;778:5:35;;;;764:10;:19;756:44;;;;;;;9607:2:80;756:44:35;;;9589:21:80;9646:2;9626:18;;;9619:30;9685:14;9665:18;;;9658:42;9717:18;;756:44:35;;;;;;;;;4080:13:41::1;::::0;;::::1;4104:57:::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;4176:61:::1;::::0;;4080:13;;;::::1;9981:34:80::0;;;10046:2;10031:18;;10024:43;;;;4176:61:41::1;::::0;9893:18:80;4176:61:41::1;;;;;;;4035:209;3955:289:::0;:::o;1611:273:60:-;2261:21:21;:19;:21::i;:::-;1745:22:60::1;::::0;;1765:1:::1;1745:22:::0;;;;;::::1;::::0;;;1705:37:::1;::::0;1745:22:::1;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1745:22:60;;;;;;;::::1;::::0;::::1;;;;;1705:62;;1797:14;1805:5;1797:7;:14::i;:::-;1777;1792:1;1777:17;;;;;;;;:::i;:::-;;;;;;:34;;;;1822:24;1831:14;1822:8;:24::i;:::-;1856:21;1862:14;1856:5;:21::i;:::-;1695:189;2303:20:21::0;1716:1;2809:7;:22;2629:209;2303:20;1611:273:60;:::o;1312:161:35:-;778:5;;;;764:10;:19;756:44;;;;;;;9607:2:80;756:44:35;;;9589:21:80;9646:2;9626:18;;;9619:30;9685:14;9665:18;;;9658:42;9717:18;;756:44:35;9405:336:80;756:44:35;1392:5:::1;:16:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;1424:42:::1;::::0;1392:16;;1445:10:::1;::::0;1424:42:::1;::::0;1392:5;1424:42:::1;1312:161:::0;:::o;2336:287:21:-;1759:1;2468:7;;:19;2460:63;;;;;;;10280:2:80;2460:63:21;;;10262:21:80;10319:2;10299:18;;;10292:30;10358:33;10338:18;;;10331:61;10409:18;;2460:63:21;10078:355:80;2460:63:21;1759:1;2598:18;;2336:287::o;2083:1193:62:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2316:17:62;:11;;:17;:::i;:::-;2292:79;;;;;;;:::i;:::-;2264:107;;2483:17;2503:12;:5;:10;:12::i;:::-;2483:32;;2526;2541:9;2552:5;2526:14;:32::i;:::-;2568:33;2595:5;2568:26;:33::i;:::-;2628:434;;;;;;;;2662:10;;2628:434;;2732:18;;;;:33;;2628:434;2783:31;;;;2693:15;;;;2628:434;;;;;;2693:135;;:15;;2732:33;2693:21;:135::i;:::-;2628:434;;2892:18;;;;:33;;2628:434;2943:31;;;;2851:17;;;;2628:434;;;;;2851:137;;:17;2892:33;2851:23;:137::i;:::-;2628:434;;;;3007:11;:15;;;;;;;;:::i;:::-;2628:434;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2628:434:62;;;-1:-1:-1;2628:434:62;;;;;3123:18;;;;:34;;;;3171:33;;3218:41;;;;;2612:450;;-1:-1:-1;3072:197:62;;2612:450;;3171:33;3072:37;:197::i;:::-;2254:1022;;2083:1193;;;:::o;3636:404:60:-;3727:13;;3704:20;3774:250;3798:12;3794:1;:16;3774:250;;;3835:26;3864:6;3871:1;3864:9;;;;;;;;:::i;:::-;;;;;;;3835:38;;3891:18;3903:5;3891:11;:18::i;:::-;3927:26;:5;3942:10;3927:14;:26::i;:::-;3971:38;3991:5;3998:10;3971:19;:38::i;:::-;-1:-1:-1;3812:3:60;;3774:250;;4162:1267;4250:13;;4227:20;4430:536;4454:12;4450:1;:16;4430:536;;;4491:34;4528:6;4535:1;4528:9;;;;;;;;:::i;:::-;;;;;;;4491:46;;4555:21;4579:13;:21;;;:28;4555:52;;4630:9;4625:217;4649:13;4645:1;:17;4625:217;;;4691:25;4719:13;:21;;;4741:1;4719:24;;;;;;;;:::i;:::-;;;;;;;4691:52;;4765:58;4791:6;:16;;;4809:6;:13;;;4765:6;:12;;;:25;;;;:58;;;;;:::i;:::-;-1:-1:-1;4664:3:60;;4625:217;;;;4898:13;:18;;;:26;;;4865:86;;4886:10;4865:86;;4870:6;4877:1;4870:9;;;;;;;;:::i;:::-;;;;;;;:14;;;4865:86;4926:13;:18;;;:24;;;4865:86;;;;18361:25:80;;18349:2;18334:18;;18215:177;4865:86:60;;;;;;;;-1:-1:-1;;4468:3:60;;4430:536;;;-1:-1:-1;5306:21:60;:25;5302:121;;5347:65;5378:10;5390:21;5347:30;:65::i;2594:423:59:-;1589:256;;19217:15:80;1589:256:59;;;19205:28:80;19263:17;19249:12;;;19242:39;19311:19;19297:12;;;19290:41;19361:25;19347:12;;;19340:47;19417:31;19403:12;;;19396:53;19479:29;19465:12;;;19458:51;19540:28;19525:13;;;19518:51;2658:7:59;;19585:13:80;;1589:256:59;;;;;;;;;;1935:31;;;;;;;;;;1589:256;;;1935:31;1589:256;1935:31;;;1968:28;;;;;;;;;;;;;;;;;1897:100;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2047:21;;;;;;2768:17;:5;:10;;;:15;:17::i;:::-;2803:14;;;;;2835:15;;;;;:21;;2874:27;;;;2919:25;;;2962:17;;;;2803:14;;2835:21;2962:24;;:22;:24::i;:::-;2707:293;;;;;;20641:25:80;;;;20682:18;;20675:34;;;;20728:42;20806:15;;;20786:18;;;20779:43;20858:15;;;;20838:18;;;20831:43;20890:19;;;20883:35;20934:19;;;20927:35;20978:19;;;20971:35;20613:19;;2707:293:59;;;;;;;;;;;;;2684:326;;;;;;2677:333;;2594:423;;;:::o;4954:1318:62:-;5094:18;;;;:31;;;5072:10;;:19;;;:53;5068:114;;;5148:23;;;;;;;;;;;;;;5068:114;5244:18;;;;:33;;5209:31;;;;;:68;5192:166;;5309:38;;;;;;;;;;;;;;5192:166;5369:9;5380;5417:5;:17;;;5393:83;;;;;;;;;;;;:::i;:::-;5368:108;;;;5486:7;5502:5;:17;;;5520:2;5502:21;;;;;;;;:::i;:::-;;;;;;;;;5496:28;;5486:38;;5593:14;5610:178;5677:9;5699:5;:18;;;5688:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;5660:59;;;5688:30;5660:59;;:::i;:::-;;;;;;;;;;;;;;5633:100;;5660:59;5633:100;;;;5610:178;;;;;;;;;22954:25:80;23027:4;23015:17;;22995:18;;;22988:45;23049:18;;;23042:34;;;23092:18;;;23085:34;;;22926:19;;5610:178:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5593:195;;5820:6;5802:24;;:5;:14;;;:24;;;;:48;;;;-1:-1:-1;5830:20:62;;;;;5802:48;5798:106;;;5873:20;;;;;;;;;;;;;;5798:106;5949:5;:15;;;:25;;;5918:5;:15;;;:27;;;:56;5914:352;;5995:9;5990:266;6014:5;:17;;;:24;6010:1;:28;5990:266;;;6063:25;6091:5;:17;;;6109:1;6091:20;;;;;;;;:::i;:::-;;;;;;;6063:48;;6155:6;:16;;;6133:6;:18;;;:38;6129:113;;6202:21;;;;;;;;;;;;;;6129:113;-1:-1:-1;6040:3:62;;;;:::i;:::-;;;;5990:266;;;;5914:352;5058:1214;;;;4954:1318;;:::o;3683:978::-;3794:18;;;;;:30;;:35;3790:267;;3882:5;:15;;;:27;;;3849:5;:18;;;:30;;;:60;3845:128;;;3936:22;;;;;;;;;;;;;;3845:128;4016:18;;;;;:30;;3986:15;;;;:27;;:60;3790:267;4127:5;:17;;;:24;4084:5;:18;;;:32;;;:39;:67;4067:150;;4183:23;;;;;;;;;;;;;;4067:150;4231:9;4226:429;4250:5;:17;;;:24;4246:1;:28;4226:429;;;4295:25;4323:5;:17;;;4341:1;4323:20;;;;;;;;:::i;:::-;;;;;;;4295:48;;4357:20;4380:5;:18;;;:32;;;4413:1;4380:35;;;;;;;;:::i;:::-;;;;;;;4357:58;;4433:12;4449:1;4433:17;4429:216;;4489:6;:18;;;4474:12;:33;4470:110;;;4538:23;;;;;;;;;;;;;;4470:110;4597:18;;;:33;;;4429:216;4281:374;;4276:3;;;;;:::i;:::-;;;;4226:429;;3948:462:51;4081:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;4081:24:51;4145:5;:15;;;4125:5;:17;;;:35;4121:91;;;4183:18;;;;;;;;;;;;;;4121:91;4222:20;4245:85;4265:5;:17;;;4284:5;:15;;;4301:14;4317:12;4245:19;:85::i;:::-;4349:54;;;;;;;;4360:11;;4349:54;;;;;;;;;;;4387:15;;;;4349:54;;;;;;;-1:-1:-1;4349:54:51;;3948:462;-1:-1:-1;;;3948:462:51:o;3223:453::-;3427:14;;3361:27;;3427:14;3460:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;3460:31:51;;;;;;;;;;;;;;;3451:40;;3530:9;3525:135;3549:12;3545:1;:16;3525:135;;;3598:47;3604:7;3612:1;3604:10;;;;;;;;:::i;:::-;;;;;;;3616:14;3632:12;3598:5;:47::i;:::-;3586:6;3593:1;3586:9;;;;;;;;:::i;:::-;;;;;;;;;;:59;3563:3;;3525:135;;;;3394:282;3223:453;;;;;:::o;1073:929:54:-;1352:47;1369:9;1380:18;1352:16;:47::i;:::-;1415:7;1348:84;1536:22;1532:103;;1603:21;;;;;;;;;;;;;;1532:103;1720:13;;;;1689:28;1743:253;1767:7;:14;1763:1;:18;1743:253;;;1798:25;1826:7;1834:1;1826:10;;;;;;;;:::i;:::-;;;;;;;1798:38;;1866:59;1897:22;743:6;1891:28;;;;:::i;:::-;1866:13;;;;;743:6;1866:24;:59::i;:::-;1850:13;;;;:75;1968:3;;1743:253;;1725:2079:41;1810:13;;1802:36;1810:13;1798:73;;1725:2079;:::o;1798:73::-;1915:13;;:34;;;;;1881:31;;1915:13;;;:27;;:34;;1943:5;;1915:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1983:13;;;;:20;2040:17;;1881:68;;-1:-1:-1;1983:20:41;1959:21;2194:32;2040:17;1983:20;2194:32;:::i;:::-;2176:51;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;2176:51:41;;;;;;;;;;;;;;;2142:85;;2267:9;2262:109;2286:13;2282:1;:17;2262:109;;;2340:5;:13;;;2354:1;2340:16;;;;;;;;:::i;:::-;;;;;;;2324:10;2335:1;2324:13;;;;;;;;:::i;:::-;;;;;;;;;;:32;2301:3;;2262:109;;;;2396:9;2391:1370;2415:16;2411:1;:20;2391:1370;;;2448:28;2479:10;2490:1;2479:13;;;;;;;;:::i;:::-;;;;;;;2448:44;;2575:9;2570:207;2594:1;2590;:5;2570:207;;;2647:10;2658:1;2647:13;;;;;;;;:::i;:::-;;;;;;;:19;;;2628:38;;:9;:15;;;:38;;;2624:135;;2720:15;;2701:35;;;;;2288:42:80;2276:55;;;2701:35:41;;;2258:74:80;2231:18;;2701:35:41;2094:244:80;2624:135:41;2597:3;;2570:207;;;-1:-1:-1;2856:18:41;;2888:310;2912:13;2908:1;:17;2888:310;;;2946:25;2974:5;:13;;;2988:1;2974:16;;;;;;;;:::i;:::-;;;;;;;2946:44;;3028:9;:15;;;3012:31;;:6;:12;;;:31;;;3008:105;;3081:13;;;;3067:27;;;;:::i;:::-;;;3008:105;-1:-1:-1;3162:3:41;;2888:310;;;-1:-1:-1;3294:15:41;;3272:11;;;;:17;3264:45;;;;;;;3260:116;;3343:11;;;;;:18;;3329:32;;;;:::i;:::-;;;3260:116;3394:10;3408:1;3394:15;3390:60;;3434:15;;3418:32;;;;;2288:42:80;2276:55;;;3418:32:41;;;2258:74:80;2231:18;;3418:32:41;2094:244:80;3390:60:41;3488:39;:10;1324:1;1273:6;3488:21;:39::i;:::-;3469:9;:16;;;:58;3465:171;;;3566:15;;3583:16;;;;3601:19;;;;;3554:67;;;;;25604:42:80;25673:15;;;3554:67:41;;;25655:34:80;25705:18;;;25698:34;;;;25768:15;;;;25748:18;;;25741:43;25567:18;;3554:67:41;25392:398:80;3465:171:41;3681:9;3649:10;3660:17;3676:1;3660:13;:17;:::i;:::-;3649:29;;;;;;;;:::i;:::-;;;;;;;;;;:41;-1:-1:-1;;3733:3:41;;2391:1370;;;-1:-1:-1;3771:13:41;;;;:26;;;;-1:-1:-1;;;1725:2079:41:o;429:396:58:-;552:18;;:26;527:52;;535:4;527:52;523:106;;602:16;;;;;;;;;;;;;;523:106;651:18;;:47;;;643:70;;;639:180;;729:18;;:47;;;:79;;;;;:56;;;;;;;:79;;786:6;;729:13;;:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3314:363:62;3431:7;:33;;;3478:16;:5;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;509:303:57;;;572:149;;;;;641:11;;;;;;:17;572:149;;509:303;;;;572:149;;;685:11;;:21;;;572:149;;;;509:303;;742:10;;:16;;;509:303;;;;;;;782:10;;:19;;;;509:303;;;;;349:470;3478:16:62;-1:-1:-1;;;;;;;;;;;;;;;;;1071:90:57;;;;;;;;;;;;;1141:11;;;;:18;;;1071:90;;;;3547:5:62;:10;;;:18;;;3579:5;:10;;;2300:31:59;;;;;;;;;;;;;;;;;2345:28;;;;;;;;;;;;;;;;;2387:36;;;;;;;;;;;;;;;;;1589:256;;19217:15:80;1589:256:59;;;19205:28:80;19263:17;19249:12;;;19242:39;19311:19;19297:12;;;19290:41;19361:25;19347:12;;;19340:47;19417:31;19403:12;;;19396:53;19479:29;19465:12;;;19458:51;19540:28;19525:13;;;19518:51;19585:13;;1589:256:59;;;;;;;;;;;;;;2233:233;;;;;1589:256;2233:233;;:::i;:::-;;;;;;;;;;;;;;;3651:9:62;;;;3431:239;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1478:434:50;2501:18;;;1572:334;;1695:33;1710:9;1721:6;1695:14;:33::i;1572:334::-;1832:63;:32;;;1865:10;1877:9;1888:6;1832:32;:63::i;2084:189::-;2163:12;2180:9;:14;;2202:6;2180:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2162:51;;;2228:7;2223:43;;2244:22;;;;;;;;;;;;;;574:416:56;634:7;461:15;;;;;;;;;;;;;;;;;451:26;;;;;;;749:12;;779;;;;809:10;;;;;837:13;;;;868:33;;;;929:29;;;;919:40;;;;;;683:290;;;;809:10;;837:13;;868:33;;919:40;683:290;29147:25:80;;;29191:42;29269:15;;;29264:2;29249:18;;29242:43;29321:15;;;29316:2;29301:18;;29294:43;29368:2;29353:18;;29346:34;;;;29411:3;29396:19;;29389:35;29461:15;;;29455:3;29440:19;;29433:44;29508:3;29493:19;;29486:35;29134:3;29119:19;;28785:742;3091:487:52;3158:7;3201:25;3244:7;:14;3239:2;:19;3229:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3229:30:52;;3201:58;;3279:9;3274:243;3298:7;:14;3294:1;:18;3274:243;;;3337:18;3358:16;3363:7;3371:1;3363:10;;;;;;;;:::i;:::-;;;;;;;3358:4;:16::i;:::-;3466:4;3459:12;;;3430:42;;;3423:62;-1:-1:-1;3314:3:52;;3274:243;;;-1:-1:-1;3538:23:52;;;;;;;;3091:487;-1:-1:-1;;3091:487:52:o;1212:966:51:-;1360:21;1417:14;1401:12;:30;1397:775;;1454:24;;;;;;;;;;;;;;1397:775;1515:15;1499:12;:31;1495:677;;-1:-1:-1;1562:9:51;1495:677;;;1610:15;1592:14;:33;1588:584;;-1:-1:-1;1657:11:51;1588:584;;;1745:15;:32;;;1814:29;;;1865:23;;;1861:287;;;1942:55;1943:23;;;1979:7;1988:8;1942:36;:55::i;:::-;1928:11;:69;1912:85;;1861:287;;;2074:55;2075:23;;;2111:7;2120:8;2074:36;:55::i;:::-;2060:11;:69;2044:85;;1861:287;1699:463;;1588:584;1212:966;;;;;;:::o;2454:474::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;2655:6:51;:16;;;2634:6;:18;;;:37;2630:93;;;2694:18;;;;;;;;;;;;;;2630:93;2733:21;2757:87;2777:6;:18;;;2797:6;:16;;;2815:14;2831:12;2757:19;:87::i;:::-;2733:111;;2863:58;;;;;;;;2875:6;:12;;;2863:58;;;;;;2889:13;2863:58;;;;2904:6;:16;;;2863:58;;;;;2854:67;;2620:308;2454:474;;;;;:::o;2894:216:54:-;2990:4;3013:23;;;;;:63;;;3058:18;3040:15;:36;3013:63;:90;;;-1:-1:-1;3080:23:54;;;3093:10;3080:23;3013:90;3006:97;;2894:216;;;;;:::o;1564:526:38:-;1680:9;1928:1;1915:11;1911:19;1908:1;1905:26;1902:1;1898:34;1891:42;1878:11;1874:60;1864:116;;1964:1;1961;1954:12;1864:116;-1:-1:-1;2051:9:38;;2047:27;;1564:526::o;1328:1782:39:-;1466:12;1636:4;1630:11;1778:66;1759:17;1752:93;1902:42;1896:4;1892:53;1888:1;1869:17;1865:25;1858:88;2042:42;2038:2;2034:51;2029:2;2010:17;2006:26;1999:87;2172:6;2167:2;2148:17;2144:26;2137:42;3026:2;3023:1;3018:3;2999:17;2996:1;2989:5;2982;2977:52;2545:16;2538:24;2532:2;2514:16;2511:24;2507:1;2503;2497:8;2494:15;2490:46;2487:76;2287:756;2276:767;;;3071:7;3063:40;;;;;;;29734:2:80;3063:40:39;;;29716:21:80;29773:2;29753:18;;;29746:30;29812:22;29792:18;;;29785:50;29852:18;;3063:40:39;29532:344:80;3063:40:39;1456:1654;1328:1782;;;;:::o;2728:234:52:-;2792:7;1695:17;;;;;;;;;;;;;;;;;1685:28;;;;;;;2876:12;;2890:18;;;;2910:16;;;;;2928;;;;2841:104;;;;2910:16;;2928;2841:104;30140:25:80;;;30184:42;30262:15;;;30257:2;30242:18;;30235:43;30309:2;30294:18;;30287:34;;;;30352:2;30337:18;;30330:34;30401:15;30395:3;30380:19;;30373:44;30127:3;30112:19;;29881:542;14:159;78:5;123:2;114:6;109:3;105:16;101:25;98:45;;;139:1;136;129:12;98:45;-1:-1:-1;161:6:80;14:159;-1:-1:-1;14:159:80:o;178:347::-;229:8;239:6;293:3;286:4;278:6;274:17;270:27;260:55;;311:1;308;301:12;260:55;-1:-1:-1;334:20:80;;377:18;366:30;;363:50;;;409:1;406;399:12;363:50;446:4;438:6;434:17;422:29;;498:3;491:4;482:6;474;470:19;466:30;463:39;460:59;;;515:1;512;505:12;460:59;178:347;;;;;:::o;530:673::-;641:6;649;657;710:2;698:9;689:7;685:23;681:32;678:52;;;726:1;723;716:12;678:52;766:9;753:23;795:18;836:2;828:6;825:14;822:34;;;852:1;849;842:12;822:34;875:71;938:7;929:6;918:9;914:22;875:71;:::i;:::-;865:81;;999:2;988:9;984:18;971:32;955:48;;1028:2;1018:8;1015:16;1012:36;;;1044:1;1041;1034:12;1012:36;;1083:60;1135:7;1124:8;1113:9;1109:24;1083:60;:::i;:::-;530:673;;1162:8;;-1:-1:-1;1057:86:80;;-1:-1:-1;;;;530:673:80:o;1208:387::-;1291:8;1301:6;1355:3;1348:4;1340:6;1336:17;1332:27;1322:55;;1373:1;1370;1363:12;1322:55;-1:-1:-1;1396:20:80;;1439:18;1428:30;;1425:50;;;1471:1;1468;1461:12;1425:50;1508:4;1500:6;1496:17;1484:29;;1568:3;1561:4;1551:6;1548:1;1544:14;1536:6;1532:27;1528:38;1525:47;1522:67;;;1585:1;1582;1575:12;1600:489;1718:6;1726;1779:2;1767:9;1758:7;1754:23;1750:32;1747:52;;;1795:1;1792;1785:12;1747:52;1835:9;1822:23;1868:18;1860:6;1857:30;1854:50;;;1900:1;1897;1890:12;1854:50;1939:90;2021:7;2012:6;2001:9;1997:22;1939:90;:::i;:::-;2048:8;;1913:116;;-1:-1:-1;1600:489:80;-1:-1:-1;;;;1600:489:80:o;2343:797::-;2481:6;2489;2497;2505;2558:2;2546:9;2537:7;2533:23;2529:32;2526:52;;;2574:1;2571;2564:12;2526:52;2614:9;2601:23;2643:18;2684:2;2676:6;2673:14;2670:34;;;2700:1;2697;2690:12;2670:34;2739:90;2821:7;2812:6;2801:9;2797:22;2739:90;:::i;:::-;2848:8;;-1:-1:-1;2713:116:80;-1:-1:-1;2936:2:80;2921:18;;2908:32;;-1:-1:-1;2952:16:80;;;2949:36;;;2981:1;2978;2971:12;2949:36;;3020:60;3072:7;3061:8;3050:9;3046:24;3020:60;:::i;:::-;2343:797;;;;-1:-1:-1;3099:8:80;-1:-1:-1;;;;2343:797:80:o;3145:154::-;3231:42;3224:5;3220:54;3213:5;3210:65;3200:93;;3289:1;3286;3279:12;3304:134;3372:20;;3401:31;3372:20;3401:31;:::i;:::-;3304:134;;;:::o;3443:247::-;3502:6;3555:2;3543:9;3534:7;3530:23;3526:32;3523:52;;;3571:1;3568;3561:12;3523:52;3610:9;3597:23;3629:31;3654:5;3629:31;:::i;:::-;3679:5;3443:247;-1:-1:-1;;;3443:247:80:o;3695:365::-;3786:6;3839:2;3827:9;3818:7;3814:23;3810:32;3807:52;;;3855:1;3852;3845:12;3807:52;3895:9;3882:23;3928:18;3920:6;3917:30;3914:50;;;3960:1;3957;3950:12;3914:50;3983:71;4046:7;4037:6;4026:9;4022:22;3983:71;:::i;4559:184::-;4611:77;4608:1;4601:88;4708:4;4705:1;4698:15;4732:4;4729:1;4722:15;4748:184;4800:77;4797:1;4790:88;4897:4;4894:1;4887:15;4921:4;4918:1;4911:15;4937:250;5022:1;5032:113;5046:6;5043:1;5040:13;5032:113;;;5122:11;;;5116:18;5103:11;;;5096:39;5068:2;5061:10;5032:113;;;-1:-1:-1;;5179:1:80;5161:16;;5154:27;4937:250::o;5192:329::-;5233:3;5271:5;5265:12;5298:6;5293:3;5286:19;5314:76;5383:6;5376:4;5371:3;5367:14;5360:4;5353:5;5349:16;5314:76;:::i;:::-;5435:2;5423:15;5440:66;5419:88;5410:98;;;;5510:4;5406:109;;5192:329;-1:-1:-1;;5192:329:80:o;5787:696::-;5851:3;5889:5;5883:12;5916:6;5911:3;5904:19;5942:4;5971:2;5966:3;5962:12;5955:19;;6008:2;6001:5;5997:14;6029:1;6039:419;6053:6;6050:1;6047:13;6039:419;;;6112:13;;6219:9;;6148:42;6215:18;;;6203:31;;6274:11;;;6268:18;6254:12;;;6247:40;6310:4;6358:11;;;6352:18;6348:27;6334:12;;;6327:49;6405:4;6396:14;;;;6433:15;;;;6075:1;6068:9;6039:419;;;-1:-1:-1;6474:3:80;;5787:696;-1:-1:-1;;;;;5787:696:80:o;6488:1240::-;6544:3;6588:5;6582:12;6615:4;6610:3;6603:17;6639:42;6738:2;6723:12;6717:19;6713:28;6706:4;6701:3;6697:14;6690:52;6809:2;6801:4;6787:12;6783:23;6777:30;6773:39;6767:3;6762;6758:13;6751:62;6868:4;6854:12;6850:23;6844:30;6838:3;6833;6829:13;6822:53;6930:4;6916:12;6912:23;6906:30;6900:3;6895;6891:13;6884:53;7004:2;6996:4;6982:12;6978:23;6972:30;6968:39;6962:3;6957;6953:13;6946:62;;7063:4;7049:12;7045:23;7039:30;7017:52;;7100:4;7094:3;7089;7085:13;7078:27;7127:47;7169:3;7164;7160:13;7144:14;7127:47;:::i;:::-;7114:60;;7222:4;7215:5;7211:16;7205:23;7237:60;7291:4;7286:3;7282:14;7266;5606:12;;5620:42;5602:61;5590:74;;5713:4;5702:16;;;5696:23;5680:14;;;5673:47;5769:4;5758:16;;;5752:23;5736:14;;5729:47;5526:256;7237:60;;7345:4;7338:5;7334:16;7328:23;7394:3;7387:5;7383:15;7376:4;7371:3;7367:14;7360:39;7420:62;7476:5;7460:14;7420:62;:::i;:::-;7408:74;;;7530:4;7523:5;7519:16;7513:23;7578:3;7572:4;7568:14;7561:4;7556:3;7552:14;7545:38;7606;7639:4;7623:14;7606:38;:::i;:::-;7592:52;;;7693:4;7686:5;7682:16;7676:23;7669:4;7664:3;7660:14;7653:47;7716:6;7709:13;;;6488:1240;;;;:::o;7733:1274::-;7995:4;8043:2;8032:9;8028:18;8073:2;8062:9;8055:21;8096:6;8131;8125:13;8162:6;8154;8147:22;8200:2;8189:9;8185:18;8178:25;;8262:2;8252:6;8249:1;8245:14;8234:9;8230:30;8226:39;8212:53;;8284:4;8323:2;8315:6;8311:15;8344:1;8354:328;8368:6;8365:1;8362:13;8354:328;;;8457:66;8445:9;8437:6;8433:22;8429:95;8424:3;8417:108;8548:54;8595:6;8586;8580:13;8548:54;:::i;:::-;8538:64;-1:-1:-1;8660:12:80;;;;8625:15;;;;8390:1;8383:9;8354:328;;;8358:3;;8730:9;8722:6;8718:22;8713:2;8702:9;8698:18;8691:50;8765:6;8757;8750:22;8819:6;8811;8806:2;8798:6;8794:15;8781:45;8872:1;8846:19;;;8842:28;;8835:39;8923:2;8911:15;;;8928:66;8907:88;8895:101;;;8891:110;;;;7733:1274;-1:-1:-1;;;;;;7733:1274:80:o;9012:388::-;9110:4;9168:11;9155:25;9258:66;9247:8;9231:14;9227:29;9223:102;9203:18;9199:127;9189:155;;9340:1;9337;9330:12;9189:155;9361:33;;;;;9012:388;-1:-1:-1;;9012:388:80:o;10438:580::-;10515:4;10521:6;10581:11;10568:25;10671:66;10660:8;10644:14;10640:29;10636:102;10616:18;10612:127;10602:155;;10753:1;10750;10743:12;10602:155;10780:33;;10832:20;;;-1:-1:-1;10875:18:80;10864:30;;10861:50;;;10907:1;10904;10897:12;10861:50;10940:4;10928:17;;-1:-1:-1;10971:14:80;10967:27;;;10957:38;;10954:58;;;11008:1;11005;10998:12;11023:253;11095:2;11089:9;11137:4;11125:17;;11172:18;11157:34;;11193:22;;;11154:62;11151:88;;;11219:18;;:::i;:::-;11255:2;11248:22;11023:253;:::o;11281:::-;11353:2;11347:9;11395:4;11383:17;;11430:18;11415:34;;11451:22;;;11412:62;11409:88;;;11477:18;;:::i;11539:253::-;11611:2;11605:9;11653:4;11641:17;;11688:18;11673:34;;11709:22;;;11670:62;11667:88;;;11735:18;;:::i;11797:334::-;11868:2;11862:9;11924:2;11914:13;;11929:66;11910:86;11898:99;;12027:18;12012:34;;12048:22;;;12009:62;12006:88;;;12074:18;;:::i;:::-;12110:2;12103:22;11797:334;;-1:-1:-1;11797:334:80:o;12136:589::-;12178:5;12231:3;12224:4;12216:6;12212:17;12208:27;12198:55;;12249:1;12246;12239:12;12198:55;12285:6;12272:20;12311:18;12307:2;12304:26;12301:52;;;12333:18;;:::i;:::-;12377:114;12485:4;12416:66;12409:4;12405:2;12401:13;12397:86;12393:97;12377:114;:::i;:::-;12516:2;12507:7;12500:19;12562:3;12555:4;12550:2;12542:6;12538:15;12534:26;12531:35;12528:55;;;12579:1;12576;12569:12;12528:55;12644:2;12637:4;12629:6;12625:17;12618:4;12609:7;12605:18;12592:55;12692:1;12667:16;;;12685:4;12663:27;12656:38;;;;12671:7;12136:589;-1:-1:-1;;;12136:589:80:o;12730:894::-;12786:5;12834:4;12822:9;12817:3;12813:19;12809:30;12806:50;;;12852:1;12849;12842:12;12806:50;12874:22;;:::i;:::-;12865:31;;12933:9;12920:23;12952:33;12977:7;12952:33;:::i;:::-;12994:22;;13068:2;13053:18;;13040:32;13081:33;13040:32;13081:33;:::i;:::-;13146:7;13141:2;13134:5;13130:14;13123:31;;13214:2;13203:9;13199:18;13186:32;13181:2;13174:5;13170:14;13163:56;13279:2;13268:9;13264:18;13251:32;13246:2;13239:5;13235:14;13228:56;13336:3;13325:9;13321:19;13308:33;13350;13375:7;13350:33;:::i;:::-;13410:3;13399:15;;13392:32;13475:3;13460:19;;13447:33;13503:18;13492:30;;13489:50;;;13535:1;13532;13525:12;13489:50;13572:45;13613:3;13604:6;13593:9;13589:22;13572:45;:::i;:::-;13566:3;13559:5;13555:15;13548:70;;12730:894;;;;:::o;13629:423::-;13686:5;13734:4;13722:9;13717:3;13713:19;13709:30;13706:50;;;13752:1;13749;13742:12;13706:50;13774:22;;:::i;:::-;13765:31;;13833:9;13820:23;13852:33;13877:7;13852:33;:::i;:::-;13908:7;13901:5;13894:22;;13976:2;13965:9;13961:18;13948:32;13943:2;13936:5;13932:14;13925:56;14041:2;14030:9;14026:18;14013:32;14008:2;14001:5;13997:14;13990:56;13629:423;;;;:::o;14057:194::-;14128:4;14161:18;14153:6;14150:30;14147:56;;;14183:18;;:::i;:::-;-1:-1:-1;14228:1:80;14224:14;14240:4;14220:25;;14057:194::o;14256:1295::-;14321:5;14374:3;14367:4;14359:6;14355:17;14351:27;14341:55;;14392:1;14389;14382:12;14341:55;14428:6;14415:20;14454:4;14478:71;14494:54;14545:2;14494:54;:::i;:::-;14478:71;:::i;:::-;14583:15;;;14669:1;14665:10;;;;14653:23;;14649:32;;;14614:12;;;;14693:15;;;14690:35;;;14721:1;14718;14711:12;14690:35;14757:2;14749:6;14745:15;14769:753;14785:6;14780:3;14777:15;14769:753;;;14863:4;14857:3;14852;14848:13;14844:24;14841:114;;;14909:1;14938:2;14934;14927:14;14841:114;14981:22;;:::i;:::-;15044:3;15031:17;15061:33;15086:7;15061:33;:::i;:::-;15107:22;;15178:12;;;15165:26;15149:14;;;15142:50;15215:2;15266:12;;;15253:26;15237:14;;;15230:50;15303:2;15346:12;;;15333:26;15372:33;15333:26;15372:33;:::i;:::-;15425:14;;;15418:31;15462:18;;15500:12;;;;14811:4;14802:14;14769:753;;;-1:-1:-1;15540:5:80;14256:1295;-1:-1:-1;;;;;;14256:1295:80:o;15556:1313::-;15615:5;15663:4;15651:9;15646:3;15642:19;15638:30;15635:50;;;15681:1;15678;15671:12;15635:50;15703:22;;:::i;:::-;15694:31;;15761:9;15748:23;15741:5;15734:38;15791:2;15853;15842:9;15838:18;15825:32;15820:2;15813:5;15809:14;15802:56;15910:2;15899:9;15895:18;15882:32;15923:33;15948:7;15923:33;:::i;:::-;15988:7;15983:2;15976:5;15972:14;15965:31;;16056:2;16045:9;16041:18;16028:32;16023:2;16016:5;16012:14;16005:56;16122:3;16111:9;16107:19;16094:33;16088:3;16081:5;16077:15;16070:58;16179:3;16168:9;16164:19;16151:33;16207:18;16199:6;16196:30;16193:50;;;16239:1;16236;16229:12;16193:50;16262:22;;16315:4;16307:13;;16303:23;-1:-1:-1;16293:51:80;;16340:1;16337;16330:12;16293:51;16376:2;16363:16;16399:71;16415:54;16466:2;16415:54;:::i;16399:71::-;16504:15;;;16586:1;16582:10;;;;16574:19;;16570:28;;;16535:12;;;;16610:15;;;16607:35;;;16638:1;16635;16628:12;16607:35;16662:11;;;;16682:142;16698:6;16693:3;16690:15;16682:142;;;16764:17;;16752:30;;16715:12;;;;16802;;;;16682:142;;;16851:3;16840:15;;16833:30;-1:-1:-1;16844:5:80;;15556:1313;-1:-1:-1;;;;;15556:1313:80:o;16874:1336::-;16964:6;17017:2;17005:9;16996:7;16992:23;16988:32;16985:52;;;17033:1;17030;17023:12;16985:52;17073:9;17060:23;17102:18;17143:2;17135:6;17132:14;17129:34;;;17159:1;17156;17149:12;17129:34;17182:22;;;;17238:6;17220:16;;;17216:29;17213:49;;;17258:1;17255;17248:12;17213:49;17284:22;;:::i;:::-;17344:2;17331:16;17372:2;17362:8;17359:16;17356:36;;;17388:1;17385;17378:12;17356:36;17415:55;17462:7;17451:8;17447:2;17443:17;17415:55;:::i;:::-;17408:5;17401:70;;17503:31;17530:2;17526;17522:11;17503:31;:::i;:::-;17498:2;17491:5;17487:14;17480:55;17567:50;17609:7;17604:2;17600;17596:11;17567:50;:::i;:::-;17562:2;17555:5;17551:14;17544:74;17664:3;17660:2;17656:12;17643:26;17694:2;17684:8;17681:16;17678:36;;;17710:1;17707;17700:12;17678:36;17748:67;17807:7;17796:8;17792:2;17788:17;17748:67;:::i;:::-;17741:4;17734:5;17730:16;17723:93;;17862:4;17858:2;17854:13;17841:27;17893:2;17883:8;17880:16;17877:36;;;17909:1;17906;17899:12;17877:36;17947:58;17997:7;17986:8;17982:2;17978:17;17947:58;:::i;:::-;17940:4;17933:5;17929:16;17922:84;;18052:3;18048:2;18044:12;18031:26;18082:2;18072:8;18069:16;18066:36;;;18098:1;18095;18088:12;18066:36;18135:44;18171:7;18160:8;18156:2;18152:17;18135:44;:::i;:::-;18129:3;18118:15;;18111:69;-1:-1:-1;18122:5:80;16874:1336;-1:-1:-1;;;;;16874:1336:80:o;19609:697::-;19830:3;19868:6;19862:13;19884:66;19943:6;19938:3;19931:4;19923:6;19919:17;19884:66;:::i;:::-;20013:13;;19972:16;;;;20035:70;20013:13;19972:16;20082:4;20070:17;;20035:70;:::i;:::-;20172:13;;20127:20;;;20194:70;20172:13;20127:20;20241:4;20229:17;;20194:70;:::i;:::-;20280:20;;19609:697;-1:-1:-1;;;;;19609:697:80:o;21017:245::-;21096:6;21104;21157:2;21145:9;21136:7;21132:23;21128:32;21125:52;;;21173:1;21170;21163:12;21125:52;-1:-1:-1;;21196:16:80;;21252:2;21237:18;;;21231:25;21196:16;;21231:25;;-1:-1:-1;21017:245:80:o;21267:1091::-;21421:4;21450:2;21479;21468:9;21461:21;21520:3;21509:9;21505:19;21566:6;21560:13;21555:2;21544:9;21540:18;21533:41;21628:2;21620:6;21616:15;21610:22;21605:2;21594:9;21590:18;21583:50;21697:42;21691:2;21683:6;21679:15;21673:22;21669:71;21664:2;21653:9;21649:18;21642:99;21796:2;21788:6;21784:15;21778:22;21772:3;21761:9;21757:19;21750:51;21856:3;21848:6;21844:16;21838:23;21832:3;21821:9;21817:19;21810:52;21909:3;21901:6;21897:16;21891:23;21952:4;21945;21934:9;21930:20;21923:34;21977:6;22012:12;22006:19;22049:6;22041;22034:22;22087:3;22076:9;22072:19;22065:26;;22132:2;22118:12;22114:21;22100:35;;22153:1;22144:10;;22163:169;22177:6;22174:1;22171:13;22163:169;;;22238:13;;22226:26;;22307:15;;;;22199:1;22192:9;;;;;22272:12;;;;22163:169;;22363:359;22550:6;22545:3;22538:19;22520:3;22586:6;22580:13;22602:73;22668:6;22663:2;22658:3;22654:12;22649:2;22641:6;22637:15;22602:73;:::i;:::-;22695:16;;;;22713:2;22691:25;;22363:359;-1:-1:-1;;;22363:359:80:o;23130:184::-;23182:77;23179:1;23172:88;23279:4;23276:1;23269:15;23303:4;23300:1;23293:15;23319:195;23358:3;23389:66;23382:5;23379:77;23376:103;;23459:18;;:::i;:::-;-1:-1:-1;23506:1:80;23495:13;;23319:195::o;23519:125::-;23584:9;;;23605:10;;;23602:36;;;23618:18;;:::i;23649:278::-;23842:2;23831:9;23824:21;23805:4;23862:59;23917:2;23906:9;23902:18;23894:6;23862:59;:::i;23932:1455::-;24057:6;24088:2;24131;24119:9;24110:7;24106:23;24102:32;24099:52;;;24147:1;24144;24137:12;24099:52;24180:9;24174:16;24213:18;24205:6;24202:30;24199:50;;;24245:1;24242;24235:12;24199:50;24268:22;;24321:4;24313:13;;24309:27;-1:-1:-1;24299:55:80;;24350:1;24347;24340:12;24299:55;24379:2;24373:9;24402:71;24418:54;24469:2;24418:54;:::i;24402:71::-;24507:15;;;24569:4;24608:11;;;24600:20;;24596:29;;;24538:12;;;;24495:3;24637:19;;;24634:39;;;24669:1;24666;24659:12;24634:39;24693:11;;;;24713:644;24729:6;24724:3;24721:15;24713:644;;;24809:2;24803:3;24794:7;24790:17;24786:26;24783:116;;;24853:1;24882:2;24878;24871:14;24783:116;24925:22;;:::i;:::-;24981:3;24975:10;24998:33;25023:7;24998:33;:::i;:::-;25044:22;;25108:12;;;25102:19;25086:14;;;25079:43;25145:2;25181:12;;;25175:19;25207:33;25175:19;25207:33;:::i;:::-;25260:14;;;25253:31;25297:18;;24746:12;;;;25335;;;;24713:644;;;-1:-1:-1;25376:5:80;23932:1455;-1:-1:-1;;;;;;;23932:1455:80:o;25795:398::-;26028:42;26020:6;26016:55;26005:9;25998:74;26108:2;26103;26092:9;26088:18;26081:30;25979:4;26128:59;26183:2;26172:9;26168:18;26160:6;26128:59;:::i;26198:1068::-;26598:23;26593:3;26586:36;26568:3;26651:6;26645:13;26667:75;26735:6;26730:2;26725:3;26721:12;26714:4;26706:6;26702:17;26667:75;:::i;:::-;26802:13;;26761:16;;;;26824:76;26802:13;26886:2;26878:11;;26871:4;26859:17;;26824:76;:::i;:::-;26961:13;;26919:17;;;26983:76;26961:13;27045:2;27037:11;;27030:4;27018:17;;26983:76;:::i;:::-;27120:13;;27078:17;;;27142:76;27120:13;27204:2;27196:11;;27189:4;27177:17;;27142:76;:::i;:::-;27238:17;27257:2;27234:26;;26198:1068;-1:-1:-1;;;;;;26198:1068:80:o;27482:1088::-;27912:4;27941:3;27953:60;28003:9;27994:6;27988:13;27357:12;;27371:42;27353:61;27341:74;;27464:4;27453:16;;;27447:23;27431:14;;27424:47;27271:206;27953:60;28069:4;28061:6;28057:17;28051:24;28044:4;28033:9;28029:20;28022:54;28132:4;28124:6;28120:17;28114:24;28107:4;28096:9;28092:20;28085:54;28148:63;28206:3;28195:9;28191:19;28183:6;27357:12;;27371:42;27353:61;27341:74;;27464:4;27453:16;;;27447:23;27431:14;;27424:47;27271:206;28148:63;28260:42;28252:6;28248:55;28242:3;28231:9;28227:19;28220:84;28341:6;28335:3;28324:9;28320:19;28313:35;28385:2;28379:3;28368:9;28364:19;28357:31;28411:44;28451:2;28440:9;28436:18;28428:6;28411:44;:::i;:::-;28397:58;;28504:9;28496:6;28492:22;28486:3;28475:9;28471:19;28464:51;28532:32;28557:6;28549;28532:32;:::i;:::-;28524:40;27482:1088;-1:-1:-1;;;;;;;;;27482:1088:80:o","linkReferences":{},"immutableReferences":{"44899":[{"start":224,"length":32},{"start":7009,"length":32}]}},"methodIdentifiers":{"execute((bytes,bytes))":"3f62192e","executeBatch((bytes,bytes)[])":"0d7a16c3","executeBatchWithCallback((bytes,bytes)[],bytes)":"13fb72c7","executeWithCallback((bytes,bytes),bytes)":"0d335884","feeController()":"6999b377","owner()":"8da5cb5b","permit2()":"12261ee7","setProtocolFeeController(address)":"2d771389","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IPermit2\",\"name\":\"_permit2\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_protocolFeeOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"DeadlineBeforeEndTime\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"duplicateToken\",\"type\":\"address\"}],\"name\":\"DuplicateFeeOutput\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EndTimeBeforeStartTime\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"FeeTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectAmounts\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputAndOutputDecay\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEth\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCosignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCosignerInput\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCosignerOutput\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeToken\",\"type\":\"address\"}],\"name\":\"InvalidFeeToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidReactor\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NativeTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoExclusiveOverride\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"filler\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"swapper\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"Fill\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldFeeController\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newFeeController\",\"type\":\"address\"}],\"name\":\"ProtocolFeeControllerSet\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"order\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedOrder\",\"name\":\"order\",\"type\":\"tuple\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"order\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedOrder[]\",\"name\":\"orders\",\"type\":\"tuple[]\"}],\"name\":\"executeBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"order\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedOrder[]\",\"name\":\"orders\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"callbackData\",\"type\":\"bytes\"}],\"name\":\"executeBatchWithCallback\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"order\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedOrder\",\"name\":\"order\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"callbackData\",\"type\":\"bytes\"}],\"name\":\"executeWithCallback\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeController\",\"outputs\":[{\"internalType\":\"contract IProtocolFeeController\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"permit2\",\"outputs\":[{\"internalType\":\"contract IPermit2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newFeeController\",\"type\":\"address\"}],\"name\":\"setProtocolFeeController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"V2 orders must be cosigned by the specified cosigner to override timings and starting valuesresolution behavior: - If cosignature is invalid or not from specified cosigner, revert - If inputAmount is 0, then use baseInput - If inputAmount is nonzero, then ensure it is less than specified baseOutput and replace startAmount - For each outputAmount: - If amount is 0, then use baseOutput - If amount is nonzero, then ensure it is greater than specified baseOutput and replace startAmount\",\"events\":{\"Fill(bytes32,address,address,uint256)\":{\"params\":{\"filler\":\"The address which executed the fill\",\"nonce\":\"The nonce of the filled order\",\"orderHash\":\"The hash of the order that was filled\",\"swapper\":\"The swapper of the filled order\"}}},\"kind\":\"dev\",\"methods\":{\"execute((bytes,bytes))\":{\"params\":{\"order\":\"The order definition and valid signature to execute\"}},\"executeBatch((bytes,bytes)[])\":{\"params\":{\"orders\":\"The order definitions and valid signatures to execute\"}},\"executeBatchWithCallback((bytes,bytes)[],bytes)\":{\"params\":{\"callbackData\":\"The callbackData to pass to the callback\",\"orders\":\"The order definitions and valid signatures to execute\"}},\"executeWithCallback((bytes,bytes),bytes)\":{\"params\":{\"callbackData\":\"The callbackData to pass to the callback\",\"order\":\"The order definition and valid signature to execute\"}},\"setProtocolFeeController(address)\":{\"details\":\"only callable by the owner\",\"params\":{\"_newFeeController\":\"the new fee controller\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"DeadlineBeforeEndTime()\":[{\"notice\":\"thrown when an order's deadline is before its end time\"}],\"DuplicateFeeOutput(address)\":[{\"notice\":\"thrown if two fee outputs have the same token\"}],\"EndTimeBeforeStartTime()\":[{\"notice\":\"thrown if the endTime of an order is before startTime\"}],\"FeeTooLarge(address,uint256,address)\":[{\"notice\":\"thrown if a given fee output is greater than MAX_FEE_BPS of the order outputs\"}],\"IncorrectAmounts()\":[{\"notice\":\"thrown if the decay direction is incorrect - for DutchInput, startAmount must be less than or equal to endAmount - for DutchOutput, startAmount must be greater than or equal to endAmount\"}],\"InputAndOutputDecay()\":[{\"notice\":\"thrown when an order's inputs and outputs both decay\"}],\"InvalidCosignature()\":[{\"notice\":\"thrown when an order's cosignature does not match the expected cosigner\"}],\"InvalidCosignerInput()\":[{\"notice\":\"thrown when an order's cosigner input is greater than the specified\"}],\"InvalidCosignerOutput()\":[{\"notice\":\"thrown when an order's cosigner output is less than the specified\"}],\"InvalidFeeToken(address)\":[{\"notice\":\"thrown if a fee output token does not have a corresponding non-fee output\"}],\"InvalidReactor()\":[{\"notice\":\"thrown when the order targets a different reactor\"}],\"NativeTransferFailed()\":[{\"notice\":\"Thrown when a native transfer fails\"}],\"NoExclusiveOverride()\":[{\"notice\":\"thrown when an order has strict exclusivity and the filler does not have it\"}]},\"events\":{\"Fill(bytes32,address,address,uint256)\":{\"notice\":\"emitted when an order is filled\"}},\"kind\":\"user\",\"methods\":{\"execute((bytes,bytes))\":{\"notice\":\"Execute a single order\"},\"executeBatch((bytes,bytes)[])\":{\"notice\":\"Execute the given orders at once\"},\"executeBatchWithCallback((bytes,bytes)[],bytes)\":{\"notice\":\"Execute the given orders at once using a callback with the given callback data\"},\"executeWithCallback((bytes,bytes),bytes)\":{\"notice\":\"Execute a single order using the given callback data\"},\"permit2()\":{\"notice\":\"permit2 address used for token transfers and signature verification\"},\"setProtocolFeeController(address)\":{\"notice\":\"sets the protocol fee controller\"}},\"notice\":\"Reactor for v2 dutch orders\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/reactors/V2DutchOrderReactor.sol\":\"V2DutchOrderReactor\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-gas-snapshot/=lib/forge-gas-snapshot/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":permit2/=lib/permit2/\",\":solarray/=lib/solarray/src/\",\":solmate/=lib/solmate/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0xa535a5df777d44e945dd24aa43a11e44b024140fc340ad0dfe42acf4002aade1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://41319e7f621f2dc3733511332c4fd032f8e32ad2aa7fd6f665c19741d9941a34\",\"dweb:/ipfs/QmcYR3bd862GD1Bc7jwrU9bGxrhUu5na1oP964bDCu2id1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278\",\"dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH\"]},\"lib/permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x78931704a7f1d89ef24244b155863abb751cc3b3818f64303ccb47a396d48dcb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b8d6e198ee29d809564f1c1d7caa11a2c329bb5d051f61210548e546493444d2\",\"dweb:/ipfs/QmVxWftbgETjudymgLdwF77S54DWrp6qB5ooauKXW81cm7\"]},\"lib/permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xea70db68ce450ad38dfbd490058595441144808eb95272ae9b89e3fbe6456954\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8fad9ff319665acdc2f1295bb82db3e5b4d52babc0b58f147dbdbb9f322c6e5\",\"dweb:/ipfs/QmTbYJPcux8eJ3qGVYQh6TiwCA2FPu6HXTUg6QFTnX91Ks\"]},\"lib/permit2/src/interfaces/IPermit2.sol\":{\"keccak256\":\"0xaa631cc9f53e699301d94233007110a345e6779011def484e8dd97b8fe0af771\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc0502cf19c9c18f320a3001201e89e350393b75837f6b7971de18b2de06f30d\",\"dweb:/ipfs/QmT9SfhdJ7VJNNrf94g4H5usyi7ShqWGx7Cqsz9jZTjX96\"]},\"lib/permit2/src/interfaces/ISignatureTransfer.sol\":{\"keccak256\":\"0x6805563eaad92471fa1b3591a71d7020a93e59f1a4ac95398daf74927f5bd033\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48cd13806cb8e82dcc38eb93423a372fbdd3b05364ecebb8bfd9cd29078dd90c\",\"dweb:/ipfs/QmeLyFVrzKRHcm6aaFFBCG5mFESCqWLp1KYT41H8XhzMCp\"]},\"lib/solmate/src/auth/Owned.sol\":{\"keccak256\":\"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\",\"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\"]},\"lib/solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"lib/solmate/src/utils/FixedPointMathLib.sol\":{\"keccak256\":\"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9\",\"dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi\"]},\"lib/solmate/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x6ab948013c2c7ca6351e593600425b0ec6df9035320280c678e735bce16e996b\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://2ab977d0eeb2bf458f9798250215c646d2f3b1f90b5a7e2b506fdf3335c0f060\",\"dweb:/ipfs/QmYPRoPhNtBAmCSq7imN1scMVpKNQvMTpoqab3tXUx5Tnv\"]},\"src/base/ProtocolFees.sol\":{\"keccak256\":\"0x35d7146fb4a4e003359e81272331a59baacf713beb3d8848c0ac831118ec23ae\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d99e9bc99374cce8031bc1835a608e1e42376f284e66747f00de19a17f66a280\",\"dweb:/ipfs/QmW1ZXJUWQvXtdDg1h9nY4vaDajY5gckdFb3w7B5GZMqp9\"]},\"src/base/ReactorEvents.sol\":{\"keccak256\":\"0x61df7aa3ef970f1305c5a6d8c68b0d7ab8bebb9b7518e191c8d2fda532859f61\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://93db11be28b3394485b57a7b120ca224fdb93b471db8468738406f77ebaa13fc\",\"dweb:/ipfs/Qmci4TSUH81C3WDV7TMv56VmiUFZ9MDxZcGTRKhhEPS6gC\"]},\"src/base/ReactorStructs.sol\":{\"keccak256\":\"0x78e6db322ca69aaf552e59d5e74a00fd465a802388c2d03f9bf4b711f5704588\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://12d8fc82c3543bfe0d2cd44cdbc524bed1f074abafe086f7e58573cbaff2a74e\",\"dweb:/ipfs/QmREbamTn3nz89nEjv2uWHNHKSF6Yga2gQ688Cde89xcNT\"]},\"src/interfaces/IProtocolFeeController.sol\":{\"keccak256\":\"0x21a895ff5b778abf95753001a20b4004adfadd1bba622eaec18eb81836ede86c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://67f9eae1da9f238f6630247882e382458dcc0135c0a4837b99a44a2360a3845c\",\"dweb:/ipfs/QmdJyKhVyD6nAtgdTofaU2xaoWrPGM1Q6Sd7FiN2LxXZQx\"]},\"src/interfaces/IReactor.sol\":{\"keccak256\":\"0x23714e546bbeeaa7fe35665d7241319c964421a9fe6d81aead4b85027cabf1e1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3b94402a2e90f75d6238d4460c0b1125bf67b98523803156b104ce57cafdd05b\",\"dweb:/ipfs/QmbY3Mr44MPEMAe9bh9tUSqpPg3AAKfkVfydwJCEzFA14a\"]},\"src/interfaces/IReactorCallback.sol\":{\"keccak256\":\"0xf3ee1fe09545fc5be000c33bb6779e897b4e5013bd9de3e7c3107bf466b4dfa1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://12d7fd1ac3dca76614796f0d012ea4de79bf09cf124cc74efffdf25a56756344\",\"dweb:/ipfs/QmXyeSrG7caihgzUZdPdPbbRj6v1w65gBnfn9a7HhbVJX9\"]},\"src/interfaces/IValidationCallback.sol\":{\"keccak256\":\"0xc31e3a60e210e9a4089f48ba4fae06dec6f4d33da4fbe415cfb8cdc202003bae\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ee145d5fc0e0806dc9db57825142d5d7c3eafc248a27ee301ffd13592f2cda34\",\"dweb:/ipfs/QmQr2HBHZKiUu88a3M1Hs4QSjFemsZmPEd115QG6GKjsC1\"]},\"src/lib/CurrencyLibrary.sol\":{\"keccak256\":\"0x73688c07cd36b5040e0deca3dd1f21a8b19585d6cdfefb816fae98af92a545ea\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://750375d6f0e59f7977b9cfc2cf05fef7b356cea7875fbb71b0ca359d091b8479\",\"dweb:/ipfs/QmZbdTSS1BxWqAHjmtwoJsggbRVkwnxynJuaxzKkkakm4Y\"]},\"src/lib/DutchDecayLib.sol\":{\"keccak256\":\"0x74bde945d6cd150be064db9d7ee4a82c4403f272915a9472cbb3ed36de434252\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6fc5ee6c580c9ffb0958841084f7e2ed4e329d889f598aae1c45f3683d086060\",\"dweb:/ipfs/QmbSUaR9esJzBTus7JjaCExTCc5cETs5kYG35Z265gXkX7\"]},\"src/lib/DutchOrderLib.sol\":{\"keccak256\":\"0xdd6b9bffcc044899fac52e1e9cbe4becc7a40b56d912695e80600224367235e6\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://78c08ec074bc21ce610f2e0c3594b383e0cd2301c32239146a771e2e5d2cb975\",\"dweb:/ipfs/QmbMQwT9k3RWyTdihqqnu3RDiRCz1XmpMUVwxeyWzChKB5\"]},\"src/lib/ExclusivityLib.sol\":{\"keccak256\":\"0x31c03f930592932a41342a77a1f7b11533bee59fa5e54db6f7b812e9b20153ad\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://eb927d983e74d2fa36940e3cb4fd3ec07f48e7d303828173d2f871b9bdae78c1\",\"dweb:/ipfs/QmdrYVK7qt4asyhNkbcEvT5ExjJ6FPHE38XnF8fHWD6ybq\"]},\"src/lib/OrderInfoLib.sol\":{\"keccak256\":\"0x38672b528e63dc53f36ed82d0037110a9f5893ad0a3957e24f19fa3fdbd80015\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://147172dbebf4bb579bc392f25666645719264c0b47378f7fc4f3a95c79bdf5a4\",\"dweb:/ipfs/Qmd5wVnQ8rKHHQgUQzEDcAPiqrVzmNr9t2D7d1SqUg9hTo\"]},\"src/lib/Permit2Lib.sol\":{\"keccak256\":\"0xcb5e1e204f4ac6ea3fa164b8be1b1d31cbad0dff981072ea2c33abd720369e78\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cfa162286525ef8684112639c7b981c0472b06ce799f2440c626a70c273bb533\",\"dweb:/ipfs/QmV1Uy4oodhg4SbCajv9xhiWFuwtU1YcTTvca1cDYCkND9\"]},\"src/lib/ResolvedOrderLib.sol\":{\"keccak256\":\"0xc56a31e72001e3e6ee0baf193423a7563cc61ba4869133e1cae5cf998bfe4d96\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4bddef26f26939f48923b11674495515d792cffbb2dc04f092212ff0b9971636\",\"dweb:/ipfs/QmS1YAzhYLCi9oDtZN33mwBf5iExdwMhPNcnzh5nA8fPKX\"]},\"src/lib/V2DutchOrderLib.sol\":{\"keccak256\":\"0x513f3ccd5924d671ff4a8801e0f2481f52b0def06347e2448a1a2f1346ed99d3\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c777808d9f6edc1eb04d489cf402c4e8203c8a0fbf47b023192b105f1e9a2a72\",\"dweb:/ipfs/QmQxoNZiwJcADeFVoGvM5ckCBrZoURAFncGBBA1Wfb6zTd\"]},\"src/reactors/BaseReactor.sol\":{\"keccak256\":\"0x84815b784203985bac83ebbaa816fdab88d959758b516b186f0c976d5fe425f0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e7cef583b92f538c828eda7f5b10c47c1c6adfc87ad70772f845a0d42d135ea8\",\"dweb:/ipfs/QmRmXerbddHeom3YbyUVq4KzPk7R188qXGaa41cAXQuW8v\"]},\"src/reactors/V2DutchOrderReactor.sol\":{\"keccak256\":\"0x9dffad4d5e18d2a62f5b8f4982c360d17ca5b046c3f3ce64782b53660b637467\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3af2895b0cc2dab7a30fa2d069caf70c18ff171dea3deee0a4942942382af360\",\"dweb:/ipfs/QmZ1nuC76sPRSijSGWsQ4EmKDJ8c4pgPajvKYFFLtMXPdq\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IPermit2","name":"_permit2","type":"address"},{"internalType":"address","name":"_protocolFeeOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"DeadlineBeforeEndTime"},{"inputs":[{"internalType":"address","name":"duplicateToken","type":"address"}],"type":"error","name":"DuplicateFeeOutput"},{"inputs":[],"type":"error","name":"EndTimeBeforeStartTime"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"type":"error","name":"FeeTooLarge"},{"inputs":[],"type":"error","name":"IncorrectAmounts"},{"inputs":[],"type":"error","name":"InputAndOutputDecay"},{"inputs":[],"type":"error","name":"InsufficientEth"},{"inputs":[],"type":"error","name":"InvalidCosignature"},{"inputs":[],"type":"error","name":"InvalidCosignerInput"},{"inputs":[],"type":"error","name":"InvalidCosignerOutput"},{"inputs":[{"internalType":"address","name":"feeToken","type":"address"}],"type":"error","name":"InvalidFeeToken"},{"inputs":[],"type":"error","name":"InvalidReactor"},{"inputs":[],"type":"error","name":"NativeTransferFailed"},{"inputs":[],"type":"error","name":"NoExclusiveOverride"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32","indexed":true},{"internalType":"address","name":"filler","type":"address","indexed":true},{"internalType":"address","name":"swapper","type":"address","indexed":true},{"internalType":"uint256","name":"nonce","type":"uint256","indexed":false}],"type":"event","name":"Fill","anonymous":false},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"oldFeeController","type":"address","indexed":false},{"internalType":"address","name":"newFeeController","type":"address","indexed":false}],"type":"event","name":"ProtocolFeeControllerSet","anonymous":false},{"inputs":[{"internalType":"struct SignedOrder","name":"order","type":"tuple","components":[{"internalType":"bytes","name":"order","type":"bytes"},{"internalType":"bytes","name":"sig","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"execute"},{"inputs":[{"internalType":"struct SignedOrder[]","name":"orders","type":"tuple[]","components":[{"internalType":"bytes","name":"order","type":"bytes"},{"internalType":"bytes","name":"sig","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"executeBatch"},{"inputs":[{"internalType":"struct SignedOrder[]","name":"orders","type":"tuple[]","components":[{"internalType":"bytes","name":"order","type":"bytes"},{"internalType":"bytes","name":"sig","type":"bytes"}]},{"internalType":"bytes","name":"callbackData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"executeBatchWithCallback"},{"inputs":[{"internalType":"struct SignedOrder","name":"order","type":"tuple","components":[{"internalType":"bytes","name":"order","type":"bytes"},{"internalType":"bytes","name":"sig","type":"bytes"}]},{"internalType":"bytes","name":"callbackData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"executeWithCallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"feeController","outputs":[{"internalType":"contract IProtocolFeeController","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"permit2","outputs":[{"internalType":"contract IPermit2","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_newFeeController","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setProtocolFeeController"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"execute((bytes,bytes))":{"params":{"order":"The order definition and valid signature to execute"}},"executeBatch((bytes,bytes)[])":{"params":{"orders":"The order definitions and valid signatures to execute"}},"executeBatchWithCallback((bytes,bytes)[],bytes)":{"params":{"callbackData":"The callbackData to pass to the callback","orders":"The order definitions and valid signatures to execute"}},"executeWithCallback((bytes,bytes),bytes)":{"params":{"callbackData":"The callbackData to pass to the callback","order":"The order definition and valid signature to execute"}},"setProtocolFeeController(address)":{"details":"only callable by the owner","params":{"_newFeeController":"the new fee controller"}}},"version":1},"userdoc":{"kind":"user","methods":{"execute((bytes,bytes))":{"notice":"Execute a single order"},"executeBatch((bytes,bytes)[])":{"notice":"Execute the given orders at once"},"executeBatchWithCallback((bytes,bytes)[],bytes)":{"notice":"Execute the given orders at once using a callback with the given callback data"},"executeWithCallback((bytes,bytes),bytes)":{"notice":"Execute a single order using the given callback data"},"permit2()":{"notice":"permit2 address used for token transfers and signature verification"},"setProtocolFeeController(address)":{"notice":"sets the protocol fee controller"}},"version":1}},"settings":{"remappings":["ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-gas-snapshot/=lib/forge-gas-snapshot/src/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","permit2/=lib/permit2/","solarray/=lib/solarray/src/","solmate/=lib/solmate/"],"optimizer":{"enabled":true,"runs":1000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/reactors/V2DutchOrderReactor.sol":"V2DutchOrderReactor"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/security/ReentrancyGuard.sol":{"keccak256":"0xa535a5df777d44e945dd24aa43a11e44b024140fc340ad0dfe42acf4002aade1","urls":["bzz-raw://41319e7f621f2dc3733511332c4fd032f8e32ad2aa7fd6f665c19741d9941a34","dweb:/ipfs/QmcYR3bd862GD1Bc7jwrU9bGxrhUu5na1oP964bDCu2id1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad","urls":["bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278","dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH"],"license":"MIT"},"lib/permit2/src/interfaces/IAllowanceTransfer.sol":{"keccak256":"0x78931704a7f1d89ef24244b155863abb751cc3b3818f64303ccb47a396d48dcb","urls":["bzz-raw://b8d6e198ee29d809564f1c1d7caa11a2c329bb5d051f61210548e546493444d2","dweb:/ipfs/QmVxWftbgETjudymgLdwF77S54DWrp6qB5ooauKXW81cm7"],"license":"MIT"},"lib/permit2/src/interfaces/IEIP712.sol":{"keccak256":"0xea70db68ce450ad38dfbd490058595441144808eb95272ae9b89e3fbe6456954","urls":["bzz-raw://e8fad9ff319665acdc2f1295bb82db3e5b4d52babc0b58f147dbdbb9f322c6e5","dweb:/ipfs/QmTbYJPcux8eJ3qGVYQh6TiwCA2FPu6HXTUg6QFTnX91Ks"],"license":"MIT"},"lib/permit2/src/interfaces/IPermit2.sol":{"keccak256":"0xaa631cc9f53e699301d94233007110a345e6779011def484e8dd97b8fe0af771","urls":["bzz-raw://fc0502cf19c9c18f320a3001201e89e350393b75837f6b7971de18b2de06f30d","dweb:/ipfs/QmT9SfhdJ7VJNNrf94g4H5usyi7ShqWGx7Cqsz9jZTjX96"],"license":"MIT"},"lib/permit2/src/interfaces/ISignatureTransfer.sol":{"keccak256":"0x6805563eaad92471fa1b3591a71d7020a93e59f1a4ac95398daf74927f5bd033","urls":["bzz-raw://48cd13806cb8e82dcc38eb93423a372fbdd3b05364ecebb8bfd9cd29078dd90c","dweb:/ipfs/QmeLyFVrzKRHcm6aaFFBCG5mFESCqWLp1KYT41H8XhzMCp"],"license":"MIT"},"lib/solmate/src/auth/Owned.sol":{"keccak256":"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea","urls":["bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4","dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx"],"license":"AGPL-3.0-only"},"lib/solmate/src/tokens/ERC20.sol":{"keccak256":"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10","urls":["bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35","dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97"],"license":"AGPL-3.0-only"},"lib/solmate/src/utils/FixedPointMathLib.sol":{"keccak256":"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843","urls":["bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9","dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi"],"license":"AGPL-3.0-only"},"lib/solmate/src/utils/SafeTransferLib.sol":{"keccak256":"0x6ab948013c2c7ca6351e593600425b0ec6df9035320280c678e735bce16e996b","urls":["bzz-raw://2ab977d0eeb2bf458f9798250215c646d2f3b1f90b5a7e2b506fdf3335c0f060","dweb:/ipfs/QmYPRoPhNtBAmCSq7imN1scMVpKNQvMTpoqab3tXUx5Tnv"],"license":"AGPL-3.0-only"},"src/base/ProtocolFees.sol":{"keccak256":"0x35d7146fb4a4e003359e81272331a59baacf713beb3d8848c0ac831118ec23ae","urls":["bzz-raw://d99e9bc99374cce8031bc1835a608e1e42376f284e66747f00de19a17f66a280","dweb:/ipfs/QmW1ZXJUWQvXtdDg1h9nY4vaDajY5gckdFb3w7B5GZMqp9"],"license":"GPL-2.0-or-later"},"src/base/ReactorEvents.sol":{"keccak256":"0x61df7aa3ef970f1305c5a6d8c68b0d7ab8bebb9b7518e191c8d2fda532859f61","urls":["bzz-raw://93db11be28b3394485b57a7b120ca224fdb93b471db8468738406f77ebaa13fc","dweb:/ipfs/Qmci4TSUH81C3WDV7TMv56VmiUFZ9MDxZcGTRKhhEPS6gC"],"license":"GPL-2.0-or-later"},"src/base/ReactorStructs.sol":{"keccak256":"0x78e6db322ca69aaf552e59d5e74a00fd465a802388c2d03f9bf4b711f5704588","urls":["bzz-raw://12d8fc82c3543bfe0d2cd44cdbc524bed1f074abafe086f7e58573cbaff2a74e","dweb:/ipfs/QmREbamTn3nz89nEjv2uWHNHKSF6Yga2gQ688Cde89xcNT"],"license":"GPL-2.0-or-later"},"src/interfaces/IProtocolFeeController.sol":{"keccak256":"0x21a895ff5b778abf95753001a20b4004adfadd1bba622eaec18eb81836ede86c","urls":["bzz-raw://67f9eae1da9f238f6630247882e382458dcc0135c0a4837b99a44a2360a3845c","dweb:/ipfs/QmdJyKhVyD6nAtgdTofaU2xaoWrPGM1Q6Sd7FiN2LxXZQx"],"license":"GPL-2.0-or-later"},"src/interfaces/IReactor.sol":{"keccak256":"0x23714e546bbeeaa7fe35665d7241319c964421a9fe6d81aead4b85027cabf1e1","urls":["bzz-raw://3b94402a2e90f75d6238d4460c0b1125bf67b98523803156b104ce57cafdd05b","dweb:/ipfs/QmbY3Mr44MPEMAe9bh9tUSqpPg3AAKfkVfydwJCEzFA14a"],"license":"GPL-2.0-or-later"},"src/interfaces/IReactorCallback.sol":{"keccak256":"0xf3ee1fe09545fc5be000c33bb6779e897b4e5013bd9de3e7c3107bf466b4dfa1","urls":["bzz-raw://12d7fd1ac3dca76614796f0d012ea4de79bf09cf124cc74efffdf25a56756344","dweb:/ipfs/QmXyeSrG7caihgzUZdPdPbbRj6v1w65gBnfn9a7HhbVJX9"],"license":"GPL-2.0-or-later"},"src/interfaces/IValidationCallback.sol":{"keccak256":"0xc31e3a60e210e9a4089f48ba4fae06dec6f4d33da4fbe415cfb8cdc202003bae","urls":["bzz-raw://ee145d5fc0e0806dc9db57825142d5d7c3eafc248a27ee301ffd13592f2cda34","dweb:/ipfs/QmQr2HBHZKiUu88a3M1Hs4QSjFemsZmPEd115QG6GKjsC1"],"license":"GPL-2.0-or-later"},"src/lib/CurrencyLibrary.sol":{"keccak256":"0x73688c07cd36b5040e0deca3dd1f21a8b19585d6cdfefb816fae98af92a545ea","urls":["bzz-raw://750375d6f0e59f7977b9cfc2cf05fef7b356cea7875fbb71b0ca359d091b8479","dweb:/ipfs/QmZbdTSS1BxWqAHjmtwoJsggbRVkwnxynJuaxzKkkakm4Y"],"license":"GPL-2.0-or-later"},"src/lib/DutchDecayLib.sol":{"keccak256":"0x74bde945d6cd150be064db9d7ee4a82c4403f272915a9472cbb3ed36de434252","urls":["bzz-raw://6fc5ee6c580c9ffb0958841084f7e2ed4e329d889f598aae1c45f3683d086060","dweb:/ipfs/QmbSUaR9esJzBTus7JjaCExTCc5cETs5kYG35Z265gXkX7"],"license":"GPL-2.0-or-later"},"src/lib/DutchOrderLib.sol":{"keccak256":"0xdd6b9bffcc044899fac52e1e9cbe4becc7a40b56d912695e80600224367235e6","urls":["bzz-raw://78c08ec074bc21ce610f2e0c3594b383e0cd2301c32239146a771e2e5d2cb975","dweb:/ipfs/QmbMQwT9k3RWyTdihqqnu3RDiRCz1XmpMUVwxeyWzChKB5"],"license":"GPL-2.0-or-later"},"src/lib/ExclusivityLib.sol":{"keccak256":"0x31c03f930592932a41342a77a1f7b11533bee59fa5e54db6f7b812e9b20153ad","urls":["bzz-raw://eb927d983e74d2fa36940e3cb4fd3ec07f48e7d303828173d2f871b9bdae78c1","dweb:/ipfs/QmdrYVK7qt4asyhNkbcEvT5ExjJ6FPHE38XnF8fHWD6ybq"],"license":"GPL-2.0-or-later"},"src/lib/OrderInfoLib.sol":{"keccak256":"0x38672b528e63dc53f36ed82d0037110a9f5893ad0a3957e24f19fa3fdbd80015","urls":["bzz-raw://147172dbebf4bb579bc392f25666645719264c0b47378f7fc4f3a95c79bdf5a4","dweb:/ipfs/Qmd5wVnQ8rKHHQgUQzEDcAPiqrVzmNr9t2D7d1SqUg9hTo"],"license":"GPL-2.0-or-later"},"src/lib/Permit2Lib.sol":{"keccak256":"0xcb5e1e204f4ac6ea3fa164b8be1b1d31cbad0dff981072ea2c33abd720369e78","urls":["bzz-raw://cfa162286525ef8684112639c7b981c0472b06ce799f2440c626a70c273bb533","dweb:/ipfs/QmV1Uy4oodhg4SbCajv9xhiWFuwtU1YcTTvca1cDYCkND9"],"license":"GPL-2.0-or-later"},"src/lib/ResolvedOrderLib.sol":{"keccak256":"0xc56a31e72001e3e6ee0baf193423a7563cc61ba4869133e1cae5cf998bfe4d96","urls":["bzz-raw://4bddef26f26939f48923b11674495515d792cffbb2dc04f092212ff0b9971636","dweb:/ipfs/QmS1YAzhYLCi9oDtZN33mwBf5iExdwMhPNcnzh5nA8fPKX"],"license":"GPL-2.0-or-later"},"src/lib/V2DutchOrderLib.sol":{"keccak256":"0x513f3ccd5924d671ff4a8801e0f2481f52b0def06347e2448a1a2f1346ed99d3","urls":["bzz-raw://c777808d9f6edc1eb04d489cf402c4e8203c8a0fbf47b023192b105f1e9a2a72","dweb:/ipfs/QmQxoNZiwJcADeFVoGvM5ckCBrZoURAFncGBBA1Wfb6zTd"],"license":"GPL-2.0-or-later"},"src/reactors/BaseReactor.sol":{"keccak256":"0x84815b784203985bac83ebbaa816fdab88d959758b516b186f0c976d5fe425f0","urls":["bzz-raw://e7cef583b92f538c828eda7f5b10c47c1c6adfc87ad70772f845a0d42d135ea8","dweb:/ipfs/QmRmXerbddHeom3YbyUVq4KzPk7R188qXGaa41cAXQuW8v"],"license":"GPL-2.0-or-later"},"src/reactors/V2DutchOrderReactor.sol":{"keccak256":"0x9dffad4d5e18d2a62f5b8f4982c360d17ca5b046c3f3ce64782b53660b637467","urls":["bzz-raw://3af2895b0cc2dab7a30fa2d069caf70c18ff171dea3deee0a4942942382af360","dweb:/ipfs/QmZ1nuC76sPRSijSGWsQ4EmKDJ8c4pgPajvKYFFLtMXPdq"],"license":"GPL-2.0-or-later"}},"version":1},"id":62} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"_permit2","type":"address","internalType":"contract IPermit2"},{"name":"_protocolFeeOwner","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"execute","inputs":[{"name":"order","type":"tuple","internalType":"struct SignedOrder","components":[{"name":"order","type":"bytes","internalType":"bytes"},{"name":"sig","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeBatch","inputs":[{"name":"orders","type":"tuple[]","internalType":"struct SignedOrder[]","components":[{"name":"order","type":"bytes","internalType":"bytes"},{"name":"sig","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeBatchWithCallback","inputs":[{"name":"orders","type":"tuple[]","internalType":"struct SignedOrder[]","components":[{"name":"order","type":"bytes","internalType":"bytes"},{"name":"sig","type":"bytes","internalType":"bytes"}]},{"name":"callbackData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeWithCallback","inputs":[{"name":"order","type":"tuple","internalType":"struct SignedOrder","components":[{"name":"order","type":"bytes","internalType":"bytes"},{"name":"sig","type":"bytes","internalType":"bytes"}]},{"name":"callbackData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"feeController","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IProtocolFeeController"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"permit2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPermit2"}],"stateMutability":"view"},{"type":"function","name":"setProtocolFeeController","inputs":[{"name":"_newFeeController","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Fill","inputs":[{"name":"orderHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"filler","type":"address","indexed":true,"internalType":"address"},{"name":"swapper","type":"address","indexed":true,"internalType":"address"},{"name":"nonce","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ProtocolFeeControllerSet","inputs":[{"name":"oldFeeController","type":"address","indexed":false,"internalType":"address"},{"name":"newFeeController","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"error","name":"DeadlineBeforeEndTime","inputs":[]},{"type":"error","name":"DuplicateFeeOutput","inputs":[{"name":"duplicateToken","type":"address","internalType":"address"}]},{"type":"error","name":"EndTimeBeforeStartTime","inputs":[]},{"type":"error","name":"FeeTooLarge","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"recipient","type":"address","internalType":"address"}]},{"type":"error","name":"IncorrectAmounts","inputs":[]},{"type":"error","name":"InputAndOutputFees","inputs":[]},{"type":"error","name":"InvalidCosignature","inputs":[]},{"type":"error","name":"InvalidCosignerInput","inputs":[]},{"type":"error","name":"InvalidCosignerOutput","inputs":[]},{"type":"error","name":"InvalidFeeToken","inputs":[{"name":"feeToken","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidReactor","inputs":[]},{"type":"error","name":"NativeTransferFailed","inputs":[]},{"type":"error","name":"NoExclusiveOverride","inputs":[]}],"bytecode":{"object":"0x60a06040523480156200001157600080fd5b50604051620034bd380380620034bd8339810160408190526200003491620000b8565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f79050565b6001600160a01b0381168114620000b557600080fd5b50565b60008060408385031215620000cc57600080fd5b8251620000d9816200009f565b6020840151909250620000ec816200009f565b809150509250929050565b6080516133a4620001196000396000818160e00152611ae701526133a46000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b436600461244e565b6101eb565b005b6100b96100c93660046124fc565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b961013936600461253e565b6104c5565b34801561014a57600080fd5b506100b96101593660046125dc565b610683565b6100b961016c366004612600565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e63660046125dc565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c5612664565b60200260200101819052506102d981610b6d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061031990849087908790600401612867565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610bbe565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff81111561038857610388612635565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d85858381811061046657610466612664565b9050602002810190610478919061292d565b6109f6565b82828151811061048f5761048f612664565b6020908102919091010152600101610449565b506104ac81610b6d565b6104b581610bbe565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e9612635565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c787878381811061046657610466612664565b8282815181106105d9576105d9612664565b60209081029190910101526001016105aa565b506105f681610b6d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061063690849088908890600401612867565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610bbe565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b8160008151811061086957610869612664565b602002602001018190525061087d81610b6d565b61088681610bbe565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f838061296b565b810190610a7c9190612daa565b90506000610a8982610d11565b9050610a958183610f43565b610a9e82611142565b6040805160a081018252835181526080840151805160209182015193860151929391840192610acf929091906112a2565b81526080840151805160209182015160608701519290930192610af3929190611374565b8152602001858060200190610b08919061296b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001829052608083015160408101518151606090920151929550610b669286929061145b565b5050919050565b805160005b8181101561035f576000838281518110610b8e57610b8e612664565b60200260200101519050610ba1816114fc565b610bab81336119ec565b610bb58133611ae5565b50600101610b72565b805160005b81811015610d00576000838281518110610bdf57610bdf612664565b602002602001015190506000816040015151905060005b81811015610c6057600083604001518281518110610c1657610c16612664565b60200260200101519050610c5781604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611e279092919063ffffffff16565b50600101610bf6565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610ca957610ca9612664565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610cee91815260200190565b60405180910390a45050600101610bc3565b5047156104c1576104c13347611e6e565b6040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260009060b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260808301909152605280835290919061326260208301396040518060c00160405280608d81526020016132e2608d9139604051602001610e9193929190612ea7565b60405160208183030381529060405280519060200120610eb48360000151611f08565b6020808501516040808701518051938101519101516060880151929392610eda90611fa2565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff938416606087015292909116608085015260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b6080810151602001518151606001511015610f8a576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808260a00151806020019051810190610fa59190612eea565b9150915060008360a00151604081518110610fc257610fc2612664565b602001015160f81c60f81b60f81c905060006001868660800151604051602001610fec9190612f0e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526110289291602001612f9e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600084529083018083525260ff851690820152606081018690526080810185905260a0016020604051602081039080840390855afa1580156110a4573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff16141580611103575073ffffffffffffffffffffffffffffffffffffffff8116155b1561113a576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6080808201510151156111ab578060400151602001518160800151608001511115611199576040517fac9143e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808082015101516040820151602001525b806060015151816080015160a0015151146111f2576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8160600151518110156104c15760008260600151828151811061121a5761121a612664565b602002602001015190506000836080015160a00151838151811061124057611240612664565b6020026020010151905080600014611298578160200151811015611290576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602082018190525b50506001016111f5565b6112dc6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b83604001518460200151111561131e576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611334856020015186604001518686612040565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff81111561139257611392612635565b6040519080825280602002602001820160405280156113fb57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113b05790505b50915060005b818110156114525761142d86828151811061141e5761141e612664565b602002602001015186866120e7565b83828151811061143f5761143f612664565b6020908102919091010152600101611401565b50509392505050565b61146583836121b7565b61067d57806114a0576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604084015160005b815181101561113a5760008282815181106114c5576114c5612664565b602002602001015190506114ee846127106114e09190612fc4565b602083015190612710612204565b6020909101526001016114a8565b60015473ffffffffffffffffffffffffffffffffffffffff1661151c5750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611573908590600401612ffe565b600060405180830381865afa158015611590573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526115d69190810190613011565b60408301515181519192509060006115ee8284612fc4565b67ffffffffffffffff81111561160657611606612635565b60405190808252806020026020018201604052801561166f57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116245790505b50905060005b838110156116c0578560400151818151811061169357611693612664565b60200260200101518282815181106116ad576116ad612664565b6020908102919091010152600101611675565b5060008060005b848110156119db5760008782815181106116e3576116e3612664565b6020026020010151905060005b828110156117a15788818151811061170a5761170a612664565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036117995781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6001016116f0565b506000805b888110156118625760008b6040015182815181106117c6576117c6612664565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1603611859578515611843576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516118529084612fc4565b9250600196505b506001016117a6565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036118db5784156118c2576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516118d49082612fc4565b9050600193505b806000036119305781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b61193e816005612710612248565b826020015111156119b1578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a01815181106119c6576119c6612664565b602090810291909101015250506001016116c7565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611a3d576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b90611ab990849086906004016130e1565b60006040518083038186803b158015611ad157600080fd5b505afa15801561113a573d6000803e3d6000fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611ba5846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8616825280870151810151908201528560000151602001518660800151604051806080016040528060528152602001613262605291396040518060c00160405280608d81526020016132e2608d91396040518060600160405280602e81526020016132b4602e91396040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611d8c94939291602001613110565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611df99695949392600401613199565b600060405180830381600087803b158015611e1357600080fd5b505af115801561113a573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611e4c5761035f8282611e6e565b61035f73ffffffffffffffffffffffffffffffffffffffff8416338484612284565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611ec8576040519150601f19603f3d011682016040523d82523d6000602084013e611ecd565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d81526020016132e2608d913980516020918201208351848301516040808701516060880151608089015160a08a01518051908901209351610f2698939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff811115611fc257611fc2612635565b6040519080825280601f01601f191660200182016040528015611fec576020820181803683370190505b50905060005b835181101561203157600061201f85838151811061201257612012612664565b6020026020010151612376565b60208381028501015250600101611ff2565b50805160209091012092915050565b60008385036120505750836120df565b828211612089576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b4282116120975750826120df565b4283106120a55750836120df565b42839003838303868610156120ca576120c18688038383612248565b870392506120dc565b6120d78787038383612204565b870192505b50505b949350505050565b6040805160608101825260008082526020820181905291810191909152836040015184602001511015612146576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061215c856020015186604001518686612040565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff831615806121db57508142115b806121fb575073ffffffffffffffffffffffffffffffffffffffff831633145b90505b92915050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261223957600080fd5b50910281810615159190040190565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261227d57600080fd5b5091020490565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d116001600051141617169150508061236f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b5050505050565b600060405180608001604052806052815260200161326260529139805160209182012083518483015160408087015160608801519151610f26969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b6000604082840312156123ff57600080fd5b50919050565b60008083601f84011261241757600080fd5b50813567ffffffffffffffff81111561242f57600080fd5b60208301915083602082850101111561244757600080fd5b9250929050565b60008060006040848603121561246357600080fd5b833567ffffffffffffffff8082111561247b57600080fd5b612487878388016123ed565b9450602086013591508082111561249d57600080fd5b506124aa86828701612405565b9497909650939450505050565b60008083601f8401126124c957600080fd5b50813567ffffffffffffffff8111156124e157600080fd5b6020830191508360208260051b850101111561244757600080fd5b6000806020838503121561250f57600080fd5b823567ffffffffffffffff81111561252657600080fd5b612532858286016124b7565b90969095509350505050565b6000806000806040858703121561255457600080fd5b843567ffffffffffffffff8082111561256c57600080fd5b612578888389016124b7565b9096509450602087013591508082111561259157600080fd5b5061259e87828801612405565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356125d7816125aa565b919050565b6000602082840312156125ee57600080fd5b81356125f9816125aa565b9392505050565b60006020828403121561261257600080fd5b813567ffffffffffffffff81111561262957600080fd5b6120df848285016123ed565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156126ae578181015183820152602001612696565b50506000910152565b600081518084526126cf816020860160208601612693565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b83811015612761578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612716565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526127e06101a08501826126b7565b9050602083015161281e6020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b50604083015184820360808601526128368282612701565b915050606083015184820360a086015261285082826126b7565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b838110156128dc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526128ca86835161276c565b95509382019390820190600101612890565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261296157600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126129a057600080fd5b83018035915067ffffffffffffffff8211156129bb57600080fd5b60200191503681900382131561244757600080fd5b60405160c0810167ffffffffffffffff811182821017156129f3576129f3612635565b60405290565b6040516060810167ffffffffffffffff811182821017156129f3576129f3612635565b6040516080810167ffffffffffffffff811182821017156129f3576129f3612635565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612a8657612a86612635565b604052919050565b600082601f830112612a9f57600080fd5b813567ffffffffffffffff811115612ab957612ab9612635565b612aea60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612a3f565b818152846020838601011115612aff57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612b2e57600080fd5b612b366129d0565b90508135612b43816125aa565b81526020820135612b53816125aa565b8060208301525060408201356040820152606082013560608201526080820135612b7c816125aa565b608082015260a082013567ffffffffffffffff811115612b9b57600080fd5b612ba784828501612a8e565b60a08301525092915050565b600060608284031215612bc557600080fd5b612bcd6129f9565b90508135612bda816125aa565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612c1257612c12612635565b5060051b60200190565b600082601f830112612c2d57600080fd5b81356020612c42612c3d83612bf8565b612a3f565b82815260079290921b84018101918181019086841115612c6157600080fd5b8286015b84811015612cc65760808189031215612c7e5760008081fd5b612c86612a1c565b8135612c91816125aa565b8152818501358582015260408083013590820152606080830135612cb4816125aa565b90820152835291830191608001612c65565b509695505050505050565b600060c08284031215612ce357600080fd5b612ceb6129d0565b905081358152602080830135818301526040830135612d09816125aa565b80604084015250606083013560608301526080830135608083015260a083013567ffffffffffffffff811115612d3e57600080fd5b8301601f81018513612d4f57600080fd5b8035612d5d612c3d82612bf8565b81815260059190911b82018301908381019087831115612d7c57600080fd5b928401925b82841015612d9a57833582529284019290840190612d81565b60a0860152509295945050505050565b600060208284031215612dbc57600080fd5b813567ffffffffffffffff80821115612dd457600080fd5b908301906101008286031215612de957600080fd5b612df16129d0565b823582811115612e0057600080fd5b612e0c87828601612b1c565b825250612e1b602084016125cc565b6020820152612e2d8660408501612bb3565b604082015260a083013582811115612e4457600080fd5b612e5087828601612c1c565b60608301525060c083013582811115612e6857600080fd5b612e7487828601612cd1565b60808301525060e083013582811115612e8c57600080fd5b612e9887828601612a8e565b60a08301525095945050505050565b60008451612eb9818460208901612693565b845190830190612ecd818360208901612693565b8451910190612ee0818360208801612693565b0195945050505050565b60008060408385031215612efd57600080fd5b505080516020909101519092909150565b6000602080835260e0830184518285015281850151604085015273ffffffffffffffffffffffffffffffffffffffff604086015116606085015260608501516080850152608085015160a085015260a085015160c080860152818151808452610100870191508483019350600092505b80831015612cc65783518252928401926001929092019190840190612f7e565b82815260008251612fb6816020850160208701612693565b919091016020019392505050565b808201808211156121fe577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6020815260006121fb602083018461276c565b6000602080838503121561302457600080fd5b825167ffffffffffffffff81111561303b57600080fd5b8301601f8101851361304c57600080fd5b805161305a612c3d82612bf8565b8181526060918202830184019184820191908884111561307957600080fd5b938501935b838510156130d55780858a0312156130965760008081fd5b61309e6129f9565b85516130a9816125aa565b815285870151878201526040808701516130c2816125aa565b908201528352938401939185019161307e565b50979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006120df604083018461276c565b7f563244757463684f72646572207769746e657373290000000000000000000000815260008551613148816015850160208a01612693565b85519083019061315f816015840160208a01612693565b8551910190613175816015840160208901612693565b845191019061318b816015840160208801612693565b016015019695505050505050565b60006101406131c9838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b602089015160408401526040890151606084015261320a6080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e08401528061010084015261323f818401866126b7565b905082810361012084015261325481856126b7565b999850505050505050505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a264697066735822122035a25d9682571022740f8eb2bbffff059f7e63d59c89e57d9831ce550c37465a64736f6c63430008180033","sourceMap":"1101:4177:66:-:0;;;1828:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1045:5:35;:14;;-1:-1:-1;;;;;;1045:14:35;-1:-1:-1;;;;;1045:14:35;;;;;;;1075:40;;1898:8:66;;1045:14:35;;;;;;:5;1075:40;;1045:5;;1075:40;-1:-1:-1;;1716:1:21;1821:7;:22;-1:-1:-1;;;;;;1352:18:62::1;;::::0;-1:-1:-1;1101:4177:66;;-1:-1:-1;1101:4177:66;14:141:108;-1:-1:-1;;;;;99:31:108;;89:42;;79:70;;145:1;142;135:12;79:70;14:141;:::o;160:423::-;257:6;265;318:2;306:9;297:7;293:23;289:32;286:52;;;334:1;331;324:12;286:52;366:9;360:16;385:41;420:5;385:41;:::i;:::-;495:2;480:18;;474:25;445:5;;-1:-1:-1;508:43:108;474:25;508:43;:::i;:::-;570:7;560:17;;;160:423;;;;;:::o;:::-;1101:4177:66;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b436600461244e565b6101eb565b005b6100b96100c93660046124fc565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b961013936600461253e565b6104c5565b34801561014a57600080fd5b506100b96101593660046125dc565b610683565b6100b961016c366004612600565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e63660046125dc565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c5612664565b60200260200101819052506102d981610b6d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061031990849087908790600401612867565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610bbe565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff81111561038857610388612635565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d85858381811061046657610466612664565b9050602002810190610478919061292d565b6109f6565b82828151811061048f5761048f612664565b6020908102919091010152600101610449565b506104ac81610b6d565b6104b581610bbe565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e9612635565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c787878381811061046657610466612664565b8282815181106105d9576105d9612664565b60209081029190910101526001016105aa565b506105f681610b6d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061063690849088908890600401612867565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610bbe565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b8160008151811061086957610869612664565b602002602001018190525061087d81610b6d565b61088681610bbe565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f838061296b565b810190610a7c9190612daa565b90506000610a8982610d11565b9050610a958183610f43565b610a9e82611142565b6040805160a081018252835181526080840151805160209182015193860151929391840192610acf929091906112a2565b81526080840151805160209182015160608701519290930192610af3929190611374565b8152602001858060200190610b08919061296b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001829052608083015160408101518151606090920151929550610b669286929061145b565b5050919050565b805160005b8181101561035f576000838281518110610b8e57610b8e612664565b60200260200101519050610ba1816114fc565b610bab81336119ec565b610bb58133611ae5565b50600101610b72565b805160005b81811015610d00576000838281518110610bdf57610bdf612664565b602002602001015190506000816040015151905060005b81811015610c6057600083604001518281518110610c1657610c16612664565b60200260200101519050610c5781604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611e279092919063ffffffff16565b50600101610bf6565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610ca957610ca9612664565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610cee91815260200190565b60405180910390a45050600101610bc3565b5047156104c1576104c13347611e6e565b6040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260009060b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260808301909152605280835290919061326260208301396040518060c00160405280608d81526020016132e2608d9139604051602001610e9193929190612ea7565b60405160208183030381529060405280519060200120610eb48360000151611f08565b6020808501516040808701518051938101519101516060880151929392610eda90611fa2565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff938416606087015292909116608085015260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b6080810151602001518151606001511015610f8a576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808260a00151806020019051810190610fa59190612eea565b9150915060008360a00151604081518110610fc257610fc2612664565b602001015160f81c60f81b60f81c905060006001868660800151604051602001610fec9190612f0e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526110289291602001612f9e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600084529083018083525260ff851690820152606081018690526080810185905260a0016020604051602081039080840390855afa1580156110a4573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff16141580611103575073ffffffffffffffffffffffffffffffffffffffff8116155b1561113a576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6080808201510151156111ab578060400151602001518160800151608001511115611199576040517fac9143e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808082015101516040820151602001525b806060015151816080015160a0015151146111f2576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8160600151518110156104c15760008260600151828151811061121a5761121a612664565b602002602001015190506000836080015160a00151838151811061124057611240612664565b6020026020010151905080600014611298578160200151811015611290576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602082018190525b50506001016111f5565b6112dc6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b83604001518460200151111561131e576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611334856020015186604001518686612040565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff81111561139257611392612635565b6040519080825280602002602001820160405280156113fb57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113b05790505b50915060005b818110156114525761142d86828151811061141e5761141e612664565b602002602001015186866120e7565b83828151811061143f5761143f612664565b6020908102919091010152600101611401565b50509392505050565b61146583836121b7565b61067d57806114a0576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604084015160005b815181101561113a5760008282815181106114c5576114c5612664565b602002602001015190506114ee846127106114e09190612fc4565b602083015190612710612204565b6020909101526001016114a8565b60015473ffffffffffffffffffffffffffffffffffffffff1661151c5750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611573908590600401612ffe565b600060405180830381865afa158015611590573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526115d69190810190613011565b60408301515181519192509060006115ee8284612fc4565b67ffffffffffffffff81111561160657611606612635565b60405190808252806020026020018201604052801561166f57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116245790505b50905060005b838110156116c0578560400151818151811061169357611693612664565b60200260200101518282815181106116ad576116ad612664565b6020908102919091010152600101611675565b5060008060005b848110156119db5760008782815181106116e3576116e3612664565b6020026020010151905060005b828110156117a15788818151811061170a5761170a612664565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036117995781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6001016116f0565b506000805b888110156118625760008b6040015182815181106117c6576117c6612664565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1603611859578515611843576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516118529084612fc4565b9250600196505b506001016117a6565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036118db5784156118c2576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516118d49082612fc4565b9050600193505b806000036119305781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b61193e816005612710612248565b826020015111156119b1578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a01815181106119c6576119c6612664565b602090810291909101015250506001016116c7565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611a3d576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b90611ab990849086906004016130e1565b60006040518083038186803b158015611ad157600080fd5b505afa15801561113a573d6000803e3d6000fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611ba5846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8616825280870151810151908201528560000151602001518660800151604051806080016040528060528152602001613262605291396040518060c00160405280608d81526020016132e2608d91396040518060600160405280602e81526020016132b4602e91396040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611d8c94939291602001613110565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611df99695949392600401613199565b600060405180830381600087803b158015611e1357600080fd5b505af115801561113a573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611e4c5761035f8282611e6e565b61035f73ffffffffffffffffffffffffffffffffffffffff8416338484612284565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611ec8576040519150601f19603f3d011682016040523d82523d6000602084013e611ecd565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d81526020016132e2608d913980516020918201208351848301516040808701516060880151608089015160a08a01518051908901209351610f2698939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff811115611fc257611fc2612635565b6040519080825280601f01601f191660200182016040528015611fec576020820181803683370190505b50905060005b835181101561203157600061201f85838151811061201257612012612664565b6020026020010151612376565b60208381028501015250600101611ff2565b50805160209091012092915050565b60008385036120505750836120df565b828211612089576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b4282116120975750826120df565b4283106120a55750836120df565b42839003838303868610156120ca576120c18688038383612248565b870392506120dc565b6120d78787038383612204565b870192505b50505b949350505050565b6040805160608101825260008082526020820181905291810191909152836040015184602001511015612146576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061215c856020015186604001518686612040565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff831615806121db57508142115b806121fb575073ffffffffffffffffffffffffffffffffffffffff831633145b90505b92915050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261223957600080fd5b50910281810615159190040190565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261227d57600080fd5b5091020490565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d116001600051141617169150508061236f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b5050505050565b600060405180608001604052806052815260200161326260529139805160209182012083518483015160408087015160608801519151610f26969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b6000604082840312156123ff57600080fd5b50919050565b60008083601f84011261241757600080fd5b50813567ffffffffffffffff81111561242f57600080fd5b60208301915083602082850101111561244757600080fd5b9250929050565b60008060006040848603121561246357600080fd5b833567ffffffffffffffff8082111561247b57600080fd5b612487878388016123ed565b9450602086013591508082111561249d57600080fd5b506124aa86828701612405565b9497909650939450505050565b60008083601f8401126124c957600080fd5b50813567ffffffffffffffff8111156124e157600080fd5b6020830191508360208260051b850101111561244757600080fd5b6000806020838503121561250f57600080fd5b823567ffffffffffffffff81111561252657600080fd5b612532858286016124b7565b90969095509350505050565b6000806000806040858703121561255457600080fd5b843567ffffffffffffffff8082111561256c57600080fd5b612578888389016124b7565b9096509450602087013591508082111561259157600080fd5b5061259e87828801612405565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356125d7816125aa565b919050565b6000602082840312156125ee57600080fd5b81356125f9816125aa565b9392505050565b60006020828403121561261257600080fd5b813567ffffffffffffffff81111561262957600080fd5b6120df848285016123ed565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156126ae578181015183820152602001612696565b50506000910152565b600081518084526126cf816020860160208601612693565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b83811015612761578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612716565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526127e06101a08501826126b7565b9050602083015161281e6020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b50604083015184820360808601526128368282612701565b915050606083015184820360a086015261285082826126b7565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b838110156128dc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526128ca86835161276c565b95509382019390820190600101612890565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261296157600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126129a057600080fd5b83018035915067ffffffffffffffff8211156129bb57600080fd5b60200191503681900382131561244757600080fd5b60405160c0810167ffffffffffffffff811182821017156129f3576129f3612635565b60405290565b6040516060810167ffffffffffffffff811182821017156129f3576129f3612635565b6040516080810167ffffffffffffffff811182821017156129f3576129f3612635565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612a8657612a86612635565b604052919050565b600082601f830112612a9f57600080fd5b813567ffffffffffffffff811115612ab957612ab9612635565b612aea60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612a3f565b818152846020838601011115612aff57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612b2e57600080fd5b612b366129d0565b90508135612b43816125aa565b81526020820135612b53816125aa565b8060208301525060408201356040820152606082013560608201526080820135612b7c816125aa565b608082015260a082013567ffffffffffffffff811115612b9b57600080fd5b612ba784828501612a8e565b60a08301525092915050565b600060608284031215612bc557600080fd5b612bcd6129f9565b90508135612bda816125aa565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612c1257612c12612635565b5060051b60200190565b600082601f830112612c2d57600080fd5b81356020612c42612c3d83612bf8565b612a3f565b82815260079290921b84018101918181019086841115612c6157600080fd5b8286015b84811015612cc65760808189031215612c7e5760008081fd5b612c86612a1c565b8135612c91816125aa565b8152818501358582015260408083013590820152606080830135612cb4816125aa565b90820152835291830191608001612c65565b509695505050505050565b600060c08284031215612ce357600080fd5b612ceb6129d0565b905081358152602080830135818301526040830135612d09816125aa565b80604084015250606083013560608301526080830135608083015260a083013567ffffffffffffffff811115612d3e57600080fd5b8301601f81018513612d4f57600080fd5b8035612d5d612c3d82612bf8565b81815260059190911b82018301908381019087831115612d7c57600080fd5b928401925b82841015612d9a57833582529284019290840190612d81565b60a0860152509295945050505050565b600060208284031215612dbc57600080fd5b813567ffffffffffffffff80821115612dd457600080fd5b908301906101008286031215612de957600080fd5b612df16129d0565b823582811115612e0057600080fd5b612e0c87828601612b1c565b825250612e1b602084016125cc565b6020820152612e2d8660408501612bb3565b604082015260a083013582811115612e4457600080fd5b612e5087828601612c1c565b60608301525060c083013582811115612e6857600080fd5b612e7487828601612cd1565b60808301525060e083013582811115612e8c57600080fd5b612e9887828601612a8e565b60a08301525095945050505050565b60008451612eb9818460208901612693565b845190830190612ecd818360208901612693565b8451910190612ee0818360208801612693565b0195945050505050565b60008060408385031215612efd57600080fd5b505080516020909101519092909150565b6000602080835260e0830184518285015281850151604085015273ffffffffffffffffffffffffffffffffffffffff604086015116606085015260608501516080850152608085015160a085015260a085015160c080860152818151808452610100870191508483019350600092505b80831015612cc65783518252928401926001929092019190840190612f7e565b82815260008251612fb6816020850160208701612693565b919091016020019392505050565b808201808211156121fe577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6020815260006121fb602083018461276c565b6000602080838503121561302457600080fd5b825167ffffffffffffffff81111561303b57600080fd5b8301601f8101851361304c57600080fd5b805161305a612c3d82612bf8565b8181526060918202830184019184820191908884111561307957600080fd5b938501935b838510156130d55780858a0312156130965760008081fd5b61309e6129f9565b85516130a9816125aa565b815285870151878201526040808701516130c2816125aa565b908201528352938401939185019161307e565b50979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006120df604083018461276c565b7f563244757463684f72646572207769746e657373290000000000000000000000815260008551613148816015850160208a01612693565b85519083019061315f816015840160208a01612693565b8551910190613175816015840160208901612693565b845191019061318b816015840160208801612693565b016015019695505050505050565b60006101406131c9838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b602089015160408401526040890151606084015261320a6080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e08401528061010084015261323f818401866126b7565b905082810361012084015261325481856126b7565b999850505050505050505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a264697066735822122035a25d9682571022740f8eb2bbffff059f7e63d59c89e57d9831ce550c37465a64736f6c63430008180033","sourceMap":"1101:4177:66:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1721:435:62;;;;;;:::i;:::-;;:::i;:::-;;2191:453;;;;;;:::i;:::-;;:::i;1212:33::-;;;;;;;;;;;;;;;;;;2288:42:108;2276:55;;;2258:74;;2246:2;2231:18;1212:33:62;;;;;;;2679:614;;;;;;:::i;:::-;;:::i;4161:289:43:-;;;;;;;;;;-1:-1:-1;4161:289:43;;;;;:::i;:::-;;:::i;1412:274:62:-;;;;;;:::i;:::-;;:::i;1479:43:43:-;;;;;;;;;;-1:-1:-1;1479:43:43;;;;;;;;690:20:35;;;;;;;;;;-1:-1:-1;690:20:35;;;;;;;;1312:161;;;;;;;;;;-1:-1:-1;1312:161:35;;;;;:::i;:::-;;:::i;1721:435:62:-;2261:21:21;:19;:21::i;:::-;1932:22:62::1;::::0;;1952:1:::1;1932:22:::0;;;;;::::1;::::0;;;1892:37:::1;::::0;1932:22:::1;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1932:22:62;;;;;;;::::1;::::0;::::1;;;;;1892:62;;1984:15;1993:5;1984:8;:15::i;:::-;1964:14;1979:1;1964:17;;;;;;;;:::i;:::-;;;;;;:35;;;;2010:24;2019:14;2010:8;:24::i;:::-;2044:74;::::0;;;;2061:10:::1;::::0;2044:44:::1;::::0;:74:::1;::::0;2089:14;;2105:12;;;;2044:74:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2128:21;2134:14;2128:5;:21::i;:::-;1882:274;2303:20:21::0;1716:1;2809:7;:22;2629:209;2303:20;1721:435:62;;;:::o;2191:453::-;2261:21:21;:19;:21::i;:::-;2316:6:62;2293:20:::1;2316:6:::0;2379:33:::1;::::0;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2379:33:62;;;;;;;::::1;::::0;::::1;;;;;;2339:73;;2452:9;2447:115;2471:12;2467:1;:16;2447:115;;;2528:19;2537:6;;2544:1;2537:9;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;2528:8;:19::i;:::-;2508:14;2523:1;2508:17;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:39;2485:3:::1;;2447:115;;;;2582:24;2591:14;2582:8;:24::i;:::-;2616:21;2622:14;2616:5;:21::i;:::-;2283:361;;2303:20:21::0;1716:1;2809:7;:22;2629:209;2303:20;2191:453:62;;:::o;2679:614::-;2261:21:21;:19;:21::i;:::-;2881:6:62;2858:20:::1;2881:6:::0;2944:33:::1;::::0;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2944:33:62;;;;;;;::::1;::::0;::::1;;;;;;2904:73;;3017:9;3012:115;3036:12;3032:1;:16;3012:115;;;3093:19;3102:6;;3109:1;3102:9;;;;;;;:::i;3093:19::-;3073:14;3088:1;3073:17;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:39;3050:3:::1;;3012:115;;;;3147:24;3156:14;3147:8;:24::i;:::-;3181:74;::::0;;;;3198:10:::1;::::0;3181:44:::1;::::0;:74:::1;::::0;3226:14;;3242:12;;;;3181:74:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;3265:21;3271:14;3265:5;:21::i;:::-;2848:445;;2303:20:21::0;1716:1;2809:7;:22;2629:209;2303:20;2679:614:62;;;;:::o;4161:289:43:-;778:5:35;;;;764:10;:19;756:44;;;;;;;9611:2:108;756:44:35;;;9593:21:108;9650:2;9630:18;;;9623:30;9689:14;9669:18;;;9662:42;9721:18;;756:44:35;;;;;;;;;4286:13:43::1;::::0;;::::1;4310:57:::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;4382:61:::1;::::0;;4286:13;;;::::1;9985:34:108::0;;;10050:2;10035:18;;10028:43;;;;4382:61:43::1;::::0;9897:18:108;4382:61:43::1;;;;;;;4241:209;4161:289:::0;:::o;1412:274:62:-;2261:21:21;:19;:21::i;:::-;1546:22:62::1;::::0;;1566:1:::1;1546:22:::0;;;;;::::1;::::0;;;1506:37:::1;::::0;1546:22:::1;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1546:22:62;;;;;;;::::1;::::0;::::1;;;;;1506:62;;1598:15;1607:5;1598:8;:15::i;:::-;1578:14;1593:1;1578:17;;;;;;;;:::i;:::-;;;;;;:35;;;;1624:24;1633:14;1624:8;:24::i;:::-;1658:21;1664:14;1658:5;:21::i;:::-;1496:190;2303:20:21::0;1716:1;2809:7;:22;2629:209;2303:20;1412:274:62;:::o;1312:161:35:-;778:5;;;;764:10;:19;756:44;;;;;;;9611:2:108;756:44:35;;;9593:21:108;9650:2;9630:18;;;9623:30;9689:14;9669:18;;;9662:42;9721:18;;756:44:35;9409:336:108;756:44:35;1392:5:::1;:16:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;1424:42:::1;::::0;1392:16;;1445:10:::1;::::0;1424:42:::1;::::0;1392:5;1424:42:::1;1312:161:::0;:::o;2336:287:21:-;1759:1;2468:7;;:19;2460:63;;;;;;;10284:2:108;2460:63:21;;;10266:21:108;10323:2;10303:18;;;10296:30;10362:33;10342:18;;;10335:61;10413:18;;2460:63:21;10082:355:108;2460:63:21;1759:1;2598:18;;2336:287::o;1967:1068:66:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2188:17:66;:11;;:17;:::i;:::-;2177:45;;;;;;;:::i;:::-;2149:73;;2334:17;2354:12;:5;:10;:12::i;:::-;2334:32;;2377;2392:9;2403:5;2377:14;:32::i;:::-;2419:33;2446:5;2419:26;:33::i;:::-;2479:342;;;;;;;;2513:10;;2479:342;;2566:18;;;;:33;;2479:342;2601:31;;;;2544:15;;;;2479:342;;;;;;2544:89;;:15;;2566:33;2544:21;:89::i;:::-;2479:342;;2680:18;;;;:33;;2479:342;2715:31;;;;2656:17;;;;2479:342;;;;;2656:91;;:17;2680:33;2656:23;:91::i;:::-;2479:342;;;;2766:11;:15;;;;;;;;:::i;:::-;2479:342;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2479:342:66;;;-1:-1:-1;2479:342:66;;;;;2882:18;;;;:34;;;;2930:33;;2977:41;;;;;2463:358;;-1:-1:-1;2831:197:66;;2463:358;;2930:33;2831:37;:197::i;:::-;2139:896;;1967:1068;;;:::o;3441:405:62:-;3532:13;;3509:20;3579:251;3603:12;3599:1;:16;3579:251;;;3640:26;3669:6;3676:1;3669:9;;;;;;;;:::i;:::-;;;;;;;3640:38;;3696:18;3708:5;3696:11;:18::i;:::-;3732:26;:5;3747:10;3732:14;:26::i;:::-;3776:39;3797:5;3804:10;3776:20;:39::i;:::-;-1:-1:-1;3617:3:62;;3579:251;;3968:1267;4056:13;;4033:20;4236:536;4260:12;4256:1;:16;4236:536;;;4297:34;4334:6;4341:1;4334:9;;;;;;;;:::i;:::-;;;;;;;4297:46;;4361:21;4385:13;:21;;;:28;4361:52;;4436:9;4431:217;4455:13;4451:1;:17;4431:217;;;4497:25;4525:13;:21;;;4547:1;4525:24;;;;;;;;:::i;:::-;;;;;;;4497:52;;4571:58;4597:6;:16;;;4615:6;:13;;;4571:6;:12;;;:25;;;;:58;;;;;:::i;:::-;-1:-1:-1;4470:3:62;;4431:217;;;;4704:13;:18;;;:26;;;4671:86;;4692:10;4671:86;;4676:6;4683:1;4676:9;;;;;;;;:::i;:::-;;;;;;;:14;;;4671:86;4732:13;:18;;;:24;;;4671:86;;;;18365:25:108;;18353:2;18338:18;;18219:177;4671:86:62;;;;;;;;-1:-1:-1;;4274:3:62;;4236:536;;;-1:-1:-1;5112:21:62;:25;5108:121;;5153:65;5184:10;5196:21;5153:30;:65::i;2594:423:61:-;1589:256;;19221:15:108;1589:256:61;;;19209:28:108;19267:17;19253:12;;;19246:39;19315:19;19301:12;;;19294:41;19365:25;19351:12;;;19344:47;19421:31;19407:12;;;19400:53;19483:29;19469:12;;;19462:51;19544:28;19529:13;;;19522:51;2658:7:61;;19589:13:108;;1589:256:61;;;;;;;;;;1935:31;;;;;;;;;;1589:256;;;1935:31;1589:256;1935:31;;;1968:28;;;;;;;;;;;;;;;;;1897:100;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2047:21;;;;;;2768:17;:5;:10;;;:15;:17::i;:::-;2803:14;;;;;2835:15;;;;;:21;;2874:27;;;;2919:25;;;2962:17;;;;2803:14;;2835:21;2962:24;;:22;:24::i;:::-;2707:293;;;;;;20645:25:108;;;;20686:18;;20679:34;;;;20732:42;20810:15;;;20790:18;;;20783:43;20862:15;;;;20842:18;;;20835:43;20894:19;;;20887:35;20938:19;;;20931:35;20982:19;;;20975:35;20617:19;;2707:293:61;;;;;;;;;;;;;2684:326;;;;;;2677:333;;2594:423;;;:::o;4638:638:66:-;4758:18;;;;:31;;;4736:10;;:19;;;:53;4732:114;;;4812:23;;;;;;;;;;;;;;4732:114;4857:9;4868;4892:5;:17;;;4881:49;;;;;;;;;;;;:::i;:::-;4856:74;;;;4940:7;4956:5;:17;;;4974:2;4956:21;;;;;;;;:::i;:::-;;;;;;;;;4950:28;;4940:38;;5047:14;5064:90;5101:9;5123:5;:18;;;5112:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;5084:59;;;5112:30;5084:59;;:::i;:::-;;;;;;;;;;;;;;5074:70;;5084:59;5074:70;;;;5064:90;;;;;;;;;22958:25:108;23031:4;23019:17;;22999:18;;;22992:45;23053:18;;;23046:34;;;23096:18;;;23089:34;;;22930:19;;5064:90:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5047:107;;5186:6;5168:24;;:5;:14;;;:24;;;;:48;;;-1:-1:-1;5196:20:66;;;;5168:48;5164:106;;;5239:20;;;;;;;;;;;;;;5164:106;4722:554;;;;4638:638;;:::o;3423:936::-;3514:18;;;;;:30;;:35;3510:267;;3602:5;:15;;;:27;;;3569:5;:18;;;:30;;;:60;3565:128;;;3656:22;;;;;;;;;;;;;;3565:128;3736:18;;;;;:30;;3706:15;;;;:27;;:60;3510:267;3834:5;:17;;;:24;3791:5;:18;;;:32;;;:39;:67;3787:128;;3881:23;;;;;;;;;;;;;;3787:128;3929:9;3924:429;3948:5;:17;;;:24;3944:1;:28;3924:429;;;3993:25;4021:5;:17;;;4039:1;4021:20;;;;;;;;:::i;:::-;;;;;;;3993:48;;4055:20;4078:5;:18;;;:32;;;4111:1;4078:35;;;;;;;;:::i;:::-;;;;;;;4055:58;;4131:12;4147:1;4131:17;4127:216;;4187:6;:18;;;4172:12;:33;4168:110;;;4236:23;;;;;;;;;;;;;;4168:110;4295:18;;;:33;;;4127:216;-1:-1:-1;;3974:3:66;;3924:429;;4025:462:53;4158:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;4158:24:53;4222:5;:15;;;4202:5;:17;;;:35;4198:91;;;4260:18;;;;;;;;;;;;;;4198:91;4299:20;4322:85;4342:5;:17;;;4361:5;:15;;;4378:14;4394:12;4322:19;:85::i;:::-;4426:54;;;;;;;;4437:11;;4426:54;;;;;;;;;;;4464:15;;;;4426:54;;;;;;;-1:-1:-1;4426:54:53;;4025:462;-1:-1:-1;;;4025:462:53:o;3300:453::-;3504:14;;3438:27;;3504:14;3537:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;3537:31:53;;;;;;;;;;;;;;;3528:40;;3607:9;3602:135;3626:12;3622:1;:16;3602:135;;;3675:47;3681:7;3689:1;3681:10;;;;;;;;:::i;:::-;;;;;;;3693:14;3709:12;3675:5;:47::i;:::-;3663:6;3670:1;3663:9;;;;;;;;:::i;:::-;;;;;;;;;;:59;3640:3;;3602:135;;;;3471:282;3300:453;;;;;:::o;1073:927:56:-;1352:47;1369:9;1380:18;1352:16;:47::i;:::-;1415:7;1348:84;1536:22;1532:103;;1603:21;;;;;;;;;;;;;;1532:103;1720:13;;;;1689:28;1743:251;1767:7;:14;1763:1;:18;1743:251;;;1798:25;1826:7;1834:1;1826:10;;;;;;;;:::i;:::-;;;;;;;1798:38;;1866:57;1895:22;743:6;1889:28;;;;:::i;:::-;1866:13;;;;;743:6;1866:22;:57::i;:::-;1850:13;;;;:73;1966:3;;1743:251;;1825:2185:43;1910:13;;1902:36;1910:13;1898:73;;1825:2185;:::o;1898:73::-;2015:13;;:34;;;;;1981:31;;2015:13;;;:27;;:34;;2043:5;;2015:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2083:13;;;;:20;2140:17;;1981:68;;-1:-1:-1;2083:20:43;2059:21;2294:32;2140:17;2083:20;2294:32;:::i;:::-;2276:51;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;2276:51:43;;;;;;;;;;;;;;;2242:85;;2343:9;2338:101;2362:13;2358:1;:17;2338:101;;;2412:5;:13;;;2426:1;2412:16;;;;;;;;:::i;:::-;;;;;;;2396:10;2407:1;2396:13;;;;;;;;:::i;:::-;;;;;;;;;;:32;2377:3;;2338:101;;;;2449:19;2486:18;2527:9;2522:1445;2546:16;2542:1;:20;2522:1445;;;2583:28;2614:10;2625:1;2614:13;;;;;;;;:::i;:::-;;;;;;;2583:44;;2682:9;2677:191;2701:1;2697;:5;2677:191;;;2750:10;2761:1;2750:13;;;;;;;;:::i;:::-;;;;;;;:19;;;2731:38;;:9;:15;;;:38;;;2727:127;;2819:15;;2800:35;;;;;2288:42:108;2276:55;;;2800:35:43;;;2258:74:108;2231:18;;2800:35:43;2094:244:108;2727:127:43;2704:3;;2677:191;;;-1:-1:-1;2933:18:43;;2965:354;2989:13;2985:1;:17;2965:354;;;3027:25;3055:5;:13;;;3069:1;3055:16;;;;;;;;:::i;:::-;;;;;;;3027:44;;3109:9;:15;;;3093:31;;:6;:12;;;:31;;;3089:216;;3152:13;3148:46;;;3174:20;;;;;;;;;;;;;;3148:46;3230:13;;;;3216:27;;;;:::i;:::-;;;3282:4;3265:21;;3089:216;-1:-1:-1;3004:3:43;;2965:354;;;-1:-1:-1;3415:15:43;;3393:11;;;;:17;3385:45;;;;;;;3381:219;;3454:14;3450:47;;;3477:20;;;;;;;;;;;;;;3450:47;3529:11;;;;;:18;;3515:32;;;;:::i;:::-;;;3581:4;3565:20;;3381:219;3618:10;3632:1;3618:15;3614:60;;3658:15;;3642:32;;;;;2288:42:108;2276:55;;;3642:32:43;;;2258:74:108;2231:18;;3642:32:43;2094:244:108;3614:60:43;3712:39;:10;1424:1;1373:6;3712:21;:39::i;:::-;3693:9;:16;;;:58;3689:171;;;3790:15;;3807:16;;;;3825:19;;;;;3778:67;;;;;25375:42:108;25444:15;;;3778:67:43;;;25426:34:108;25476:18;;;25469:34;;;;25539:15;;;;25519:18;;;25512:43;25338:18;;3778:67:43;25163:398:108;3689:171:43;3933:9;3901:10;3928:1;3912:13;:17;3901:29;;;;;;;;:::i;:::-;;;;;;;;;;:41;-1:-1:-1;;2564:3:43;;2522:1445;;;-1:-1:-1;;;3977:13:43;;;;:26;;;;-1:-1:-1;;;1825:2185:43:o;429:396:60:-;552:18;;:26;527:52;;535:4;527:52;523:106;;602:16;;;;;;;;;;;;;;523:106;651:18;;:47;;;643:70;;;639:180;;729:18;;:47;;;:79;;;;;:56;;;;;;;:79;;786:6;;729:13;;:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3073:344:66;3171:7;:33;;;3218:16;:5;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;509:303:59;;;572:149;;;;;641:11;;;;;;:17;572:149;;509:303;;;;572:149;;;685:11;;:21;;;572:149;;;;509:303;;742:10;;:16;;;509:303;;;;;;;782:10;;:19;;;;509:303;;;;;349:470;3218:16:66;-1:-1:-1;;;;;;;;;;;;;;;;;1071:90:59;;;;;;;;;;;;;1141:11;;;;:18;;;1071:90;;;;3287:5:66;:10;;;:18;;;3319:5;:10;;;2300:31:61;;;;;;;;;;;;;;;;;2345:28;;;;;;;;;;;;;;;;;2387:36;;;;;;;;;;;;;;;;;1589:256;;19221:15:108;1589:256:61;;;19209:28:108;19267:17;19253:12;;;19246:39;19315:19;19301:12;;;19294:41;19365:25;19351:12;;;19344:47;19421:31;19407:12;;;19400:53;19483:29;19469:12;;;19462:51;19544:28;19529:13;;;19522:51;19589:13;;1589:256:61;;;;;;;;;;;;;;2233:233;;;;;1589:256;2233:233;;:::i;:::-;;;;;;;;;;;;;;;3391:9:66;;;;3171:239;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1478:434:52;2501:18;;;1572:334;;1695:33;1710:9;1721:6;1695:14;:33::i;1572:334::-;1832:63;:32;;;1865:10;1877:9;1888:6;1832:32;:63::i;2084:189::-;2163:12;2180:9;:14;;2202:6;2180:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2162:51;;;2228:7;2223:43;;2244:22;;;;;;;;;;;;;;574:416:58;634:7;461:15;;;;;;;;;;;;;;;;;451:26;;;;;;;749:12;;779;;;;809:10;;;;;837:13;;;;868:33;;;;929:29;;;;919:40;;;;;;683:290;;;;809:10;;837:13;;868:33;;919:40;683:290;28918:25:108;;;28962:42;29040:15;;;29035:2;29020:18;;29013:43;29092:15;;;29087:2;29072:18;;29065:43;29139:2;29124:18;;29117:34;;;;29182:3;29167:19;;29160:35;29232:15;;;29226:3;29211:19;;29204:44;29279:3;29264:19;;29257:35;28905:3;28890:19;;28556:742;3091:487:54;3158:7;3201:25;3244:7;:14;3239:2;:19;3229:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3229:30:54;;3201:58;;3279:9;3274:243;3298:7;:14;3294:1;:18;3274:243;;;3337:18;3358:16;3363:7;3371:1;3363:10;;;;;;;;:::i;:::-;;;;;;;3358:4;:16::i;:::-;3466:4;3459:12;;;3430:42;;;3423:62;-1:-1:-1;3314:3:54;;3274:243;;;-1:-1:-1;3538:23:54;;;;;;;;3091:487;-1:-1:-1;;3091:487:54:o;1212:1043:53:-;1360:21;1416:9;1401:11;:24;1397:852;;-1:-1:-1;1448:11:53;1441:18;;1397:852;1496:14;1480:12;:30;1476:773;;1533:24;;;;;;;;;;;;;;1476:773;1594:15;1578:12;:31;1574:675;;-1:-1:-1;1641:9:53;1574:675;;;1689:15;1671:14;:33;1667:582;;-1:-1:-1;1736:11:53;1667:582;;;1824:15;:32;;;1893:29;;;1944:23;;;1940:285;;;2021:55;2022:23;;;2058:7;2067:8;2021:36;:55::i;:::-;2007:11;:69;1991:85;;1940:285;;;2153:53;2154:23;;;2188:7;2197:8;2153:34;:53::i;:::-;2139:11;:67;2123:83;;1940:285;1778:461;;1667:582;1212:1043;;;;;;:::o;2531:474::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;2732:6:53;:16;;;2711:6;:18;;;:37;2707:93;;;2771:18;;;;;;;;;;;;;;2707:93;2810:21;2834:87;2854:6;:18;;;2874:6;:16;;;2892:14;2908:12;2834:19;:87::i;:::-;2810:111;;2940:58;;;;;;;;2952:6;:12;;;2940:58;;;;;;2966:13;2940:58;;;;2981:6;:16;;;2940:58;;;;;2931:67;;2697:308;2531:474;;;;;:::o;2378:216:56:-;2474:4;2497:23;;;;;:63;;;2542:18;2524:15;:36;2497:63;:90;;;-1:-1:-1;2564:23:56;;;2577:10;2564:23;2497:90;2490:97;;2378:216;;;;;:::o;2096:672:38:-;2210:9;2458:1;2445:11;2441:19;2438:1;2435:26;2432:1;2428:34;2421:42;2408:11;2404:60;2394:116;;2494:1;2491;2484:12;2394:116;-1:-1:-1;2728:9:38;;2691:27;;;2688:34;;2724:27;;;2684:68;;2096:672::o;1564:526::-;1680:9;1928:1;1915:11;1911:19;1908:1;1905:26;1902:1;1898:34;1891:42;1878:11;1874:60;1864:116;;1964:1;1961;1954:12;1864:116;-1:-1:-1;2051:9:38;;2047:27;;1564:526::o;1328:1782:39:-;1466:12;1636:4;1630:11;1778:66;1759:17;1752:93;1902:42;1896:4;1892:53;1888:1;1869:17;1865:25;1858:88;2042:42;2038:2;2034:51;2029:2;2010:17;2006:26;1999:87;2172:6;2167:2;2148:17;2144:26;2137:42;3026:2;3023:1;3018:3;2999:17;2996:1;2989:5;2982;2977:52;2545:16;2538:24;2532:2;2514:16;2511:24;2507:1;2503;2497:8;2494:15;2490:46;2487:76;2287:756;2276:767;;;3071:7;3063:40;;;;;;;29505:2:108;3063:40:39;;;29487:21:108;29544:2;29524:18;;;29517:30;29583:22;29563:18;;;29556:50;29623:18;;3063:40:39;29303:344:108;3063:40:39;1456:1654;1328:1782;;;;:::o;2728:234:54:-;2792:7;1695:17;;;;;;;;;;;;;;;;;1685:28;;;;;;;2876:12;;2890:18;;;;2910:16;;;;;2928;;;;2841:104;;;;2910:16;;2928;2841:104;29911:25:108;;;29955:42;30033:15;;;30028:2;30013:18;;30006:43;30080:2;30065:18;;30058:34;;;;30123:2;30108:18;;30101:34;30172:15;30166:3;30151:19;;30144:44;29898:3;29883:19;;29652:542;14:159;78:5;123:2;114:6;109:3;105:16;101:25;98:45;;;139:1;136;129:12;98:45;-1:-1:-1;161:6:108;14:159;-1:-1:-1;14:159:108:o;178:347::-;229:8;239:6;293:3;286:4;278:6;274:17;270:27;260:55;;311:1;308;301:12;260:55;-1:-1:-1;334:20:108;;377:18;366:30;;363:50;;;409:1;406;399:12;363:50;446:4;438:6;434:17;422:29;;498:3;491:4;482:6;474;470:19;466:30;463:39;460:59;;;515:1;512;505:12;460:59;178:347;;;;;:::o;530:673::-;641:6;649;657;710:2;698:9;689:7;685:23;681:32;678:52;;;726:1;723;716:12;678:52;766:9;753:23;795:18;836:2;828:6;825:14;822:34;;;852:1;849;842:12;822:34;875:71;938:7;929:6;918:9;914:22;875:71;:::i;:::-;865:81;;999:2;988:9;984:18;971:32;955:48;;1028:2;1018:8;1015:16;1012:36;;;1044:1;1041;1034:12;1012:36;;1083:60;1135:7;1124:8;1113:9;1109:24;1083:60;:::i;:::-;530:673;;1162:8;;-1:-1:-1;1057:86:108;;-1:-1:-1;;;;530:673:108:o;1208:387::-;1291:8;1301:6;1355:3;1348:4;1340:6;1336:17;1332:27;1322:55;;1373:1;1370;1363:12;1322:55;-1:-1:-1;1396:20:108;;1439:18;1428:30;;1425:50;;;1471:1;1468;1461:12;1425:50;1508:4;1500:6;1496:17;1484:29;;1568:3;1561:4;1551:6;1548:1;1544:14;1536:6;1532:27;1528:38;1525:47;1522:67;;;1585:1;1582;1575:12;1600:489;1718:6;1726;1779:2;1767:9;1758:7;1754:23;1750:32;1747:52;;;1795:1;1792;1785:12;1747:52;1835:9;1822:23;1868:18;1860:6;1857:30;1854:50;;;1900:1;1897;1890:12;1854:50;1939:90;2021:7;2012:6;2001:9;1997:22;1939:90;:::i;:::-;2048:8;;1913:116;;-1:-1:-1;1600:489:108;-1:-1:-1;;;;1600:489:108:o;2343:797::-;2481:6;2489;2497;2505;2558:2;2546:9;2537:7;2533:23;2529:32;2526:52;;;2574:1;2571;2564:12;2526:52;2614:9;2601:23;2643:18;2684:2;2676:6;2673:14;2670:34;;;2700:1;2697;2690:12;2670:34;2739:90;2821:7;2812:6;2801:9;2797:22;2739:90;:::i;:::-;2848:8;;-1:-1:-1;2713:116:108;-1:-1:-1;2936:2:108;2921:18;;2908:32;;-1:-1:-1;2952:16:108;;;2949:36;;;2981:1;2978;2971:12;2949:36;;3020:60;3072:7;3061:8;3050:9;3046:24;3020:60;:::i;:::-;2343:797;;;;-1:-1:-1;3099:8:108;-1:-1:-1;;;;2343:797:108:o;3145:154::-;3231:42;3224:5;3220:54;3213:5;3210:65;3200:93;;3289:1;3286;3279:12;3304:134;3372:20;;3401:31;3372:20;3401:31;:::i;:::-;3304:134;;;:::o;3443:247::-;3502:6;3555:2;3543:9;3534:7;3530:23;3526:32;3523:52;;;3571:1;3568;3561:12;3523:52;3610:9;3597:23;3629:31;3654:5;3629:31;:::i;:::-;3679:5;3443:247;-1:-1:-1;;;3443:247:108:o;3695:365::-;3786:6;3839:2;3827:9;3818:7;3814:23;3810:32;3807:52;;;3855:1;3852;3845:12;3807:52;3895:9;3882:23;3928:18;3920:6;3917:30;3914:50;;;3960:1;3957;3950:12;3914:50;3983:71;4046:7;4037:6;4026:9;4022:22;3983:71;:::i;4559:184::-;4611:77;4608:1;4601:88;4708:4;4705:1;4698:15;4732:4;4729:1;4722:15;4748:184;4800:77;4797:1;4790:88;4897:4;4894:1;4887:15;4921:4;4918:1;4911:15;4937:250;5022:1;5032:113;5046:6;5043:1;5040:13;5032:113;;;5122:11;;;5116:18;5103:11;;;5096:39;5068:2;5061:10;5032:113;;;-1:-1:-1;;5179:1:108;5161:16;;5154:27;4937:250::o;5192:329::-;5233:3;5271:5;5265:12;5298:6;5293:3;5286:19;5314:76;5383:6;5376:4;5371:3;5367:14;5360:4;5353:5;5349:16;5314:76;:::i;:::-;5435:2;5423:15;5440:66;5419:88;5410:98;;;;5510:4;5406:109;;5192:329;-1:-1:-1;;5192:329:108:o;5787:700::-;5851:3;5889:5;5883:12;5916:6;5911:3;5904:19;5942:4;5971;5966:3;5962:14;5955:21;;6010:4;6003:5;5999:16;6033:1;6043:419;6057:6;6054:1;6051:13;6043:419;;;6116:13;;6223:9;;6152:42;6219:18;;;6207:31;;6278:11;;;6272:18;6258:12;;;6251:40;6314:4;6362:11;;;6356:18;6352:27;6338:12;;;6331:49;6409:4;6400:14;;;;6437:15;;;;6079:1;6072:9;6043:419;;;-1:-1:-1;6478:3:108;;5787:700;-1:-1:-1;;;;;5787:700:108:o;6492:1240::-;6548:3;6592:5;6586:12;6619:4;6614:3;6607:17;6643:42;6742:2;6727:12;6721:19;6717:28;6710:4;6705:3;6701:14;6694:52;6813:2;6805:4;6791:12;6787:23;6781:30;6777:39;6771:3;6766;6762:13;6755:62;6872:4;6858:12;6854:23;6848:30;6842:3;6837;6833:13;6826:53;6934:4;6920:12;6916:23;6910:30;6904:3;6899;6895:13;6888:53;7008:2;7000:4;6986:12;6982:23;6976:30;6972:39;6966:3;6961;6957:13;6950:62;;7067:4;7053:12;7049:23;7043:30;7021:52;;7104:4;7098:3;7093;7089:13;7082:27;7131:47;7173:3;7168;7164:13;7148:14;7131:47;:::i;:::-;7118:60;;7226:4;7219:5;7215:16;7209:23;7241:60;7295:4;7290:3;7286:14;7270;5606:12;;5620:42;5602:61;5590:74;;5713:4;5702:16;;;5696:23;5680:14;;;5673:47;5769:4;5758:16;;;5752:23;5736:14;;5729:47;5526:256;7241:60;;7349:4;7342:5;7338:16;7332:23;7398:3;7391:5;7387:15;7380:4;7375:3;7371:14;7364:39;7424:62;7480:5;7464:14;7424:62;:::i;:::-;7412:74;;;7534:4;7527:5;7523:16;7517:23;7582:3;7576:4;7572:14;7565:4;7560:3;7556:14;7549:38;7610;7643:4;7627:14;7610:38;:::i;:::-;7596:52;;;7697:4;7690:5;7686:16;7680:23;7673:4;7668:3;7664:14;7657:47;7720:6;7713:13;;;6492:1240;;;;:::o;7737:1274::-;7999:4;8047:2;8036:9;8032:18;8077:2;8066:9;8059:21;8100:6;8135;8129:13;8166:6;8158;8151:22;8204:2;8193:9;8189:18;8182:25;;8266:2;8256:6;8253:1;8249:14;8238:9;8234:30;8230:39;8216:53;;8288:4;8327:2;8319:6;8315:15;8348:1;8358:328;8372:6;8369:1;8366:13;8358:328;;;8461:66;8449:9;8441:6;8437:22;8433:95;8428:3;8421:108;8552:54;8599:6;8590;8584:13;8552:54;:::i;:::-;8542:64;-1:-1:-1;8664:12:108;;;;8629:15;;;;8394:1;8387:9;8358:328;;;8362:3;;8734:9;8726:6;8722:22;8717:2;8706:9;8702:18;8695:50;8769:6;8761;8754:22;8823:6;8815;8810:2;8802:6;8798:15;8785:45;8876:1;8850:19;;;8846:28;;8839:39;8927:2;8915:15;;;8932:66;8911:88;8899:101;;;8895:110;;;;7737:1274;-1:-1:-1;;;;;;7737:1274:108:o;9016:388::-;9114:4;9172:11;9159:25;9262:66;9251:8;9235:14;9231:29;9227:102;9207:18;9203:127;9193:155;;9344:1;9341;9334:12;9193:155;9365:33;;;;;9016:388;-1:-1:-1;;9016:388:108:o;10442:580::-;10519:4;10525:6;10585:11;10572:25;10675:66;10664:8;10648:14;10644:29;10640:102;10620:18;10616:127;10606:155;;10757:1;10754;10747:12;10606:155;10784:33;;10836:20;;;-1:-1:-1;10879:18:108;10868:30;;10865:50;;;10911:1;10908;10901:12;10865:50;10944:4;10932:17;;-1:-1:-1;10975:14:108;10971:27;;;10961:38;;10958:58;;;11012:1;11009;11002:12;11027:253;11099:2;11093:9;11141:4;11129:17;;11176:18;11161:34;;11197:22;;;11158:62;11155:88;;;11223:18;;:::i;:::-;11259:2;11252:22;11027:253;:::o;11285:::-;11357:2;11351:9;11399:4;11387:17;;11434:18;11419:34;;11455:22;;;11416:62;11413:88;;;11481:18;;:::i;11543:253::-;11615:2;11609:9;11657:4;11645:17;;11692:18;11677:34;;11713:22;;;11674:62;11671:88;;;11739:18;;:::i;11801:334::-;11872:2;11866:9;11928:2;11918:13;;11933:66;11914:86;11902:99;;12031:18;12016:34;;12052:22;;;12013:62;12010:88;;;12078:18;;:::i;:::-;12114:2;12107:22;11801:334;;-1:-1:-1;11801:334:108:o;12140:589::-;12182:5;12235:3;12228:4;12220:6;12216:17;12212:27;12202:55;;12253:1;12250;12243:12;12202:55;12289:6;12276:20;12315:18;12311:2;12308:26;12305:52;;;12337:18;;:::i;:::-;12381:114;12489:4;12420:66;12413:4;12409:2;12405:13;12401:86;12397:97;12381:114;:::i;:::-;12520:2;12511:7;12504:19;12566:3;12559:4;12554:2;12546:6;12542:15;12538:26;12535:35;12532:55;;;12583:1;12580;12573:12;12532:55;12648:2;12641:4;12633:6;12629:17;12622:4;12613:7;12609:18;12596:55;12696:1;12671:16;;;12689:4;12667:27;12660:38;;;;12675:7;12140:589;-1:-1:-1;;;12140:589:108:o;12734:894::-;12790:5;12838:4;12826:9;12821:3;12817:19;12813:30;12810:50;;;12856:1;12853;12846:12;12810:50;12878:22;;:::i;:::-;12869:31;;12937:9;12924:23;12956:33;12981:7;12956:33;:::i;:::-;12998:22;;13072:2;13057:18;;13044:32;13085:33;13044:32;13085:33;:::i;:::-;13150:7;13145:2;13138:5;13134:14;13127:31;;13218:2;13207:9;13203:18;13190:32;13185:2;13178:5;13174:14;13167:56;13283:2;13272:9;13268:18;13255:32;13250:2;13243:5;13239:14;13232:56;13340:3;13329:9;13325:19;13312:33;13354;13379:7;13354:33;:::i;:::-;13414:3;13403:15;;13396:32;13479:3;13464:19;;13451:33;13507:18;13496:30;;13493:50;;;13539:1;13536;13529:12;13493:50;13576:45;13617:3;13608:6;13597:9;13593:22;13576:45;:::i;:::-;13570:3;13563:5;13559:15;13552:70;;12734:894;;;;:::o;13633:423::-;13690:5;13738:4;13726:9;13721:3;13717:19;13713:30;13710:50;;;13756:1;13753;13746:12;13710:50;13778:22;;:::i;:::-;13769:31;;13837:9;13824:23;13856:33;13881:7;13856:33;:::i;:::-;13912:7;13905:5;13898:22;;13980:2;13969:9;13965:18;13952:32;13947:2;13940:5;13936:14;13929:56;14045:2;14034:9;14030:18;14017:32;14012:2;14005:5;14001:14;13994:56;13633:423;;;;:::o;14061:194::-;14132:4;14165:18;14157:6;14154:30;14151:56;;;14187:18;;:::i;:::-;-1:-1:-1;14232:1:108;14228:14;14244:4;14224:25;;14061:194::o;14260:1295::-;14325:5;14378:3;14371:4;14363:6;14359:17;14355:27;14345:55;;14396:1;14393;14386:12;14345:55;14432:6;14419:20;14458:4;14482:71;14498:54;14549:2;14498:54;:::i;:::-;14482:71;:::i;:::-;14587:15;;;14673:1;14669:10;;;;14657:23;;14653:32;;;14618:12;;;;14697:15;;;14694:35;;;14725:1;14722;14715:12;14694:35;14761:2;14753:6;14749:15;14773:753;14789:6;14784:3;14781:15;14773:753;;;14867:4;14861:3;14856;14852:13;14848:24;14845:114;;;14913:1;14942:2;14938;14931:14;14845:114;14985:22;;:::i;:::-;15048:3;15035:17;15065:33;15090:7;15065:33;:::i;:::-;15111:22;;15182:12;;;15169:26;15153:14;;;15146:50;15219:2;15270:12;;;15257:26;15241:14;;;15234:50;15307:2;15350:12;;;15337:26;15376:33;15337:26;15376:33;:::i;:::-;15429:14;;;15422:31;15466:18;;15504:12;;;;14815:4;14806:14;14773:753;;;-1:-1:-1;15544:5:108;14260:1295;-1:-1:-1;;;;;;14260:1295:108:o;15560:1313::-;15619:5;15667:4;15655:9;15650:3;15646:19;15642:30;15639:50;;;15685:1;15682;15675:12;15639:50;15707:22;;:::i;:::-;15698:31;;15765:9;15752:23;15745:5;15738:38;15795:2;15857;15846:9;15842:18;15829:32;15824:2;15817:5;15813:14;15806:56;15914:2;15903:9;15899:18;15886:32;15927:33;15952:7;15927:33;:::i;:::-;15992:7;15987:2;15980:5;15976:14;15969:31;;16060:2;16049:9;16045:18;16032:32;16027:2;16020:5;16016:14;16009:56;16126:3;16115:9;16111:19;16098:33;16092:3;16085:5;16081:15;16074:58;16183:3;16172:9;16168:19;16155:33;16211:18;16203:6;16200:30;16197:50;;;16243:1;16240;16233:12;16197:50;16266:22;;16319:4;16311:13;;16307:23;-1:-1:-1;16297:51:108;;16344:1;16341;16334:12;16297:51;16380:2;16367:16;16403:71;16419:54;16470:2;16419:54;:::i;16403:71::-;16508:15;;;16590:1;16586:10;;;;16578:19;;16574:28;;;16539:12;;;;16614:15;;;16611:35;;;16642:1;16639;16632:12;16611:35;16666:11;;;;16686:142;16702:6;16697:3;16694:15;16686:142;;;16768:17;;16756:30;;16719:12;;;;16806;;;;16686:142;;;16855:3;16844:15;;16837:30;-1:-1:-1;16848:5:108;;15560:1313;-1:-1:-1;;;;;15560:1313:108:o;16878:1336::-;16968:6;17021:2;17009:9;17000:7;16996:23;16992:32;16989:52;;;17037:1;17034;17027:12;16989:52;17077:9;17064:23;17106:18;17147:2;17139:6;17136:14;17133:34;;;17163:1;17160;17153:12;17133:34;17186:22;;;;17242:6;17224:16;;;17220:29;17217:49;;;17262:1;17259;17252:12;17217:49;17288:22;;:::i;:::-;17348:2;17335:16;17376:2;17366:8;17363:16;17360:36;;;17392:1;17389;17382:12;17360:36;17419:55;17466:7;17455:8;17451:2;17447:17;17419:55;:::i;:::-;17412:5;17405:70;;17507:31;17534:2;17530;17526:11;17507:31;:::i;:::-;17502:2;17495:5;17491:14;17484:55;17571:50;17613:7;17608:2;17604;17600:11;17571:50;:::i;:::-;17566:2;17559:5;17555:14;17548:74;17668:3;17664:2;17660:12;17647:26;17698:2;17688:8;17685:16;17682:36;;;17714:1;17711;17704:12;17682:36;17752:67;17811:7;17800:8;17796:2;17792:17;17752:67;:::i;:::-;17745:4;17738:5;17734:16;17727:93;;17866:4;17862:2;17858:13;17845:27;17897:2;17887:8;17884:16;17881:36;;;17913:1;17910;17903:12;17881:36;17951:58;18001:7;17990:8;17986:2;17982:17;17951:58;:::i;:::-;17944:4;17937:5;17933:16;17926:84;;18056:3;18052:2;18048:12;18035:26;18086:2;18076:8;18073:16;18070:36;;;18102:1;18099;18092:12;18070:36;18139:44;18175:7;18164:8;18160:2;18156:17;18139:44;:::i;:::-;18133:3;18122:15;;18115:69;-1:-1:-1;18126:5:108;16878:1336;-1:-1:-1;;;;;16878:1336:108:o;19613:697::-;19834:3;19872:6;19866:13;19888:66;19947:6;19942:3;19935:4;19927:6;19923:17;19888:66;:::i;:::-;20017:13;;19976:16;;;;20039:70;20017:13;19976:16;20086:4;20074:17;;20039:70;:::i;:::-;20176:13;;20131:20;;;20198:70;20176:13;20131:20;20245:4;20233:17;;20198:70;:::i;:::-;20284:20;;19613:697;-1:-1:-1;;;;;19613:697:108:o;21021:245::-;21100:6;21108;21161:2;21149:9;21140:7;21136:23;21132:32;21129:52;;;21177:1;21174;21167:12;21129:52;-1:-1:-1;;21200:16:108;;21256:2;21241:18;;;21235:25;21200:16;;21235:25;;-1:-1:-1;21021:245:108:o;21271:1091::-;21425:4;21454:2;21483;21472:9;21465:21;21524:3;21513:9;21509:19;21570:6;21564:13;21559:2;21548:9;21544:18;21537:41;21632:2;21624:6;21620:15;21614:22;21609:2;21598:9;21594:18;21587:50;21701:42;21695:2;21687:6;21683:15;21677:22;21673:71;21668:2;21657:9;21653:18;21646:99;21800:2;21792:6;21788:15;21782:22;21776:3;21765:9;21761:19;21754:51;21860:3;21852:6;21848:16;21842:23;21836:3;21825:9;21821:19;21814:52;21913:3;21905:6;21901:16;21895:23;21956:4;21949;21938:9;21934:20;21927:34;21981:6;22016:12;22010:19;22053:6;22045;22038:22;22091:3;22080:9;22076:19;22069:26;;22136:2;22122:12;22118:21;22104:35;;22157:1;22148:10;;22167:169;22181:6;22178:1;22175:13;22167:169;;;22242:13;;22230:26;;22311:15;;;;22203:1;22196:9;;;;;22276:12;;;;22167:169;;22367:359;22554:6;22549:3;22542:19;22524:3;22590:6;22584:13;22606:73;22672:6;22667:2;22662:3;22658:12;22653:2;22645:6;22641:15;22606:73;:::i;:::-;22699:16;;;;22717:2;22695:25;;22367:359;-1:-1:-1;;;22367:359:108:o;23134:279::-;23199:9;;;23220:10;;;23217:190;;;23263:77;23260:1;23253:88;23364:4;23361:1;23354:15;23392:4;23389:1;23382:15;23418:278;23611:2;23600:9;23593:21;23574:4;23631:59;23686:2;23675:9;23671:18;23663:6;23631:59;:::i;23701:1457::-;23826:6;23857:2;23900;23888:9;23879:7;23875:23;23871:32;23868:52;;;23916:1;23913;23906:12;23868:52;23949:9;23943:16;23982:18;23974:6;23971:30;23968:50;;;24014:1;24011;24004:12;23968:50;24037:22;;24090:4;24082:13;;24078:27;-1:-1:-1;24068:55:108;;24119:1;24116;24109:12;24068:55;24148:2;24142:9;24171:71;24187:54;24238:2;24187:54;:::i;24171:71::-;24276:15;;;24338:4;24377:13;;;24369:22;;24365:31;;;24307:12;;;;24264:3;24408:19;;;24405:39;;;24440:1;24437;24430:12;24405:39;24464:11;;;;24484:644;24500:6;24495:3;24492:15;24484:644;;;24580:2;24574:3;24565:7;24561:17;24557:26;24554:116;;;24624:1;24653:2;24649;24642:14;24554:116;24696:22;;:::i;:::-;24752:3;24746:10;24769:33;24794:7;24769:33;:::i;:::-;24815:22;;24879:12;;;24873:19;24857:14;;;24850:43;24916:2;24952:12;;;24946:19;24978:33;24946:19;24978:33;:::i;:::-;25031:14;;;25024:31;25068:18;;24517:12;;;;25106;;;;24484:644;;;-1:-1:-1;25147:5:108;23701:1457;-1:-1:-1;;;;;;;23701:1457:108:o;25566:398::-;25799:42;25791:6;25787:55;25776:9;25769:74;25879:2;25874;25863:9;25859:18;25852:30;25750:4;25899:59;25954:2;25943:9;25939:18;25931:6;25899:59;:::i;25969:1068::-;26369:23;26364:3;26357:36;26339:3;26422:6;26416:13;26438:75;26506:6;26501:2;26496:3;26492:12;26485:4;26477:6;26473:17;26438:75;:::i;:::-;26573:13;;26532:16;;;;26595:76;26573:13;26657:2;26649:11;;26642:4;26630:17;;26595:76;:::i;:::-;26732:13;;26690:17;;;26754:76;26732:13;26816:2;26808:11;;26801:4;26789:17;;26754:76;:::i;:::-;26891:13;;26849:17;;;26913:76;26891:13;26975:2;26967:11;;26960:4;26948:17;;26913:76;:::i;:::-;27009:17;27028:2;27005:26;;25969:1068;-1:-1:-1;;;;;;25969:1068:108:o;27253:1088::-;27683:4;27712:3;27724:60;27774:9;27765:6;27759:13;27128:12;;27142:42;27124:61;27112:74;;27235:4;27224:16;;;27218:23;27202:14;;27195:47;27042:206;27724:60;27840:4;27832:6;27828:17;27822:24;27815:4;27804:9;27800:20;27793:54;27903:4;27895:6;27891:17;27885:24;27878:4;27867:9;27863:20;27856:54;27919:63;27977:3;27966:9;27962:19;27954:6;27128:12;;27142:42;27124:61;27112:74;;27235:4;27224:16;;;27218:23;27202:14;;27195:47;27042:206;27919:63;28031:42;28023:6;28019:55;28013:3;28002:9;27998:19;27991:84;28112:6;28106:3;28095:9;28091:19;28084:35;28156:2;28150:3;28139:9;28135:19;28128:31;28182:44;28222:2;28211:9;28207:18;28199:6;28182:44;:::i;:::-;28168:58;;28275:9;28267:6;28263:22;28257:3;28246:9;28242:19;28235:51;28303:32;28328:6;28320;28303:32;:::i;:::-;28295:40;27253:1088;-1:-1:-1;;;;;;;;;27253:1088:108:o","linkReferences":{},"immutableReferences":{"45165":[{"start":224,"length":32},{"start":6887,"length":32}]}},"methodIdentifiers":{"execute((bytes,bytes))":"3f62192e","executeBatch((bytes,bytes)[])":"0d7a16c3","executeBatchWithCallback((bytes,bytes)[],bytes)":"13fb72c7","executeWithCallback((bytes,bytes),bytes)":"0d335884","feeController()":"6999b377","owner()":"8da5cb5b","permit2()":"12261ee7","setProtocolFeeController(address)":"2d771389","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IPermit2\",\"name\":\"_permit2\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_protocolFeeOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"DeadlineBeforeEndTime\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"duplicateToken\",\"type\":\"address\"}],\"name\":\"DuplicateFeeOutput\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EndTimeBeforeStartTime\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"FeeTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectAmounts\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputAndOutputFees\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCosignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCosignerInput\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCosignerOutput\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeToken\",\"type\":\"address\"}],\"name\":\"InvalidFeeToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidReactor\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NativeTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoExclusiveOverride\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"filler\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"swapper\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"Fill\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldFeeController\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newFeeController\",\"type\":\"address\"}],\"name\":\"ProtocolFeeControllerSet\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"order\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedOrder\",\"name\":\"order\",\"type\":\"tuple\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"order\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedOrder[]\",\"name\":\"orders\",\"type\":\"tuple[]\"}],\"name\":\"executeBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"order\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedOrder[]\",\"name\":\"orders\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"callbackData\",\"type\":\"bytes\"}],\"name\":\"executeBatchWithCallback\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"order\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedOrder\",\"name\":\"order\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"callbackData\",\"type\":\"bytes\"}],\"name\":\"executeWithCallback\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeController\",\"outputs\":[{\"internalType\":\"contract IProtocolFeeController\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"permit2\",\"outputs\":[{\"internalType\":\"contract IPermit2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newFeeController\",\"type\":\"address\"}],\"name\":\"setProtocolFeeController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"V2 orders must be cosigned by the specified cosigner to override timings and starting valuesresolution behavior: - If cosignature is invalid or not from specified cosigner, revert - If inputAmount is 0, then use baseInput - If inputAmount is nonzero, then ensure it is less than specified baseInput and replace startAmount - For each outputAmount: - If amount is 0, then use baseOutput - If amount is nonzero, then ensure it is greater than specified baseOutput and replace startAmount\",\"events\":{\"Fill(bytes32,address,address,uint256)\":{\"params\":{\"filler\":\"The address which executed the fill\",\"nonce\":\"The nonce of the filled order\",\"orderHash\":\"The hash of the order that was filled\",\"swapper\":\"The swapper of the filled order\"}}},\"kind\":\"dev\",\"methods\":{\"execute((bytes,bytes))\":{\"params\":{\"order\":\"The order definition and valid signature to execute\"}},\"executeBatch((bytes,bytes)[])\":{\"params\":{\"orders\":\"The order definitions and valid signatures to execute\"}},\"executeBatchWithCallback((bytes,bytes)[],bytes)\":{\"params\":{\"callbackData\":\"The callbackData to pass to the callback\",\"orders\":\"The order definitions and valid signatures to execute\"}},\"executeWithCallback((bytes,bytes),bytes)\":{\"params\":{\"callbackData\":\"The callbackData to pass to the callback\",\"order\":\"The order definition and valid signature to execute\"}},\"setProtocolFeeController(address)\":{\"details\":\"only callable by the owner\",\"params\":{\"_newFeeController\":\"the new fee controller\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"DeadlineBeforeEndTime()\":[{\"notice\":\"thrown when an order's deadline is before its end time\"}],\"DuplicateFeeOutput(address)\":[{\"notice\":\"thrown if two fee outputs have the same token\"}],\"EndTimeBeforeStartTime()\":[{\"notice\":\"thrown if the endTime of an order is before startTime\"}],\"FeeTooLarge(address,uint256,address)\":[{\"notice\":\"thrown if a given fee output is greater than MAX_FEE_BPS of the order outputs\"}],\"IncorrectAmounts()\":[{\"notice\":\"thrown if the decay direction is incorrect - for DutchInput, startAmount must be less than or equal to endAmount - for DutchOutput, startAmount must be greater than or equal to endAmount\"}],\"InputAndOutputFees()\":[{\"notice\":\"thrown if fees are taken on both inputs and outputs\"}],\"InvalidCosignature()\":[{\"notice\":\"thrown when an order's cosignature does not match the expected cosigner\"}],\"InvalidCosignerInput()\":[{\"notice\":\"thrown when an order's cosigner input is greater than the specified\"}],\"InvalidCosignerOutput()\":[{\"notice\":\"thrown when an order's cosigner output is less than the specified\"}],\"InvalidFeeToken(address)\":[{\"notice\":\"thrown if a fee output token does not have a corresponding non-fee output\"}],\"InvalidReactor()\":[{\"notice\":\"thrown when the order targets a different reactor\"}],\"NativeTransferFailed()\":[{\"notice\":\"Thrown when a native transfer fails\"}],\"NoExclusiveOverride()\":[{\"notice\":\"thrown when an order has strict exclusivity and the filler does not have it\"}]},\"events\":{\"Fill(bytes32,address,address,uint256)\":{\"notice\":\"emitted when an order is filled\"}},\"kind\":\"user\",\"methods\":{\"execute((bytes,bytes))\":{\"notice\":\"Execute a single order\"},\"executeBatch((bytes,bytes)[])\":{\"notice\":\"Execute the given orders at once\"},\"executeBatchWithCallback((bytes,bytes)[],bytes)\":{\"notice\":\"Execute the given orders at once using a callback with the given callback data\"},\"executeWithCallback((bytes,bytes),bytes)\":{\"notice\":\"Execute a single order using the given callback data\"},\"permit2()\":{\"notice\":\"permit2 address used for token transfers and signature verification\"},\"setProtocolFeeController(address)\":{\"notice\":\"sets the protocol fee controller\"}},\"notice\":\"Reactor for v2 dutch orders\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/reactors/V2DutchOrderReactor.sol\":\"V2DutchOrderReactor\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-gas-snapshot/=lib/forge-gas-snapshot/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":permit2/=lib/permit2/\",\":solarray/=lib/solarray/src/\",\":solmate/=lib/solmate/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0xa535a5df777d44e945dd24aa43a11e44b024140fc340ad0dfe42acf4002aade1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://41319e7f621f2dc3733511332c4fd032f8e32ad2aa7fd6f665c19741d9941a34\",\"dweb:/ipfs/QmcYR3bd862GD1Bc7jwrU9bGxrhUu5na1oP964bDCu2id1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278\",\"dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH\"]},\"lib/permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x78931704a7f1d89ef24244b155863abb751cc3b3818f64303ccb47a396d48dcb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b8d6e198ee29d809564f1c1d7caa11a2c329bb5d051f61210548e546493444d2\",\"dweb:/ipfs/QmVxWftbgETjudymgLdwF77S54DWrp6qB5ooauKXW81cm7\"]},\"lib/permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xea70db68ce450ad38dfbd490058595441144808eb95272ae9b89e3fbe6456954\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8fad9ff319665acdc2f1295bb82db3e5b4d52babc0b58f147dbdbb9f322c6e5\",\"dweb:/ipfs/QmTbYJPcux8eJ3qGVYQh6TiwCA2FPu6HXTUg6QFTnX91Ks\"]},\"lib/permit2/src/interfaces/IPermit2.sol\":{\"keccak256\":\"0xaa631cc9f53e699301d94233007110a345e6779011def484e8dd97b8fe0af771\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc0502cf19c9c18f320a3001201e89e350393b75837f6b7971de18b2de06f30d\",\"dweb:/ipfs/QmT9SfhdJ7VJNNrf94g4H5usyi7ShqWGx7Cqsz9jZTjX96\"]},\"lib/permit2/src/interfaces/ISignatureTransfer.sol\":{\"keccak256\":\"0x6805563eaad92471fa1b3591a71d7020a93e59f1a4ac95398daf74927f5bd033\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48cd13806cb8e82dcc38eb93423a372fbdd3b05364ecebb8bfd9cd29078dd90c\",\"dweb:/ipfs/QmeLyFVrzKRHcm6aaFFBCG5mFESCqWLp1KYT41H8XhzMCp\"]},\"lib/solmate/src/auth/Owned.sol\":{\"keccak256\":\"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\",\"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\"]},\"lib/solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"lib/solmate/src/utils/FixedPointMathLib.sol\":{\"keccak256\":\"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9\",\"dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi\"]},\"lib/solmate/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x6ab948013c2c7ca6351e593600425b0ec6df9035320280c678e735bce16e996b\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://2ab977d0eeb2bf458f9798250215c646d2f3b1f90b5a7e2b506fdf3335c0f060\",\"dweb:/ipfs/QmYPRoPhNtBAmCSq7imN1scMVpKNQvMTpoqab3tXUx5Tnv\"]},\"src/base/ProtocolFees.sol\":{\"keccak256\":\"0x1152eee4ac698694bcdbf90b016411112d679812ca0abc1cacd7e6b465e6729a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c1be6b94c6268b68362111e728598e7c1517b20998fdf6752d08e32d55c210f8\",\"dweb:/ipfs/QmStQC274cQqnQSo3QDBcT5BdqEkpwZwFaWwxaYXMZidvw\"]},\"src/base/ReactorEvents.sol\":{\"keccak256\":\"0x61df7aa3ef970f1305c5a6d8c68b0d7ab8bebb9b7518e191c8d2fda532859f61\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://93db11be28b3394485b57a7b120ca224fdb93b471db8468738406f77ebaa13fc\",\"dweb:/ipfs/Qmci4TSUH81C3WDV7TMv56VmiUFZ9MDxZcGTRKhhEPS6gC\"]},\"src/base/ReactorStructs.sol\":{\"keccak256\":\"0x78e6db322ca69aaf552e59d5e74a00fd465a802388c2d03f9bf4b711f5704588\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://12d8fc82c3543bfe0d2cd44cdbc524bed1f074abafe086f7e58573cbaff2a74e\",\"dweb:/ipfs/QmREbamTn3nz89nEjv2uWHNHKSF6Yga2gQ688Cde89xcNT\"]},\"src/interfaces/IProtocolFeeController.sol\":{\"keccak256\":\"0x21a895ff5b778abf95753001a20b4004adfadd1bba622eaec18eb81836ede86c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://67f9eae1da9f238f6630247882e382458dcc0135c0a4837b99a44a2360a3845c\",\"dweb:/ipfs/QmdJyKhVyD6nAtgdTofaU2xaoWrPGM1Q6Sd7FiN2LxXZQx\"]},\"src/interfaces/IReactor.sol\":{\"keccak256\":\"0x23714e546bbeeaa7fe35665d7241319c964421a9fe6d81aead4b85027cabf1e1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3b94402a2e90f75d6238d4460c0b1125bf67b98523803156b104ce57cafdd05b\",\"dweb:/ipfs/QmbY3Mr44MPEMAe9bh9tUSqpPg3AAKfkVfydwJCEzFA14a\"]},\"src/interfaces/IReactorCallback.sol\":{\"keccak256\":\"0xf3ee1fe09545fc5be000c33bb6779e897b4e5013bd9de3e7c3107bf466b4dfa1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://12d7fd1ac3dca76614796f0d012ea4de79bf09cf124cc74efffdf25a56756344\",\"dweb:/ipfs/QmXyeSrG7caihgzUZdPdPbbRj6v1w65gBnfn9a7HhbVJX9\"]},\"src/interfaces/IValidationCallback.sol\":{\"keccak256\":\"0xc31e3a60e210e9a4089f48ba4fae06dec6f4d33da4fbe415cfb8cdc202003bae\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ee145d5fc0e0806dc9db57825142d5d7c3eafc248a27ee301ffd13592f2cda34\",\"dweb:/ipfs/QmQr2HBHZKiUu88a3M1Hs4QSjFemsZmPEd115QG6GKjsC1\"]},\"src/lib/CurrencyLibrary.sol\":{\"keccak256\":\"0x73688c07cd36b5040e0deca3dd1f21a8b19585d6cdfefb816fae98af92a545ea\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://750375d6f0e59f7977b9cfc2cf05fef7b356cea7875fbb71b0ca359d091b8479\",\"dweb:/ipfs/QmZbdTSS1BxWqAHjmtwoJsggbRVkwnxynJuaxzKkkakm4Y\"]},\"src/lib/DutchDecayLib.sol\":{\"keccak256\":\"0x40df504e1791a670bfc14af79bc8fc1600435e3b43c6734a9a92ed7b780d01fc\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6547e03b07140af7a5a61176bf47f1dd5bd37c34d759726fc82e5c8e14d48c8e\",\"dweb:/ipfs/QmZhkeGrKNbmv2avMgkUPjyRbPE9AbzrzPMNsGFh1kUNbe\"]},\"src/lib/DutchOrderLib.sol\":{\"keccak256\":\"0xdd6b9bffcc044899fac52e1e9cbe4becc7a40b56d912695e80600224367235e6\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://78c08ec074bc21ce610f2e0c3594b383e0cd2301c32239146a771e2e5d2cb975\",\"dweb:/ipfs/QmbMQwT9k3RWyTdihqqnu3RDiRCz1XmpMUVwxeyWzChKB5\"]},\"src/lib/ExclusivityLib.sol\":{\"keccak256\":\"0x3a0b93c182c269a00b2fdedf22a65af1e8a4cbb436986cffec2f5cc4acff8401\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a1cfcba8b7b4fdddc385e1c2dbe9fcc8ecff9d0d6e2d82332238bb0aa7505e5a\",\"dweb:/ipfs/QmXBfqnN8V2dMdcFyHMjXxJLWL5yAWoEtanKnHqFcmeLv5\"]},\"src/lib/OrderInfoLib.sol\":{\"keccak256\":\"0x38672b528e63dc53f36ed82d0037110a9f5893ad0a3957e24f19fa3fdbd80015\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://147172dbebf4bb579bc392f25666645719264c0b47378f7fc4f3a95c79bdf5a4\",\"dweb:/ipfs/Qmd5wVnQ8rKHHQgUQzEDcAPiqrVzmNr9t2D7d1SqUg9hTo\"]},\"src/lib/Permit2Lib.sol\":{\"keccak256\":\"0xcb5e1e204f4ac6ea3fa164b8be1b1d31cbad0dff981072ea2c33abd720369e78\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cfa162286525ef8684112639c7b981c0472b06ce799f2440c626a70c273bb533\",\"dweb:/ipfs/QmV1Uy4oodhg4SbCajv9xhiWFuwtU1YcTTvca1cDYCkND9\"]},\"src/lib/ResolvedOrderLib.sol\":{\"keccak256\":\"0xc56a31e72001e3e6ee0baf193423a7563cc61ba4869133e1cae5cf998bfe4d96\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4bddef26f26939f48923b11674495515d792cffbb2dc04f092212ff0b9971636\",\"dweb:/ipfs/QmS1YAzhYLCi9oDtZN33mwBf5iExdwMhPNcnzh5nA8fPKX\"]},\"src/lib/V2DutchOrderLib.sol\":{\"keccak256\":\"0x513f3ccd5924d671ff4a8801e0f2481f52b0def06347e2448a1a2f1346ed99d3\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c777808d9f6edc1eb04d489cf402c4e8203c8a0fbf47b023192b105f1e9a2a72\",\"dweb:/ipfs/QmQxoNZiwJcADeFVoGvM5ckCBrZoURAFncGBBA1Wfb6zTd\"]},\"src/reactors/BaseReactor.sol\":{\"keccak256\":\"0xd31b25dd7209a704fb17865e8112bc83a72e1816bc1d636c89366b2f1e3c4210\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f10c83e80f01d728f48aa06905e272eef776159ea83b53885c182da15597e3ca\",\"dweb:/ipfs/Qmf2nx9abWsTMCVBV1At66HS3FVTXHreUVCpwVDKjkYadY\"]},\"src/reactors/V2DutchOrderReactor.sol\":{\"keccak256\":\"0x36b2677685d6673d39036e1750866c918c754e5e9cd8672ca8bb1159a7522a73\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ae71cbf90cf3b8758ca1b9ae0d4f600473711ab0951bf279d5e5d9b61d76f649\",\"dweb:/ipfs/QmRChvpbAnxBTZnJdTmQ1nxQmE4LDMQLeW4C1tN1CUo6NA\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IPermit2","name":"_permit2","type":"address"},{"internalType":"address","name":"_protocolFeeOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"DeadlineBeforeEndTime"},{"inputs":[{"internalType":"address","name":"duplicateToken","type":"address"}],"type":"error","name":"DuplicateFeeOutput"},{"inputs":[],"type":"error","name":"EndTimeBeforeStartTime"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"type":"error","name":"FeeTooLarge"},{"inputs":[],"type":"error","name":"IncorrectAmounts"},{"inputs":[],"type":"error","name":"InputAndOutputFees"},{"inputs":[],"type":"error","name":"InvalidCosignature"},{"inputs":[],"type":"error","name":"InvalidCosignerInput"},{"inputs":[],"type":"error","name":"InvalidCosignerOutput"},{"inputs":[{"internalType":"address","name":"feeToken","type":"address"}],"type":"error","name":"InvalidFeeToken"},{"inputs":[],"type":"error","name":"InvalidReactor"},{"inputs":[],"type":"error","name":"NativeTransferFailed"},{"inputs":[],"type":"error","name":"NoExclusiveOverride"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32","indexed":true},{"internalType":"address","name":"filler","type":"address","indexed":true},{"internalType":"address","name":"swapper","type":"address","indexed":true},{"internalType":"uint256","name":"nonce","type":"uint256","indexed":false}],"type":"event","name":"Fill","anonymous":false},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"oldFeeController","type":"address","indexed":false},{"internalType":"address","name":"newFeeController","type":"address","indexed":false}],"type":"event","name":"ProtocolFeeControllerSet","anonymous":false},{"inputs":[{"internalType":"struct SignedOrder","name":"order","type":"tuple","components":[{"internalType":"bytes","name":"order","type":"bytes"},{"internalType":"bytes","name":"sig","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"execute"},{"inputs":[{"internalType":"struct SignedOrder[]","name":"orders","type":"tuple[]","components":[{"internalType":"bytes","name":"order","type":"bytes"},{"internalType":"bytes","name":"sig","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"executeBatch"},{"inputs":[{"internalType":"struct SignedOrder[]","name":"orders","type":"tuple[]","components":[{"internalType":"bytes","name":"order","type":"bytes"},{"internalType":"bytes","name":"sig","type":"bytes"}]},{"internalType":"bytes","name":"callbackData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"executeBatchWithCallback"},{"inputs":[{"internalType":"struct SignedOrder","name":"order","type":"tuple","components":[{"internalType":"bytes","name":"order","type":"bytes"},{"internalType":"bytes","name":"sig","type":"bytes"}]},{"internalType":"bytes","name":"callbackData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"executeWithCallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"feeController","outputs":[{"internalType":"contract IProtocolFeeController","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"permit2","outputs":[{"internalType":"contract IPermit2","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_newFeeController","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setProtocolFeeController"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"execute((bytes,bytes))":{"params":{"order":"The order definition and valid signature to execute"}},"executeBatch((bytes,bytes)[])":{"params":{"orders":"The order definitions and valid signatures to execute"}},"executeBatchWithCallback((bytes,bytes)[],bytes)":{"params":{"callbackData":"The callbackData to pass to the callback","orders":"The order definitions and valid signatures to execute"}},"executeWithCallback((bytes,bytes),bytes)":{"params":{"callbackData":"The callbackData to pass to the callback","order":"The order definition and valid signature to execute"}},"setProtocolFeeController(address)":{"details":"only callable by the owner","params":{"_newFeeController":"the new fee controller"}}},"version":1},"userdoc":{"kind":"user","methods":{"execute((bytes,bytes))":{"notice":"Execute a single order"},"executeBatch((bytes,bytes)[])":{"notice":"Execute the given orders at once"},"executeBatchWithCallback((bytes,bytes)[],bytes)":{"notice":"Execute the given orders at once using a callback with the given callback data"},"executeWithCallback((bytes,bytes),bytes)":{"notice":"Execute a single order using the given callback data"},"permit2()":{"notice":"permit2 address used for token transfers and signature verification"},"setProtocolFeeController(address)":{"notice":"sets the protocol fee controller"}},"version":1}},"settings":{"remappings":["ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-gas-snapshot/=lib/forge-gas-snapshot/src/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","permit2/=lib/permit2/","solarray/=lib/solarray/src/","solmate/=lib/solmate/"],"optimizer":{"enabled":true,"runs":1000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/reactors/V2DutchOrderReactor.sol":"V2DutchOrderReactor"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/security/ReentrancyGuard.sol":{"keccak256":"0xa535a5df777d44e945dd24aa43a11e44b024140fc340ad0dfe42acf4002aade1","urls":["bzz-raw://41319e7f621f2dc3733511332c4fd032f8e32ad2aa7fd6f665c19741d9941a34","dweb:/ipfs/QmcYR3bd862GD1Bc7jwrU9bGxrhUu5na1oP964bDCu2id1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad","urls":["bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278","dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH"],"license":"MIT"},"lib/permit2/src/interfaces/IAllowanceTransfer.sol":{"keccak256":"0x78931704a7f1d89ef24244b155863abb751cc3b3818f64303ccb47a396d48dcb","urls":["bzz-raw://b8d6e198ee29d809564f1c1d7caa11a2c329bb5d051f61210548e546493444d2","dweb:/ipfs/QmVxWftbgETjudymgLdwF77S54DWrp6qB5ooauKXW81cm7"],"license":"MIT"},"lib/permit2/src/interfaces/IEIP712.sol":{"keccak256":"0xea70db68ce450ad38dfbd490058595441144808eb95272ae9b89e3fbe6456954","urls":["bzz-raw://e8fad9ff319665acdc2f1295bb82db3e5b4d52babc0b58f147dbdbb9f322c6e5","dweb:/ipfs/QmTbYJPcux8eJ3qGVYQh6TiwCA2FPu6HXTUg6QFTnX91Ks"],"license":"MIT"},"lib/permit2/src/interfaces/IPermit2.sol":{"keccak256":"0xaa631cc9f53e699301d94233007110a345e6779011def484e8dd97b8fe0af771","urls":["bzz-raw://fc0502cf19c9c18f320a3001201e89e350393b75837f6b7971de18b2de06f30d","dweb:/ipfs/QmT9SfhdJ7VJNNrf94g4H5usyi7ShqWGx7Cqsz9jZTjX96"],"license":"MIT"},"lib/permit2/src/interfaces/ISignatureTransfer.sol":{"keccak256":"0x6805563eaad92471fa1b3591a71d7020a93e59f1a4ac95398daf74927f5bd033","urls":["bzz-raw://48cd13806cb8e82dcc38eb93423a372fbdd3b05364ecebb8bfd9cd29078dd90c","dweb:/ipfs/QmeLyFVrzKRHcm6aaFFBCG5mFESCqWLp1KYT41H8XhzMCp"],"license":"MIT"},"lib/solmate/src/auth/Owned.sol":{"keccak256":"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea","urls":["bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4","dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx"],"license":"AGPL-3.0-only"},"lib/solmate/src/tokens/ERC20.sol":{"keccak256":"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10","urls":["bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35","dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97"],"license":"AGPL-3.0-only"},"lib/solmate/src/utils/FixedPointMathLib.sol":{"keccak256":"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843","urls":["bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9","dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi"],"license":"AGPL-3.0-only"},"lib/solmate/src/utils/SafeTransferLib.sol":{"keccak256":"0x6ab948013c2c7ca6351e593600425b0ec6df9035320280c678e735bce16e996b","urls":["bzz-raw://2ab977d0eeb2bf458f9798250215c646d2f3b1f90b5a7e2b506fdf3335c0f060","dweb:/ipfs/QmYPRoPhNtBAmCSq7imN1scMVpKNQvMTpoqab3tXUx5Tnv"],"license":"AGPL-3.0-only"},"src/base/ProtocolFees.sol":{"keccak256":"0x1152eee4ac698694bcdbf90b016411112d679812ca0abc1cacd7e6b465e6729a","urls":["bzz-raw://c1be6b94c6268b68362111e728598e7c1517b20998fdf6752d08e32d55c210f8","dweb:/ipfs/QmStQC274cQqnQSo3QDBcT5BdqEkpwZwFaWwxaYXMZidvw"],"license":"GPL-2.0-or-later"},"src/base/ReactorEvents.sol":{"keccak256":"0x61df7aa3ef970f1305c5a6d8c68b0d7ab8bebb9b7518e191c8d2fda532859f61","urls":["bzz-raw://93db11be28b3394485b57a7b120ca224fdb93b471db8468738406f77ebaa13fc","dweb:/ipfs/Qmci4TSUH81C3WDV7TMv56VmiUFZ9MDxZcGTRKhhEPS6gC"],"license":"GPL-2.0-or-later"},"src/base/ReactorStructs.sol":{"keccak256":"0x78e6db322ca69aaf552e59d5e74a00fd465a802388c2d03f9bf4b711f5704588","urls":["bzz-raw://12d8fc82c3543bfe0d2cd44cdbc524bed1f074abafe086f7e58573cbaff2a74e","dweb:/ipfs/QmREbamTn3nz89nEjv2uWHNHKSF6Yga2gQ688Cde89xcNT"],"license":"GPL-2.0-or-later"},"src/interfaces/IProtocolFeeController.sol":{"keccak256":"0x21a895ff5b778abf95753001a20b4004adfadd1bba622eaec18eb81836ede86c","urls":["bzz-raw://67f9eae1da9f238f6630247882e382458dcc0135c0a4837b99a44a2360a3845c","dweb:/ipfs/QmdJyKhVyD6nAtgdTofaU2xaoWrPGM1Q6Sd7FiN2LxXZQx"],"license":"GPL-2.0-or-later"},"src/interfaces/IReactor.sol":{"keccak256":"0x23714e546bbeeaa7fe35665d7241319c964421a9fe6d81aead4b85027cabf1e1","urls":["bzz-raw://3b94402a2e90f75d6238d4460c0b1125bf67b98523803156b104ce57cafdd05b","dweb:/ipfs/QmbY3Mr44MPEMAe9bh9tUSqpPg3AAKfkVfydwJCEzFA14a"],"license":"GPL-2.0-or-later"},"src/interfaces/IReactorCallback.sol":{"keccak256":"0xf3ee1fe09545fc5be000c33bb6779e897b4e5013bd9de3e7c3107bf466b4dfa1","urls":["bzz-raw://12d7fd1ac3dca76614796f0d012ea4de79bf09cf124cc74efffdf25a56756344","dweb:/ipfs/QmXyeSrG7caihgzUZdPdPbbRj6v1w65gBnfn9a7HhbVJX9"],"license":"GPL-2.0-or-later"},"src/interfaces/IValidationCallback.sol":{"keccak256":"0xc31e3a60e210e9a4089f48ba4fae06dec6f4d33da4fbe415cfb8cdc202003bae","urls":["bzz-raw://ee145d5fc0e0806dc9db57825142d5d7c3eafc248a27ee301ffd13592f2cda34","dweb:/ipfs/QmQr2HBHZKiUu88a3M1Hs4QSjFemsZmPEd115QG6GKjsC1"],"license":"GPL-2.0-or-later"},"src/lib/CurrencyLibrary.sol":{"keccak256":"0x73688c07cd36b5040e0deca3dd1f21a8b19585d6cdfefb816fae98af92a545ea","urls":["bzz-raw://750375d6f0e59f7977b9cfc2cf05fef7b356cea7875fbb71b0ca359d091b8479","dweb:/ipfs/QmZbdTSS1BxWqAHjmtwoJsggbRVkwnxynJuaxzKkkakm4Y"],"license":"GPL-2.0-or-later"},"src/lib/DutchDecayLib.sol":{"keccak256":"0x40df504e1791a670bfc14af79bc8fc1600435e3b43c6734a9a92ed7b780d01fc","urls":["bzz-raw://6547e03b07140af7a5a61176bf47f1dd5bd37c34d759726fc82e5c8e14d48c8e","dweb:/ipfs/QmZhkeGrKNbmv2avMgkUPjyRbPE9AbzrzPMNsGFh1kUNbe"],"license":"GPL-2.0-or-later"},"src/lib/DutchOrderLib.sol":{"keccak256":"0xdd6b9bffcc044899fac52e1e9cbe4becc7a40b56d912695e80600224367235e6","urls":["bzz-raw://78c08ec074bc21ce610f2e0c3594b383e0cd2301c32239146a771e2e5d2cb975","dweb:/ipfs/QmbMQwT9k3RWyTdihqqnu3RDiRCz1XmpMUVwxeyWzChKB5"],"license":"GPL-2.0-or-later"},"src/lib/ExclusivityLib.sol":{"keccak256":"0x3a0b93c182c269a00b2fdedf22a65af1e8a4cbb436986cffec2f5cc4acff8401","urls":["bzz-raw://a1cfcba8b7b4fdddc385e1c2dbe9fcc8ecff9d0d6e2d82332238bb0aa7505e5a","dweb:/ipfs/QmXBfqnN8V2dMdcFyHMjXxJLWL5yAWoEtanKnHqFcmeLv5"],"license":"GPL-2.0-or-later"},"src/lib/OrderInfoLib.sol":{"keccak256":"0x38672b528e63dc53f36ed82d0037110a9f5893ad0a3957e24f19fa3fdbd80015","urls":["bzz-raw://147172dbebf4bb579bc392f25666645719264c0b47378f7fc4f3a95c79bdf5a4","dweb:/ipfs/Qmd5wVnQ8rKHHQgUQzEDcAPiqrVzmNr9t2D7d1SqUg9hTo"],"license":"GPL-2.0-or-later"},"src/lib/Permit2Lib.sol":{"keccak256":"0xcb5e1e204f4ac6ea3fa164b8be1b1d31cbad0dff981072ea2c33abd720369e78","urls":["bzz-raw://cfa162286525ef8684112639c7b981c0472b06ce799f2440c626a70c273bb533","dweb:/ipfs/QmV1Uy4oodhg4SbCajv9xhiWFuwtU1YcTTvca1cDYCkND9"],"license":"GPL-2.0-or-later"},"src/lib/ResolvedOrderLib.sol":{"keccak256":"0xc56a31e72001e3e6ee0baf193423a7563cc61ba4869133e1cae5cf998bfe4d96","urls":["bzz-raw://4bddef26f26939f48923b11674495515d792cffbb2dc04f092212ff0b9971636","dweb:/ipfs/QmS1YAzhYLCi9oDtZN33mwBf5iExdwMhPNcnzh5nA8fPKX"],"license":"GPL-2.0-or-later"},"src/lib/V2DutchOrderLib.sol":{"keccak256":"0x513f3ccd5924d671ff4a8801e0f2481f52b0def06347e2448a1a2f1346ed99d3","urls":["bzz-raw://c777808d9f6edc1eb04d489cf402c4e8203c8a0fbf47b023192b105f1e9a2a72","dweb:/ipfs/QmQxoNZiwJcADeFVoGvM5ckCBrZoURAFncGBBA1Wfb6zTd"],"license":"GPL-2.0-or-later"},"src/reactors/BaseReactor.sol":{"keccak256":"0xd31b25dd7209a704fb17865e8112bc83a72e1816bc1d636c89366b2f1e3c4210","urls":["bzz-raw://f10c83e80f01d728f48aa06905e272eef776159ea83b53885c182da15597e3ca","dweb:/ipfs/Qmf2nx9abWsTMCVBV1At66HS3FVTXHreUVCpwVDKjkYadY"],"license":"GPL-2.0-or-later"},"src/reactors/V2DutchOrderReactor.sol":{"keccak256":"0x36b2677685d6673d39036e1750866c918c754e5e9cd8672ca8bb1159a7522a73","urls":["bzz-raw://ae71cbf90cf3b8758ca1b9ae0d4f600473711ab0951bf279d5e5d9b61d76f649","dweb:/ipfs/QmRChvpbAnxBTZnJdTmQ1nxQmE4LDMQLeW4C1tN1CUo6NA"],"license":"GPL-2.0-or-later"}},"version":1},"id":66} \ No newline at end of file diff --git a/sdks/uniswapx-sdk/src/contracts/factories/V2DutchOrderReactor__factory.ts b/sdks/uniswapx-sdk/src/contracts/factories/V2DutchOrderReactor__factory.ts index 6ed23d1ad..c64745b7b 100644 --- a/sdks/uniswapx-sdk/src/contracts/factories/V2DutchOrderReactor__factory.ts +++ b/sdks/uniswapx-sdk/src/contracts/factories/V2DutchOrderReactor__factory.ts @@ -323,12 +323,7 @@ const _abi = [ }, { type: "error", - name: "InputAndOutputDecay", - inputs: [], - }, - { - type: "error", - name: "InsufficientEth", + name: "InputAndOutputFees", inputs: [], }, { @@ -375,7 +370,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040523480156200001157600080fd5b5060405162003524380380620035248339810160408190526200003491620000b8565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f79050565b6001600160a01b0381168114620000b557600080fd5b50565b60008060408385031215620000cc57600080fd5b8251620000d9816200009f565b6020840151909250620000ec816200009f565b809150509250929050565b60805161340b620001196000396000818160e00152611b61015261340b6000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b4366004612476565b6101eb565b005b6100b96100c9366004612524565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b9610139366004612566565b6104c5565b34801561014a57600080fd5b506100b9610159366004612604565b610683565b6100b961016c366004612628565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e6366004612604565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c561268c565b60200260200101819052506102d981610b6d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da628906103199084908790879060040161288e565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610bbe565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff8111156103885761038861265d565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d8585838181106104665761046661268c565b90506020028101906104789190612954565b6109f6565b82828151811061048f5761048f61268c565b6020908102919091010152600101610449565b506104ac81610b6d565b6104b581610bbe565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e961265d565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c78787838181106104665761046661268c565b8282815181106105d9576105d961268c565b60209081029190910101526001016105aa565b506105f681610b6d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da628906106369084908890889060040161288e565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610bbe565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b816000815181106108695761086961268c565b602002602001018190525061087d81610b6d565b61088681610bbe565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f8380612992565b810190610a7c9190612dd1565b90506000610a8982610d11565b9050610a958183610f43565b610a9e82611227565b6040805160a081018252835181526080840151805160209182015193860151929391840192610acf92909190611392565b81526080840151805160209182015160608701519290930192610af3929190611464565b8152602001858060200190610b089190612992565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001829052608083015160408101518151606090920151929550610b669286929061154b565b5050919050565b805160005b8181101561035f576000838281518110610b8e57610b8e61268c565b60200260200101519050610ba1816115ec565b610bab8133611a66565b610bb58133611b5f565b50600101610b72565b805160005b81811015610d00576000838281518110610bdf57610bdf61268c565b602002602001015190506000816040015151905060005b81811015610c6057600083604001518281518110610c1657610c1661268c565b60200260200101519050610c5781604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611ea19092919063ffffffff16565b50600101610bf6565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610ca957610ca961268c565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610cee91815260200190565b60405180910390a45050600101610bc3565b5047156104c1576104c13347611ee8565b6040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260009060b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181526080830190915260528083529091906132c960208301396040518060c00160405280608d8152602001613349608d9139604051602001610e9193929190612ece565b60405160208183030381529060405280519060200120610eb48360000151611f82565b6020808501516040808701518051938101519101516060880151929392610eda9061201c565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff938416606087015292909116608085015260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b6080810151602001518151606001511015610f8a576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6080810151805160209091015111610fce576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808260a00151806020019051810190610fe99190612f11565b9150915060008360a001516040815181106110065761100661268c565b602001015160f81c60f81b60f81c9050600060018686608001516040516020016110309190612f35565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261106c9291602001612fc5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600084529083018083525260ff851690820152606081018690526080810185905260a0016020604051602081039080840390855afa1580156110e8573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff1614158015611149575073ffffffffffffffffffffffffffffffffffffffff811615155b15611180576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8460400151604001518560400151602001511461121f5760005b85606001515181101561121d576000866060015182815181106111bf576111bf61268c565b60200260200101519050806040015181602001511461120a576040517fd303758b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50806112158161301a565b91505061119a565b505b505050505050565b60808082015101511561129057806040015160200151816080015160800151111561127e576040517fac9143e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808082015101516040820151602001525b806060015151816080015160a0015151146112d7576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8160600151518110156104c1576000826060015182815181106112ff576112ff61268c565b602002602001015190506000836080015160a0015183815181106113255761132561268c565b602002602001015190508060001461137d578160200151811015611375576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602082018190525b5050808061138a9061301a565b9150506112da565b6113cc6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b83604001518460200151111561140e576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006114248560200151866040015186866120ba565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff8111156114825761148261265d565b6040519080825280602002602001820160405280156114eb57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816114a05790505b50915060005b818110156115425761151d86828151811061150e5761150e61268c565b60200260200101518686612153565b83828151811061152f5761152f61268c565b60209081029190910101526001016114f1565b50509392505050565b6115558383612223565b61067d5780611590576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604084015160005b815181101561121f5760008282815181106115b5576115b561268c565b602002602001015190506115de846127106115d09190613052565b602083015190612710612270565b602090910152600101611598565b60015473ffffffffffffffffffffffffffffffffffffffff1661160c5750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611663908590600401613065565b600060405180830381865afa158015611680573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526116c69190810190613078565b60408301515181519192509060006116de8284613052565b67ffffffffffffffff8111156116f6576116f661265d565b60405190808252806020026020018201604052801561175f57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816117145790505b50905060005b838110156117b057856040015181815181106117835761178361268c565b602002602001015182828151811061179d5761179d61268c565b6020908102919091010152600101611765565b5060005b82811015611a575760008582815181106117d0576117d061268c565b6020026020010151905060005b8281101561188e578681815181106117f7576117f761268c565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036118865781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6001016117dd565b506000805b86811015611913576000896040015182815181106118b3576118b361268c565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361190a5760208101516119079084613052565b92505b50600101611893565b50815160208901515173ffffffffffffffffffffffffffffffffffffffff91821691160361195057602080890151015161194d9082613052565b90505b806000036119a55781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6119b3816005612710612270565b82602001511115611a26578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8184611a328589613052565b81518110611a4257611a4261268c565b602090810291909101015250506001016117b4565b50604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611ab7576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b90611b339084908690600401613148565b60006040518083038186803b158015611b4b57600080fd5b505afa15801561121f573d6000803e3d6000fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611c1f846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff86168252808701518101519082015285600001516020015186608001516040518060800160405280605281526020016132c9605291396040518060c00160405280608d8152602001613349608d91396040518060600160405280602e815260200161331b602e91396040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611e0694939291602001613177565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611e739695949392600401613200565b600060405180830381600087803b158015611e8d57600080fd5b505af115801561121f573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611ec65761035f8282611ee8565b61035f73ffffffffffffffffffffffffffffffffffffffff84163384846122ac565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611f42576040519150601f19603f3d011682016040523d82523d6000602084013e611f47565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d8152602001613349608d913980516020918201208351848301516040808701516060880151608089015160a08a01518051908901209351610f2698939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff81111561203c5761203c61265d565b6040519080825280601f01601f191660200182016040528015612066576020820181803683370190505b50905060005b83518110156120ab57600061209985838151811061208c5761208c61268c565b602002602001015161239e565b6020838102850101525060010161206c565b50805160209091012092915050565b60008282116120f5576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b42821161210357508261214b565b42831061211157508361214b565b42839003838303868610156121365761212d8688038383612270565b87039250612148565b6121438787038383612270565b870192505b50505b949350505050565b60408051606081018252600080825260208201819052918101919091528360400151846020015110156121b2576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006121c88560200151866040015186866120ba565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff8316158061224757508142115b80612267575073ffffffffffffffffffffffffffffffffffffffff831633145b90505b92915050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026122a557600080fd5b5091020490565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080612397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b5050505050565b60006040518060800160405280605281526020016132c960529139805160209182012083518483015160408087015160608801519151610f26969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b60006040828403121561242757600080fd5b50919050565b60008083601f84011261243f57600080fd5b50813567ffffffffffffffff81111561245757600080fd5b60208301915083602082850101111561246f57600080fd5b9250929050565b60008060006040848603121561248b57600080fd5b833567ffffffffffffffff808211156124a357600080fd5b6124af87838801612415565b945060208601359150808211156124c557600080fd5b506124d28682870161242d565b9497909650939450505050565b60008083601f8401126124f157600080fd5b50813567ffffffffffffffff81111561250957600080fd5b6020830191508360208260051b850101111561246f57600080fd5b6000806020838503121561253757600080fd5b823567ffffffffffffffff81111561254e57600080fd5b61255a858286016124df565b90969095509350505050565b6000806000806040858703121561257c57600080fd5b843567ffffffffffffffff8082111561259457600080fd5b6125a0888389016124df565b909650945060208701359150808211156125b957600080fd5b506125c68782880161242d565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356125ff816125d2565b919050565b60006020828403121561261657600080fd5b8135612621816125d2565b9392505050565b60006020828403121561263a57600080fd5b813567ffffffffffffffff81111561265157600080fd5b61214b84828501612415565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156126d65781810151838201526020016126be565b50506000910152565b600081518084526126f78160208601602086016126bb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600081518084526020808501945080840160005b83811015612788578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a015260409182015116908801526060909601959082019060010161273d565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526128076101a08501826126df565b905060208301516128456020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b506040830151848203608086015261285d8282612729565b915050606083015184820360a086015261287782826126df565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b83811015612903577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526128f1868351612793565b955093820193908201906001016128b7565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261298857600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126129c757600080fd5b83018035915067ffffffffffffffff8211156129e257600080fd5b60200191503681900382131561246f57600080fd5b60405160c0810167ffffffffffffffff81118282101715612a1a57612a1a61265d565b60405290565b6040516060810167ffffffffffffffff81118282101715612a1a57612a1a61265d565b6040516080810167ffffffffffffffff81118282101715612a1a57612a1a61265d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612aad57612aad61265d565b604052919050565b600082601f830112612ac657600080fd5b813567ffffffffffffffff811115612ae057612ae061265d565b612b1160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612a66565b818152846020838601011115612b2657600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612b5557600080fd5b612b5d6129f7565b90508135612b6a816125d2565b81526020820135612b7a816125d2565b8060208301525060408201356040820152606082013560608201526080820135612ba3816125d2565b608082015260a082013567ffffffffffffffff811115612bc257600080fd5b612bce84828501612ab5565b60a08301525092915050565b600060608284031215612bec57600080fd5b612bf4612a20565b90508135612c01816125d2565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612c3957612c3961265d565b5060051b60200190565b600082601f830112612c5457600080fd5b81356020612c69612c6483612c1f565b612a66565b82815260079290921b84018101918181019086841115612c8857600080fd5b8286015b84811015612ced5760808189031215612ca55760008081fd5b612cad612a43565b8135612cb8816125d2565b8152818501358582015260408083013590820152606080830135612cdb816125d2565b90820152835291830191608001612c8c565b509695505050505050565b600060c08284031215612d0a57600080fd5b612d126129f7565b905081358152602080830135818301526040830135612d30816125d2565b80604084015250606083013560608301526080830135608083015260a083013567ffffffffffffffff811115612d6557600080fd5b8301601f81018513612d7657600080fd5b8035612d84612c6482612c1f565b81815260059190911b82018301908381019087831115612da357600080fd5b928401925b82841015612dc157833582529284019290840190612da8565b60a0860152509295945050505050565b600060208284031215612de357600080fd5b813567ffffffffffffffff80821115612dfb57600080fd5b908301906101008286031215612e1057600080fd5b612e186129f7565b823582811115612e2757600080fd5b612e3387828601612b43565b825250612e42602084016125f4565b6020820152612e548660408501612bda565b604082015260a083013582811115612e6b57600080fd5b612e7787828601612c43565b60608301525060c083013582811115612e8f57600080fd5b612e9b87828601612cf8565b60808301525060e083013582811115612eb357600080fd5b612ebf87828601612ab5565b60a08301525095945050505050565b60008451612ee08184602089016126bb565b845190830190612ef48183602089016126bb565b8451910190612f078183602088016126bb565b0195945050505050565b60008060408385031215612f2457600080fd5b505080516020909101519092909150565b6000602080835260e0830184518285015281850151604085015273ffffffffffffffffffffffffffffffffffffffff604086015116606085015260608501516080850152608085015160a085015260a085015160c080860152818151808452610100870191508483019350600092505b80831015612ced5783518252928401926001929092019190840190612fa5565b82815260008251612fdd8160208501602087016126bb565b919091016020019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361304b5761304b612feb565b5060010190565b8082018082111561226a5761226a612feb565b6020815260006122676020830184612793565b6000602080838503121561308b57600080fd5b825167ffffffffffffffff8111156130a257600080fd5b8301601f810185136130b357600080fd5b80516130c1612c6482612c1f565b818152606091820283018401918482019190888411156130e057600080fd5b938501935b8385101561313c5780858a0312156130fd5760008081fd5b613105612a20565b8551613110816125d2565b81528587015187820152604080870151613129816125d2565b90820152835293840193918501916130e5565b50979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061214b6040830184612793565b7f563244757463684f72646572207769746e6573732900000000000000000000008152600085516131af816015850160208a016126bb565b8551908301906131c6816015840160208a016126bb565b85519101906131dc8160158401602089016126bb565b84519101906131f28160158401602088016126bb565b016015019695505050505050565b6000610140613230838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526132716080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e0840152806101008401526132a6818401866126df565b90508281036101208401526132bb81856126df565b999850505050505050505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a26469706673582212208f5ca0756750ceaf422af83c2939e746254af6aae2235a7a02c1911b9aa1739664736f6c63430008130033"; + "0x60a06040523480156200001157600080fd5b50604051620034bd380380620034bd8339810160408190526200003491620000b8565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f79050565b6001600160a01b0381168114620000b557600080fd5b50565b60008060408385031215620000cc57600080fd5b8251620000d9816200009f565b6020840151909250620000ec816200009f565b809150509250929050565b6080516133a4620001196000396000818160e00152611ae701526133a46000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b436600461244e565b6101eb565b005b6100b96100c93660046124fc565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b961013936600461253e565b6104c5565b34801561014a57600080fd5b506100b96101593660046125dc565b610683565b6100b961016c366004612600565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e63660046125dc565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c5612664565b60200260200101819052506102d981610b6d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061031990849087908790600401612867565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610bbe565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff81111561038857610388612635565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d85858381811061046657610466612664565b9050602002810190610478919061292d565b6109f6565b82828151811061048f5761048f612664565b6020908102919091010152600101610449565b506104ac81610b6d565b6104b581610bbe565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e9612635565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c787878381811061046657610466612664565b8282815181106105d9576105d9612664565b60209081029190910101526001016105aa565b506105f681610b6d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061063690849088908890600401612867565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610bbe565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b8160008151811061086957610869612664565b602002602001018190525061087d81610b6d565b61088681610bbe565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f838061296b565b810190610a7c9190612daa565b90506000610a8982610d11565b9050610a958183610f43565b610a9e82611142565b6040805160a081018252835181526080840151805160209182015193860151929391840192610acf929091906112a2565b81526080840151805160209182015160608701519290930192610af3929190611374565b8152602001858060200190610b08919061296b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001829052608083015160408101518151606090920151929550610b669286929061145b565b5050919050565b805160005b8181101561035f576000838281518110610b8e57610b8e612664565b60200260200101519050610ba1816114fc565b610bab81336119ec565b610bb58133611ae5565b50600101610b72565b805160005b81811015610d00576000838281518110610bdf57610bdf612664565b602002602001015190506000816040015151905060005b81811015610c6057600083604001518281518110610c1657610c16612664565b60200260200101519050610c5781604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611e279092919063ffffffff16565b50600101610bf6565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610ca957610ca9612664565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610cee91815260200190565b60405180910390a45050600101610bc3565b5047156104c1576104c13347611e6e565b6040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260009060b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260808301909152605280835290919061326260208301396040518060c00160405280608d81526020016132e2608d9139604051602001610e9193929190612ea7565b60405160208183030381529060405280519060200120610eb48360000151611f08565b6020808501516040808701518051938101519101516060880151929392610eda90611fa2565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff938416606087015292909116608085015260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b6080810151602001518151606001511015610f8a576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808260a00151806020019051810190610fa59190612eea565b9150915060008360a00151604081518110610fc257610fc2612664565b602001015160f81c60f81b60f81c905060006001868660800151604051602001610fec9190612f0e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526110289291602001612f9e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600084529083018083525260ff851690820152606081018690526080810185905260a0016020604051602081039080840390855afa1580156110a4573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff16141580611103575073ffffffffffffffffffffffffffffffffffffffff8116155b1561113a576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6080808201510151156111ab578060400151602001518160800151608001511115611199576040517fac9143e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808082015101516040820151602001525b806060015151816080015160a0015151146111f2576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8160600151518110156104c15760008260600151828151811061121a5761121a612664565b602002602001015190506000836080015160a00151838151811061124057611240612664565b6020026020010151905080600014611298578160200151811015611290576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602082018190525b50506001016111f5565b6112dc6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b83604001518460200151111561131e576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611334856020015186604001518686612040565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff81111561139257611392612635565b6040519080825280602002602001820160405280156113fb57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113b05790505b50915060005b818110156114525761142d86828151811061141e5761141e612664565b602002602001015186866120e7565b83828151811061143f5761143f612664565b6020908102919091010152600101611401565b50509392505050565b61146583836121b7565b61067d57806114a0576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604084015160005b815181101561113a5760008282815181106114c5576114c5612664565b602002602001015190506114ee846127106114e09190612fc4565b602083015190612710612204565b6020909101526001016114a8565b60015473ffffffffffffffffffffffffffffffffffffffff1661151c5750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611573908590600401612ffe565b600060405180830381865afa158015611590573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526115d69190810190613011565b60408301515181519192509060006115ee8284612fc4565b67ffffffffffffffff81111561160657611606612635565b60405190808252806020026020018201604052801561166f57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116245790505b50905060005b838110156116c0578560400151818151811061169357611693612664565b60200260200101518282815181106116ad576116ad612664565b6020908102919091010152600101611675565b5060008060005b848110156119db5760008782815181106116e3576116e3612664565b6020026020010151905060005b828110156117a15788818151811061170a5761170a612664565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036117995781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6001016116f0565b506000805b888110156118625760008b6040015182815181106117c6576117c6612664565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1603611859578515611843576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516118529084612fc4565b9250600196505b506001016117a6565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036118db5784156118c2576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516118d49082612fc4565b9050600193505b806000036119305781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b61193e816005612710612248565b826020015111156119b1578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a01815181106119c6576119c6612664565b602090810291909101015250506001016116c7565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611a3d576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b90611ab990849086906004016130e1565b60006040518083038186803b158015611ad157600080fd5b505afa15801561113a573d6000803e3d6000fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611ba5846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8616825280870151810151908201528560000151602001518660800151604051806080016040528060528152602001613262605291396040518060c00160405280608d81526020016132e2608d91396040518060600160405280602e81526020016132b4602e91396040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611d8c94939291602001613110565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611df99695949392600401613199565b600060405180830381600087803b158015611e1357600080fd5b505af115801561113a573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611e4c5761035f8282611e6e565b61035f73ffffffffffffffffffffffffffffffffffffffff8416338484612284565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611ec8576040519150601f19603f3d011682016040523d82523d6000602084013e611ecd565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d81526020016132e2608d913980516020918201208351848301516040808701516060880151608089015160a08a01518051908901209351610f2698939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff811115611fc257611fc2612635565b6040519080825280601f01601f191660200182016040528015611fec576020820181803683370190505b50905060005b835181101561203157600061201f85838151811061201257612012612664565b6020026020010151612376565b60208381028501015250600101611ff2565b50805160209091012092915050565b60008385036120505750836120df565b828211612089576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b4282116120975750826120df565b4283106120a55750836120df565b42839003838303868610156120ca576120c18688038383612248565b870392506120dc565b6120d78787038383612204565b870192505b50505b949350505050565b6040805160608101825260008082526020820181905291810191909152836040015184602001511015612146576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061215c856020015186604001518686612040565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff831615806121db57508142115b806121fb575073ffffffffffffffffffffffffffffffffffffffff831633145b90505b92915050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261223957600080fd5b50910281810615159190040190565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261227d57600080fd5b5091020490565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d116001600051141617169150508061236f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b5050505050565b600060405180608001604052806052815260200161326260529139805160209182012083518483015160408087015160608801519151610f26969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b6000604082840312156123ff57600080fd5b50919050565b60008083601f84011261241757600080fd5b50813567ffffffffffffffff81111561242f57600080fd5b60208301915083602082850101111561244757600080fd5b9250929050565b60008060006040848603121561246357600080fd5b833567ffffffffffffffff8082111561247b57600080fd5b612487878388016123ed565b9450602086013591508082111561249d57600080fd5b506124aa86828701612405565b9497909650939450505050565b60008083601f8401126124c957600080fd5b50813567ffffffffffffffff8111156124e157600080fd5b6020830191508360208260051b850101111561244757600080fd5b6000806020838503121561250f57600080fd5b823567ffffffffffffffff81111561252657600080fd5b612532858286016124b7565b90969095509350505050565b6000806000806040858703121561255457600080fd5b843567ffffffffffffffff8082111561256c57600080fd5b612578888389016124b7565b9096509450602087013591508082111561259157600080fd5b5061259e87828801612405565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356125d7816125aa565b919050565b6000602082840312156125ee57600080fd5b81356125f9816125aa565b9392505050565b60006020828403121561261257600080fd5b813567ffffffffffffffff81111561262957600080fd5b6120df848285016123ed565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156126ae578181015183820152602001612696565b50506000910152565b600081518084526126cf816020860160208601612693565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b83811015612761578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612716565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526127e06101a08501826126b7565b9050602083015161281e6020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b50604083015184820360808601526128368282612701565b915050606083015184820360a086015261285082826126b7565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b838110156128dc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526128ca86835161276c565b95509382019390820190600101612890565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261296157600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126129a057600080fd5b83018035915067ffffffffffffffff8211156129bb57600080fd5b60200191503681900382131561244757600080fd5b60405160c0810167ffffffffffffffff811182821017156129f3576129f3612635565b60405290565b6040516060810167ffffffffffffffff811182821017156129f3576129f3612635565b6040516080810167ffffffffffffffff811182821017156129f3576129f3612635565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612a8657612a86612635565b604052919050565b600082601f830112612a9f57600080fd5b813567ffffffffffffffff811115612ab957612ab9612635565b612aea60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612a3f565b818152846020838601011115612aff57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612b2e57600080fd5b612b366129d0565b90508135612b43816125aa565b81526020820135612b53816125aa565b8060208301525060408201356040820152606082013560608201526080820135612b7c816125aa565b608082015260a082013567ffffffffffffffff811115612b9b57600080fd5b612ba784828501612a8e565b60a08301525092915050565b600060608284031215612bc557600080fd5b612bcd6129f9565b90508135612bda816125aa565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612c1257612c12612635565b5060051b60200190565b600082601f830112612c2d57600080fd5b81356020612c42612c3d83612bf8565b612a3f565b82815260079290921b84018101918181019086841115612c6157600080fd5b8286015b84811015612cc65760808189031215612c7e5760008081fd5b612c86612a1c565b8135612c91816125aa565b8152818501358582015260408083013590820152606080830135612cb4816125aa565b90820152835291830191608001612c65565b509695505050505050565b600060c08284031215612ce357600080fd5b612ceb6129d0565b905081358152602080830135818301526040830135612d09816125aa565b80604084015250606083013560608301526080830135608083015260a083013567ffffffffffffffff811115612d3e57600080fd5b8301601f81018513612d4f57600080fd5b8035612d5d612c3d82612bf8565b81815260059190911b82018301908381019087831115612d7c57600080fd5b928401925b82841015612d9a57833582529284019290840190612d81565b60a0860152509295945050505050565b600060208284031215612dbc57600080fd5b813567ffffffffffffffff80821115612dd457600080fd5b908301906101008286031215612de957600080fd5b612df16129d0565b823582811115612e0057600080fd5b612e0c87828601612b1c565b825250612e1b602084016125cc565b6020820152612e2d8660408501612bb3565b604082015260a083013582811115612e4457600080fd5b612e5087828601612c1c565b60608301525060c083013582811115612e6857600080fd5b612e7487828601612cd1565b60808301525060e083013582811115612e8c57600080fd5b612e9887828601612a8e565b60a08301525095945050505050565b60008451612eb9818460208901612693565b845190830190612ecd818360208901612693565b8451910190612ee0818360208801612693565b0195945050505050565b60008060408385031215612efd57600080fd5b505080516020909101519092909150565b6000602080835260e0830184518285015281850151604085015273ffffffffffffffffffffffffffffffffffffffff604086015116606085015260608501516080850152608085015160a085015260a085015160c080860152818151808452610100870191508483019350600092505b80831015612cc65783518252928401926001929092019190840190612f7e565b82815260008251612fb6816020850160208701612693565b919091016020019392505050565b808201808211156121fe577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6020815260006121fb602083018461276c565b6000602080838503121561302457600080fd5b825167ffffffffffffffff81111561303b57600080fd5b8301601f8101851361304c57600080fd5b805161305a612c3d82612bf8565b8181526060918202830184019184820191908884111561307957600080fd5b938501935b838510156130d55780858a0312156130965760008081fd5b61309e6129f9565b85516130a9816125aa565b815285870151878201526040808701516130c2816125aa565b908201528352938401939185019161307e565b50979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006120df604083018461276c565b7f563244757463684f72646572207769746e657373290000000000000000000000815260008551613148816015850160208a01612693565b85519083019061315f816015840160208a01612693565b8551910190613175816015840160208901612693565b845191019061318b816015840160208801612693565b016015019695505050505050565b60006101406131c9838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b602089015160408401526040890151606084015261320a6080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e08401528061010084015261323f818401866126b7565b905082810361012084015261325481856126b7565b999850505050505050505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a264697066735822122035a25d9682571022740f8eb2bbffff059f7e63d59c89e57d9831ce550c37465a64736f6c63430008180033"; type V2DutchOrderReactorConstructorParams = | [signer?: Signer]