From 4b34efa50c6717475653ddfbe29c7b26a2091cde Mon Sep 17 00:00:00 2001 From: fahimahmedx Date: Thu, 13 Mar 2025 15:03:04 -0400 Subject: [PATCH 1/5] xen spam scenario --- scenarios/xen.toml | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 scenarios/xen.toml diff --git a/scenarios/xen.toml b/scenarios/xen.toml new file mode 100644 index 00000000..a15a9cd8 --- /dev/null +++ b/scenarios/xen.toml @@ -0,0 +1,35 @@ +[env] +burnRates_= "00000000000000000000000000000000000000000000000000000000000000c0" +tokenLimits_ = "00000000000000000000000000000000000000000000000000000000000001c0" +startBlockNumber_ = "0000000000000000000000000000000000000000000000000000000000000000" +forwarder_ = "0000000000000000000000000000000000000000000000000000000000000000" +royalty_Receiver_ = "000000000000000000000000c73fc08c931efe3fce850c09278472e8a81c2e05" +# XENTorrentArguments = "000000000000000000000000{XENCrypto}{burnRates_}{tokenLimits_}{startBlockNumber_}{forwarder_}{royalty_Receiver_}00000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cecb8f27f4200f3a0000000000000000000000000000000000000000000000019d971e4fe8401e740000000000000000000000000000000000000000000000033b2e3c9fd0803ce800000000000000000000000000000000000000000000000813f3978f8940984400000000000000000000000000000000000000000000001027e72f1f128130880000000000000000000000000000000000000000000000204fce5e3e25026110000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000017700000000000000000000000000000000000000000000000000000000000000bb800000000000000000000000000000000000000000000000000000000000003e80000000000000000000000000000000000000000000000000000000000000064" + +[[create]] +name = "XENCrypto" +from_pool = "admin" +bytecode = "0x608060405234801561001057600080fd5b50600436106102825760003560e01c80637e7aa62e116101585780637e7aa62e146104735780638979c87c1461047b5780638da7ad2314610483578063909a2ff6146104d857806395d89b41146104e0578063962ca496146104e857806399202454146104f05780639dc29fac146104f85780639ff054df1461050b578063a457c2d71461051e578063a9059cbb14610531578063b0fd1fc214610544578063b21d35f214610557578063b4800cdc14610560578063ba3ec74114610569578063bcfe394f1461035d578063c0c6525914610571578063c56f0bab14610579578063ce653d5f14610581578063dd62ed3e146105a1578063df282331146105b4578063e3af6d0a14610638578063e81917b41461065f578063ed2f236914610668578063f060482914610671578063f340faed14610679578063fed742691461068357600080fd5b80630237893214610287578063069612a5146102a357806306fdde03146102ac578063095ea7b3146102c15780630bfae56b146102e45780630f2e1228146102ec578063110d7fc2146102f457806316f9c8fd146102fc57806318160ddd146103375780631c2440821461033f5780631c560305146103485780631c6f212e1461035d57806323b872dd146103655780632a62d966146102f4578063313ce5671461037857806332870fda14610387578063395093511461038f5780633ccfd60b146103a257806345125715146103aa57806352c7f8dc146103b2578063543d36521461035d5780635bccb4c4146103ba57806361a52a36146103cd5780637010d7a1146103d757806370a082311461042f57806372475f94146104585780637b0472f014610460575b600080fd5b61029061016d81565b6040519081526020015b60405180910390f35b61029060085481565b6102b461068b565b60405161029a9190612419565b6102d46102cf366004612483565b61071d565b604051901515815260200161029a565b610290610737565b610290606381565b610290600081565b610304610748565b60405161029a91908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b600254610290565b61029060055481565b61035b610356366004612483565b6107b9565b005b610290600181565b6102d46103733660046124ad565b610a08565b6040516012815260200161029a565b610290605a81565b6102d461039d366004612483565b610a2c565b61035b610a4e565b610290610ba2565b61035b610bb1565b61035b6103c83660046124e9565b610cc2565b6102906201518081565b6103df610f64565b60405161029a919081516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a0918201519181019190915260c00190565b61029061043d36600461250b565b6001600160a01b031660009081526020819052604090205490565b610290600f81565b61035b61046e3660046124e9565b611009565b610290600281565b61029061117e565b6104b861049136600461250b565b600a6020526000908152604090208054600182015460028301546003909301549192909184565b60408051948552602085019390935291830152606082015260800161029a565b610290606481565b6102b4611188565b610290611197565b6102906111a1565b61035b610506366004612483565b6111ab565b61035b610519366004612526565b61135d565b6102d461052c366004612483565b6115d2565b6102d461053f366004612483565b61164d565b61029061055236600461253f565b61165b565b61029061138881565b61029060065481565b6102b46116ea565b610290611706565b610290600781565b61029061058f36600461250b565b600b6020526000908152604090205481565b6102906105af366004612571565b611715565b6106016105c236600461250b565b6009602052600090815260409020805460018201546002830154600384015460048501546005909501546001600160a01b039094169492939192909186565b604080516001600160a01b0390971687526020870195909552938501929092526060840152608083015260a082015260c00161029a565b6102907f0000000000000000000000000000000000000000000000000000000064e8eb0b81565b610290610bb881565b61029060075481565b610290611740565b610290620186a081565b610290601481565b60606003805461069a906125a4565b80601f01602080910402602001604051908101604052809291908181526020018280546106c6906125a4565b80156107135780601f106106e857610100808354040283529160200191610713565b820191906000526020600020905b8154815290600101906020018083116106f657829003601f168201915b5050505050905090565b60003361072b818585611759565b60019150505b92915050565b6107456201518060646125f4565b81565b6107736040518060800160405280600081526020016000815260200160008152602001600081525090565b50336000908152600a6020908152604091829020825160808101845281548152600182015492810192909252600281015492820192909252600390910154606082015290565b33600090815260096020908152604091829020825160c08101845281546001600160a01b03908116825260018301549382019390935260028201549381019390935260038101546060840152600481015460808401526005015460a083015283166108795760405162461bcd60e51b815260206004820152602560248201527f4352616e6b3a2043616e6e6f742073686172652077697468207a65726f206164604482015264647265737360d81b60648201526084015b60405180910390fd5b600082116108c95760405162461bcd60e51b815260206004820181905260248201527f4352616e6b3a2043616e6e6f74207368617265207a65726f2070657263656e746044820152606401610870565b606582106109195760405162461bcd60e51b815260206004820181905260248201527f4352616e6b3a2043616e6e6f74207368617265203130302b2070657263656e746044820152606401610870565b600081606001511161093d5760405162461bcd60e51b81526004016108709061260b565b806040015142116109605760405162461bcd60e51b81526004016108709061263a565b600061098382606001518360200151846040015185608001518660a0015161187e565b61099590670de0b6b3a76400006125f4565b9050600060646109a585846125f4565b6109af9190612685565b905060006109bd82846126a7565b90506109ca335b8261197c565b6109d4868361197c565b6109dc611a49565b60405183815233906000805160206127f8833981519152906020015b60405180910390a2505050505050565b600033610a16858285611a9d565b610a21858585611b17565b506001949350505050565b60003361072b818585610a3f8383611715565b610a4991906126ba565b611759565b336000908152600a6020908152604091829020825160808101845281548152600182015492810192909252600281015492820183905260030154606082015290610ad15760405162461bcd60e51b815260206004820152601460248201527358454e3a206e6f207374616b652065786973747360601b6044820152606401610870565b6000610aef8260400151836000015184602001518560600151611cd3565b600780549192506000610b01836126cd565b9190505550816040015160086000828254610b1c91906126a7565b90915550610b3b905033828460400151610b3691906126ba565b61197c565b60408083015181519081526020810183905233917f92ccf450a286a957af52509bc1c9939d1a6a481783e142e41e2499f0bb66ebc6910160405180910390a25050336000908152600a60205260408120818155600181018290556002810182905560030155565b6000610bac611d31565b905090565b33600090815260096020908152604091829020825160c08101845281546001600160a01b031681526001820154928101929092526002810154928201929092526003820154606082018190526004830154608083015260059092015460a082015290610c2f5760405162461bcd60e51b81526004016108709061260b565b80604001514211610c525760405162461bcd60e51b81526004016108709061263a565b6000610c7582606001518360200151846040015185608001518660a0015161187e565b610c8790670de0b6b3a76400006125f4565b9050610c92336109c4565b610c9a611a49565b60405181815233906000805160206127f8833981519152906020015b60405180910390a25050565b33600090815260096020908152604091829020825160c08101845281546001600160a01b03168152600182015492810192909252600281015492820192909252600382015460608201526004820154608082015260059091015460a082015260658310610d715760405162461bcd60e51b815260206004820181905260248201527f4352616e6b3a2043616e6e6f74207368617265203e3130302070657263656e746044820152606401610870565b6000816060015111610d955760405162461bcd60e51b81526004016108709061260b565b80604001514211610db85760405162461bcd60e51b81526004016108709061263a565b6000610ddb82606001518360200151846040015185608001518660a0015161187e565b610ded90670de0b6b3a76400006125f4565b905060006064610dfd86846125f4565b610e079190612685565b90506000610e1582846126a7565b9050610e20336109c4565b610e28611a49565b60405183815233906000805160206127f88339815191529060200160405180910390a260008211610e6b5760405162461bcd60e51b8152600401610870906126e4565b6001610e7a62015180826125f4565b610e8491906126a7565b610e9162015180876125f4565b11610eae5760405162461bcd60e51b815260040161087090612712565b610ebd620151806103e86125f4565b610ec89060016126ba565b610ed562015180876125f4565b10610ef25760405162461bcd60e51b815260040161087090612745565b336000908152600a602052604090206002015415610f225760405162461bcd60e51b815260040161087090612778565b610f2c8286611e37565b604080518381526020810187905233917f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee9091016109f8565b610fa66040518060c0016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081525090565b5033600090815260096020908152604091829020825160c08101845281546001600160a01b03168152600182015492810192909252600281015492820192909252600382015460608201526004820154608082015260059091015460a082015290565b816110133361043d565b101561105b5760405162461bcd60e51b815260206004820152601760248201527658454e3a206e6f7420656e6f7567682062616c616e636560481b6044820152606401610870565b6000821161107b5760405162461bcd60e51b8152600401610870906126e4565b600161108a62015180826125f4565b61109491906126a7565b6110a162015180836125f4565b116110be5760405162461bcd60e51b815260040161087090612712565b6110cd620151806103e86125f4565b6110d89060016126ba565b6110e562015180836125f4565b106111025760405162461bcd60e51b815260040161087090612745565b336000908152600a6020526040902060020154156111325760405162461bcd60e51b815260040161087090612778565b61113c3383611eda565b6111468282611e37565b604080518381526020810183905233917f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee909101610cb6565b6000610bac61200e565b60606004805461069a906125a4565b6000610bac612052565b6000610bac6120bf565b600081116111f35760405162461bcd60e51b8152602060048201526015602482015274109d5c9b8e8810995b1bddc81b5a5b881b1a5b5a5d605a1b6044820152606401610870565b336040516301ffc9a760e01b815263543746b160e01b60048201526001600160a01b0391909116906301ffc9a790602401602060405180830381865afa158015611241573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126591906127a3565b6112b15760405162461bcd60e51b815260206004820152601e60248201527f4275726e3a206e6f74206120737570706f7274656420636f6e747261637400006044820152606401610870565b6112bc823383611a9d565b6112c68282611eda565b6001600160a01b0382166000908152600b6020526040812080548392906112ee9084906126ba565b9091555033905060405163543746b160e01b81526001600160a01b03848116600483015260248201849052919091169063543746b190604401600060405180830381600087803b15801561134157600080fd5b505af1158015611355573d6000803e3d6000fd5b505050505050565b600061136c62015180836125f4565b9050600161137d62015180826125f4565b61138791906126a7565b81116113d15760405162461bcd60e51b815260206004820152601960248201527821a930b7359d102a32b936903632b9b9903a3430b71036b4b760391b6044820152606401610870565b6113d9611d31565b6113e49060016126ba565b81106114415760405162461bcd60e51b815260206004820152602660248201527f4352616e6b3a205465726d206d6f7265207468616e2063757272656e74206d6160448201526578207465726d60d01b6064820152608401610870565b33600090815260096020526040902060030154156114a15760405162461bcd60e51b815260206004820152601f60248201527f4352616e6b3a204d696e7420616c726561647920696e2070726f6772657373006044820152606401610870565b60006040518060c001604052806114b53390565b6001600160a01b03168152602081018590526040016114d484426126ba565b815260200160055481526020016114e96120bf565b81526020016114f661200e565b9052336000908152600960209081526040808320845181546001600160a01b0319166001600160a01b039091161781559184015160018301558301516002820155606083015160038201556080830151600482015560a08301516005909101556006805492935090611567836127c5565b91905055506115733390565b6001600160a01b03167fe9149e1b5059238baed02fa659dbf4bd932fbcf760a431330df4d934bc942f3784600560008154809291906115b1906127c5565b909155506040805192835260208301919091520160405180910390a2505050565b600033816115e08286611715565b9050838110156116405760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610870565b610a218286868403611759565b60003361072b818585611b17565b60008061167261166a8761219b565b600f0b6121b9565b905060006116ae6116828561219b565b6116a561168e8861219b565b6116a561169a8b61219b565b600f88900b90612293565b600f0b90612293565b90506116d46116cc6116c16103e861219b565b600f84900b906122d1565b600f0b612328565b6001600160401b0316925050505b949350505050565b6040518060600160405280602581526020016128386025913981565b610745620151806103e86125f4565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600161174f62015180826125f4565b61074591906126a7565b6001600160a01b0383166117bb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610870565b6001600160a01b03821661181c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610870565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60008061188b85426126a7565b9050600061189882612344565b9050600073eb585163debb1e637c6d617de3bef99347cd75c8636d5433e68a6005546118c491906126a7565b6040516001600160e01b031960e084901b168152600481019190915260026024820152604401602060405180830381865af4158015611907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192b91906127de565b9050600061193b866103e86126ba565b9050600061194b83898c8561165b565b9050606461195985826126a7565b61196390836125f4565b61196d9190612685565b9b9a5050505050505050505050565b6001600160a01b0382166119d25760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610870565b80600260008282546119e491906126ba565b90915550506001600160a01b03821660009081526020819052604081208054839290611a119084906126ba565b90915550506040518181526001600160a01b038316906000906000805160206128188339815191529060200160405180910390a35050565b33600090815260096020526040812080546001600160a01b0319168155600181018290556002810182905560038101829055600481018290556005018190556006805491611a96836126cd565b9190505550565b6000611aa98484611715565b90506000198114611b115781811015611b045760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610870565b611b118484848403611759565b50505050565b6001600160a01b038316611b7b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610870565b6001600160a01b038216611bdd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610870565b6001600160a01b03831660009081526020819052604090205481811015611c555760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610870565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611c8c9084906126ba565b92505081905550826001600160a01b0316846001600160a01b031660008051602061281883398151915284604051611cc691815260200190565b60405180910390a3611b11565b600082421115611d2657600061016d611cec86856125f4565b611cf990620f42406125f4565b611d039190612685565b90506305f5e100611d1482886125f4565b611d1e9190612685565b9150506116e2565b506000949350505050565b60006113886005541115611e29576000611d5f6116cc611d51600f61219b565b6116a561166a60055461219b565b6001600160401b031690506000611d7962015180836125f4565b611d876201518060646125f4565b611d9191906126ba565b905073eb585163debb1e637c6d617de3bef99347cd75c8637ae2b5c782611dbd620151806103e86125f4565b6040516001600160e01b031960e085901b16815260048101929092526024820152604401602060405180830381865af4158015611dfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e2291906127de565b9250505090565b610bac6201518060646125f4565b60405180608001604052808281526020016201518083611e5791906125f4565b611e6190426126ba565b8152602001838152602001611e74612052565b9052336000908152600a602090815260408083208451815591840151600183015583015160028201556060909201516003909201919091556007805491611eba836127c5565b91905055508160086000828254611ed191906126ba565b90915550505050565b6001600160a01b038216611f3a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610870565b6001600160a01b03821660009081526020819052604090205481811015611fae5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610870565b6001600160a01b0383166000908152602081905260408120838303905560028054849290611fdd9084906126a7565b90915550506040518281526000906001600160a01b0385169060008051602061281883398151915290602001611871565b600080620186a0600554600161202491906125f4565b61202e9190612685565b9050606481111561204157600091505090565b61204c8160646126a7565b91505090565b600080612063605a620151806125f4565b61208d7f0000000000000000000000000000000000000000000000000000000064e8eb0b426126a7565b6120979190612685565b9050806120a6600260146126a7565b10156120b457600291505090565b61204c8160146126a7565b600080620151806120f07f0000000000000000000000000000000000000000000000000000000064e8eb0b426126a7565b6120fa9190612685565b9050610bb88110156121935773eb585163debb1e637c6d617de3bef99347cd75c8636d5433e661212c83610bb86126a7565b6040516001600160e01b031960e084901b168152600481019190915260016024820152604401602060405180830381865af415801561216f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204c91906127de565b600191505090565b6000677fffffffffffffff8211156121b257600080fd5b5060401b90565b60008082600f0b136121ca57600080fd5b6000600f83900b600160401b81126121e4576040918201911d5b600160201b81126121f7576020918201911d5b620100008112612209576010918201911d5b610100811261221a576008918201911d5b6010811261222a576004918201911d5b6004811261223a576002918201911d5b60028112612249576001820191505b603f19820160401b600f85900b607f8490031b6001603f1b5b60008113156122885790800260ff81901c8281029390930192607f011c9060011d612262565b509095945050505050565b6000600f83810b9083900b0260401d60016001607f1b031981128015906122c1575060016001607f1b038113155b6122ca57600080fd5b9392505050565b600081600f0b6000036122e357600080fd5b600082600f0b604085600f0b901b816122fe576122fe61266f565b05905060016001607f1b031981128015906122c1575060016001607f1b038113156122ca57600080fd5b60008082600f0b121561233a57600080fd5b50600f0b60401d90565b6000806123546201518084612685565b9050612362600160076126a7565b8111156123725750606392915050565b6000600160076123838460036126ba565b6001901b6123919190612685565b61239b91906126a7565b604051637ae2b5c760e01b8152600481018290526063602482015290915073eb585163debb1e637c6d617de3bef99347cd75c890637ae2b5c790604401602060405180830381865af41580156123f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e291906127de565b600060208083528351808285015260005b818110156124465785810183015185820160400152820161242a565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461247e57600080fd5b919050565b6000806040838503121561249657600080fd5b61249f83612467565b946020939093013593505050565b6000806000606084860312156124c257600080fd5b6124cb84612467565b92506124d960208501612467565b9150604084013590509250925092565b600080604083850312156124fc57600080fd5b50508035926020909101359150565b60006020828403121561251d57600080fd5b6122ca82612467565b60006020828403121561253857600080fd5b5035919050565b6000806000806080858703121561255557600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561258457600080fd5b61258d83612467565b915061259b60208401612467565b90509250929050565b600181811c908216806125b857607f821691505b6020821081036125d857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610731576107316125de565b6020808252601590820152744352616e6b3a204e6f206d696e742065786973747360581b604082015260600190565b6020808252818101527f4352616e6b3a204d696e74206d61747572697479206e6f742072656163686564604082015260600190565b634e487b7160e01b600052601260045260246000fd5b6000826126a257634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610731576107316125de565b80820180821115610731576107316125de565b6000816126dc576126dc6125de565b506000190190565b60208082526014908201527358454e3a2042656c6f77206d696e207374616b6560601b604082015260600190565b60208082526019908201527858454e3a2042656c6f77206d696e207374616b65207465726d60381b604082015260600190565b60208082526019908201527858454e3a2041626f7665206d6178207374616b65207465726d60381b604082015260600190565b60208082526011908201527058454e3a207374616b652065786973747360781b604082015260600190565b6000602082840312156127b557600080fd5b815180151581146122ca57600080fd5b6000600182016127d7576127d76125de565b5060010190565b6000602082840312156127f057600080fd5b505191905056fed74752b13281df13701575f3a507e9b1242e0b5fb040143211c481c1fce573a6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef404d724a61636b4c6576696e20406c62656c79616576206661697263727970746f2e6f7267a2646970667358221220871d2fbc4bf68f2b5fdf1d4004b8ecac86e2bd5bb3e8aa1d2288c83f345a82be64736f6c63430008110033" + +[[create]] +name = "XENTorrent" +from_pool = "admin" +bytecode = "0x608060405234801561001057600080fd5b506004361061021f5760003560e01c806370a082311161012c57806370a08231146103fc57806371141a581461040f57806374a1dff21461043657806389776eb0146104495780638da5cb5b1461045c578063928dd2a71461048257806395d89b411461048a57806398bdf6f5146104925780639dc29fac1461049b578063a126ad1e146104ae578063a1a53fa1146104b8578063a22cb465146104d8578063b88d4fde146104eb578063ba3ec741146104fe578063bd33303314610506578063c87b56dd14610526578063d0d5f5b414610539578063df0030ef1461054c578063e3af6d0a1461055f578063e985e9c514610586578063ecef920114610599578063ee8743d7146105ac578063f5878b9b146105c157600080fd5b806301bb41161461022457806301ffc9a714610239578063044db8ba1461026157806306fdde0314610278578063081812fc1461028d578063095ea7b3146102ad57806319cba6b4146102c057806323b872dd146102d55780632a55205a146102e857806341b169f31461030957806341f434341461031257806342842e0e14610327578063443aa5331461033a578063498a4c2d1461035a5780634d4b2be41461038157806353b18de41461038a578063543746b11461039d57806355ee08ba146103b0578063572b6c05146103b85780635c41d2fe146103cb5780636352211e146103de578063700107af146103f1575b600080fd5b6102376102323660046133b8565b6105d4565b005b61024c6102473660046133e7565b610727565b60405190151581526020015b60405180910390f35b61026a6101f481565b604051908152602001610258565b610280610788565b6040516102589190613454565b6102a061029b3660046133b8565b61081a565b6040516102589190613467565b6102376102bb366004613490565b610841565b6102c8610855565b60405161025891906134bc565b6102376102e3366004613500565b6108d6565b6102fb6102f6366004613541565b610901565b604051610258929190613563565b61026a611d4c81565b6102a06daaeb6d7670e522a718067333cd4e81565b610237610335366004613500565b610946565b61026a6103483660046133b8565b600d6020526000908152604090205481565b61026a7f000000000000000000000000000000000000000000000000000000000000000081565b61026a61271181565b61026a61039836600461357c565b61096b565b6102376103ab366004613490565b610d36565b61026a606381565b61024c6103c63660046135a8565b610f29565b6102376103d93660046135a8565b610f3d565b6102a06103ec3660046133b8565b611029565b61026a6301e1338081565b61026a61040a3660046135a8565b61105e565b6102a07f000000000000000000000000ffcbf84650ce02dafe96926b37a0ac5e34932fa581565b61026a6104443660046133b8565b6110e4565b61026a6104573660046133b8565b611105565b7f000000000000000000000000c73fc08c931efe3fce850c09278472e8a81c2e056102a0565b610237611115565b610280611161565b61026a60075481565b6102376104a9366004613490565b611170565b61026a62093a8081565b61026a6104c63660046133b8565b600b6020526000908152604090205481565b6102376104e63660046135d3565b6114dd565b6102376104f9366004613679565b6114f1565b61028061151e565b61026a6105143660046133b8565b600c6020526000908152604090205481565b6102806105343660046133b8565b61153a565b61026a6105473660046133b8565b611717565b61023761055a3660046135a8565b611727565b61026a7f0000000000000000000000000000000000000000000000000000000064e8ec1581565b61024c610594366004613727565b6117ec565b61026a6105a7366004613541565b61181a565b61024c6105ba3660046133b8565b6127111190565b6102376105cf366004613755565b611986565b336001600160a01b037f000000000000000000000000379002701bf6f2862e3dfdd1f96d3c5e1bf450b616146106255760405162461bcd60e51b815260040161061c9061377a565b60405180910390fd5b60008160405160240161063a91815260200190565b60408051601f198184030181529181526020820180516001600160e01b0316639ff054df60e01b179052519091506000906001600160a01b037f000000000000000000000000ffcbf84650ce02dafe96926b37a0ac5e34932fa516906106a19084906137c7565b6000604051808303816000865af19150503d80600081146106de576040519150601f19603f3d011682016040523d82523d6000602084013e6106e3565b606091505b50509050806107225760405162461bcd60e51b815260206004820152600b60248201526a18d85b1b0819985a5b195960aa1b604482015260640161061c565b505050565b60006001600160e01b0319821663543746b160e01b148061075857506001600160e01b0319821663152a902d60e11b145b8061077357506001600160e01b0319821663572b6c0560e01b145b80610782575061078282611e3d565b92915050565b606060018054610797906137e3565b80601f01602080910402602001604051908101604052809291908181526020018280546107c3906137e3565b80156108105780601f106107e557610100808354040283529160200191610810565b820191906000526020600020905b8154815290600101906020018083116107f357829003601f168201915b5050505050905090565b600061082582611e8d565b506000908152600560205260409020546001600160a01b031690565b8161084b81611eb5565b6107228383611f5d565b6060600f600061086361207f565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561081057602002820191906000526020600020905b8154815260200190600101908083116108b9575050505050905090565b826001600160a01b03811633146108f0576108f033611eb5565b6108fb84848461208e565b50505050565b7f000000000000000000000000c73fc08c931efe3fce850c09278472e8a81c2e0560006127106109336101f485613833565b61093d9190613860565b90509250929050565b826001600160a01b03811633146109605761096033611eb5565b6108fb8484846120c0565b60007f000000000000000000000000000000000000000000000000000000000000000043116109ac5760405162461bcd60e51b815260040161061c90613874565b600019600e54146109cf5760405162461bcd60e51b815260040161061c906138a3565b600084116109ef5760405162461bcd60e51b815260040161061c906138d7565b60008311610a0f5760405162461bcd60e51b815260040161061c90613905565b60016008600181548110610a2557610a25613932565b9060005260206000200154610a3a9190613948565b8211610a885760405162461bcd60e51b815260206004820152601d60248201527f58454e46543a206e6f7420656e6f756768206275726e20616d6f756e74000000604482015260640161061c565b60007f000000000000000000000000ffcbf84650ce02dafe96926b37a0ac5e34932fa56001600160a01b03166370a08231610ac161207f565b6040518263ffffffff1660e01b8152600401610add9190613467565b602060405180830381865afa158015610afa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1e919061395b565b9050610b2b600184613948565b8111610b795760405162461bcd60e51b815260206004820152601d60248201527f58454e46543a206e6f7420656e6f7567682058454e2062616c616e6365000000604482015260640161061c565b60007f000000000000000000000000ffcbf84650ce02dafe96926b37a0ac5e34932fa56001600160a01b031663dd62ed3e610bb261207f565b306040518363ffffffff1660e01b8152600401610bd0929190613974565b602060405180830381865afa158015610bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c11919061395b565b9050610c1e600185613948565b8111610c845760405162461bcd60e51b815260206004820152602f60248201527f58454e46543a206e6f7420656e6f7567682058454e2062616c616e636520617060448201526e383937bb32b2103337b910313ab93760891b606482015260840161061c565b610c8e86856120db565b600e81905550610ca28686600e5487612313565b7f000000000000000000000000ffcbf84650ce02dafe96926b37a0ac5e34932fa56001600160a01b0316639dc29fac610cd961207f565b866040518363ffffffff1660e01b8152600401610cf7929190613563565b600060405180830381600087803b158015610d1157600080fd5b505af1158015610d25573d6000803e3d6000fd5b5050600e5498975050505050505050565b600019600e5403610d895760405162461bcd60e51b815260206004820152601d60248201527f58454e46543a20696c6c6567616c2063616c6c6261636b207374617465000000604482015260640161061c565b336001600160a01b037f000000000000000000000000ffcbf84650ce02dafe96926b37a0ac5e34932fa51614610e015760405162461bcd60e51b815260206004820152601e60248201527f58454e46543a20696c6c6567616c2063616c6c6261636b2063616c6c65720000604482015260640161061c565b600e546001600160a01b0383166000908152600f60205260409020610e25916124ab565b600e80546000908152600c6020526040902082905554610e46908390612525565b600e546000908152600b6020908152604080832054600d9092529182902054915163346ba94160e01b815260048101929092526001600160a01b038416917ffbb2077593b3594fd0ac359a2d898268191a74843aaf1ba3f517b5514a1b07119190730a252663dbcc0b073063d6420a40319e438cfa599063346ba94190602401602060405180830381865af4158015610ee3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f07919061395b565b6040805192835260208301919091520160405180910390a25050600019600e55565b6000546001600160a01b0391821691161490565b336001600160a01b037f000000000000000000000000c73fc08c931efe3fce850c09278472e8a81c2e051614610fae5760405162461bcd60e51b81526020600482015260166024820152752c22a7232a1d103737ba1030b7103232b83637bcb2b960511b604482015260640161061c565b6000546001600160a01b0316156110075760405162461bcd60e51b815260206004820152601f60248201527f58454e46543a20466f7277617264657220697320616c72656164792073657400604482015260640161061c565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000818152600360205260408120546001600160a01b0316806107825760405162461bcd60e51b815260040161061c9061398e565b60006001600160a01b0382166110c85760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161061c565b506001600160a01b031660009081526004602052604090205490565b600981815481106110f457600080fd5b600091825260209091200154905081565b600a81815481106110f457600080fd5b336001600160a01b037f000000000000000000000000379002701bf6f2862e3dfdd1f96d3c5e1bf450b6161461115d5760405162461bcd60e51b815260040161061c9061377a565b6000ff5b606060028054610797906137e3565b7f000000000000000000000000000000000000000000000000000000000000000043116111af5760405162461bcd60e51b815260040161061c90613874565b600019600e54146111d25760405162461bcd60e51b815260040161061c906139c0565b6111df6001600019613948565b600e556111ea61207f565b6040516301ffc9a760e01b815263543746b160e01b60048201526001600160a01b0391909116906301ffc9a790602401602060405180830381865afa158015611237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125b91906139f4565b6112b35760405162461bcd60e51b8152602060048201526024808201527f58454e4654206275726e3a206e6f74206120737570706f7274656420636f6e746044820152631c9858dd60e21b606482015260840161061c565b6001600160a01b0382166113135760405162461bcd60e51b815260206004820152602160248201527f58454e4654206275726e3a20696c6c6567616c206f776e6572206164647265736044820152607360f81b606482015260840161061c565b600081116113615760405162461bcd60e51b815260206004820152601b60248201527a161153919508189d5c9b8e881a5b1b1959d85b081d1bdad95b9259602a1b604482015260640161061c565b61137261136c61207f565b8261253f565b6113ca5760405162461bcd60e51b8152602060048201526024808201527f58454e4654206275726e3a206e6f7420616e20617070726f766564206f70657260448201526330ba37b960e11b606482015260840161061c565b816001600160a01b03166113dd82611029565b6001600160a01b0316146114415760405162461bcd60e51b815260206004820152602560248201527f58454e4654206275726e3a2075736572206973206e6f7420746f6b656e49642060448201526437bbb732b960d91b606482015260840161061c565b6001600160a01b0382166000908152600f60205260409020611463908261259e565b61146c81612683565b61147461207f565b6001600160a01b031663543746b183836040518363ffffffff1660e01b81526004016114a1929190613563565b600060405180830381600087803b1580156114bb57600080fd5b505af11580156114cf573d6000803e3d6000fd5b5050600019600e5550505050565b816114e781611eb5565b6107228383612720565b836001600160a01b038116331461150b5761150b33611eb5565b61151785858585612732565b5050505050565b604051806060016040528060258152602001613e5d6025913981565b6000818152600b6020908152604080832054600d835281842054600c90935292205460609291908261156b57600080fd5b60006115768661276b565b604051631b9345fd60e01b81526004810188905260248101869052604481018590526001600160a01b037f000000000000000000000000ffcbf84650ce02dafe96926b37a0ac5e34932fa51660648201526084810184905261163b9073af18644083151cf57f914cccc23c42a1892c218e90631b9345fd9060a401600060405180830381865af415801561160e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116369190810190613a11565b61286b565b604051633c4a25e960e21b815260048101879052602481018590526044810186905273af18644083151cf57f914cccc23c42a1892c218e9063f12897a490606401600060405180830381865af4158015611699573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116c19190810190613a11565b6040516020016116d393929190613a87565b60405160208183030381529060405290506116ed8161286b565b6040516020016116fd9190613ba5565b604051602081830303815290604052945050505050919050565b600881815481106110f457600080fd5b336001600160a01b037f000000000000000000000000379002701bf6f2862e3dfdd1f96d3c5e1bf450b6161461176f5760405162461bcd60e51b815260040161061c9061377a565b6000816064604051602401611785929190613563565b60408051601f198184030181529181526020820180516001600160e01b0316631c56030560e01b179052519091506000906001600160a01b037f000000000000000000000000ffcbf84650ce02dafe96926b37a0ac5e34932fa516906106a19084906137c7565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b60007f0000000000000000000000000000000000000000000000000000000000000000431161185b5760405162461bcd60e51b815260040161061c90613874565b600019600e541461187e5760405162461bcd60e51b815260040161061c906138a3565b6000831161189e5760405162461bcd60e51b815260040161061c906138d7565b600082116118be5760405162461bcd60e51b815260040161061c90613905565b6118c98360006120db565b600e819055506118de8383600e546000612313565b61190f600e54600f60006118f061207f565b6001600160a01b031681526020810191909152604001600020906124ab565b61192261191a61207f565b600e54612525565b61192a61207f565b6001600160a01b03167ffbb2077593b3594fd0ac359a2d898268191a74843aaf1ba3f517b5514a1b0711848460405161196d929190918252602082015260400190565b60405180910390a25050600e8054600019909155919050565b7f000000000000000000000000000000000000000000000000000000000000000043116119c55760405162461bcd60e51b815260040161061c90613874565b600019600e54146119e85760405162461bcd60e51b815260040161061c906139c0565b6119f56001600019613948565b600e55611a0061207f565b6001600160a01b0316611a1283611029565b6001600160a01b031614611a615760405162461bcd60e51b81526020600482015260166024820152752c22a7232a1d1024b731b7b93932b1ba1037bbb732b960511b604482015260640161061c565b6001600160a01b038116611ab05760405162461bcd60e51b815260206004820152601660248201527558454e46543a20496c6c6567616c206164647265737360501b604482015260640161061c565b6000828152600d60205260409081902054905163e90cdc8960e01b81526004810191909152730a252663dbcc0b073063d6420a40319e438cfa599063e90cdc8990602401602060405180830381865af4158015611b11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3591906139f4565b15611b7c5760405162461bcd60e51b815260206004820152601760248201527616115391950e88105b1c9958591e481c995919595b5959604a1b604482015260640161061c565b604051600090611bc090733d602d80600a3d3981f3363d3d373d3d3d363d7360601b903060601b906e5af43d82803e903d91602b57fd5bf360881b90602001613bea565b60408051601f198184030181529181526000858152600b6020529081205491925090611bed906001613c18565b9050600083604051602401611c029190613467565b60408051601f19818403018152918152602080830180516001600160e01b0390811663df0030ef60e01b1790915282516004815260248101909352908201805190911663928dd2a760e01b17905290915060015b83811015611dbd576040805160208082018490528183018a90528251808303840181526060808401855281519183019190912089518a8401206001600160f81b031960808601523090921b6001600160601b03191660818501526095840181905260b5808501929092528451808503909201825260d5909301909352825192810192909220855191926000928291849182918a0182855af1925082611d495760405162461bcd60e51b815260206004820152602360248201527f58454e46543a204572726f72207768696c6520636c61696d696e67207265776160448201526272647360e81b606482015260840161061c565b6000808751602089016000855af1925082611da65760405162461bcd60e51b815260206004820181905260248201527f58454e46543a204572726f72207768696c6520706f776572696e6720646f776e604482015260640161061c565b505050508080611db590613c2b565b915050611c56565b506000868152600d6020526040902080546001179055611ddb61207f565b6001600160a01b03167f7ae39cb5fb0bebb7775f35a0009e0c94f59c2e40c8967af20842619edac4694d8787604051611e279291909182526001600160a01b0316602082015260400190565b60405180910390a25050600019600e5550505050565b60006001600160e01b031982166380ac58cd60e01b1480611e6e57506001600160e01b03198216635b5e139f60e01b145b8061078257506301ffc9a760e01b6001600160e01b0319831614610782565b611e96816129bd565b611eb25760405162461bcd60e51b815260040161061c9061398e565b50565b6daaeb6d7670e522a718067333cd4e3b15611eb257604051633185c44d60e21b81526daaeb6d7670e522a718067333cd4e9063c617113490611efd9030908590600401613974565b602060405180830381865afa158015611f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3e91906139f4565b611eb25780604051633b79c77360e21b815260040161061c9190613467565b6000611f6882611029565b9050806001600160a01b0316836001600160a01b031603611fd55760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161061c565b806001600160a01b0316611fe761207f565b6001600160a01b0316148061200357506120038161059461207f565b6120755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161061c565b61072283836129da565b6000612089612a48565b905090565b61209961136c61207f565b6120b55760405162461bcd60e51b815260040161061c90613c44565b610722838383612a6a565b610722838383604051806020016040528060008152506114f1565b6000806120e783612c05565b9050806001036121a757606384116121115760405162461bcd60e51b815260040161061c90613c92565b61213f6301e133807f0000000000000000000000000000000000000000000000000000000064e8ec15613c18565b421061218b5760405162461bcd60e51b815260206004820152601b60248201527a16115391950e881b1a5b5a5d1959081d1a5b5948195e1c1a5c9959602a1b604482015260640161061c565b6007805490600061219b83613c2b565b91905055915050610782565b60018111156122f757326121b961207f565b6001600160a01b0316146122215760405162461bcd60e51b815260206004820152602960248201527f58454e46543a206f6e6c7920454f4120616c6c6f77656420666f7220746869736044820152682063617465676f727960b81b606482015260840161061c565b606384116122415760405162461bcd60e51b815260040161061c90613c92565b6009818154811061225457612254613932565b9060005260206000200154600161226b9190613c18565b600a828154811061227e5761227e613932565b9060005260206000200154106122ce5760405162461bcd60e51b815260206004820152601560248201527416115391950e8818db185cdcc81cdbdb19081bdd5d605a1b604482015260640161061c565b600a81815481106122e1576122e1613932565b6000918252602082200180549161219b83613c2b565b6007805490600061230783613c2b565b90915550949350505050565b60405160009061235790733d602d80600a3d3981f3363d3d373d3d3d363d7360601b903060601b906e5af43d82803e903d91602b57fd5bf360881b90602001613bea565b604051602081830303815290604052905060008460405160240161237d91815260200190565b60408051601f198184030181529190526020810180516001600160e01b031662dda08b60e11b179052905060008060015b6123b9896001613c18565b811015612490576040805160208101839052908101889052600090606001604051602081830303815290604052805190602001209050808651602088016000f593506000808651602088016000885af19250826124585760405162461bcd60e51b815260206004820181905260248201527f58454e46543a204572726f72207768696c6520636c61696d696e672072616e6b604482015260640161061c565b8160010361247d5761246d848b8b8a8c612ca2565b6000898152600d60205260409020555b508061248881613c2b565b9150506123ae565b50505060009384525050600b60205250604090209190915550565b612504828054806020026020016040519081016040528092919081815260200182805480156124f957602002820191906000526020600020905b8154815260200190600101908083116124e5575b505050505082612e59565b600003612521578154600181018355600083815260209020018190555b5050565b612521828260405180602001604052806000815250612ea1565b60008061254b83611029565b9050806001600160a01b0316846001600160a01b03161480612572575061257281856117ec565b806125965750836001600160a01b031661258b8461081a565b6001600160a01b0316145b949350505050565b60006125f9838054806020026020016040519081016040528092919081815260200182805480156125ee57602002820191906000526020600020905b8154815260200190600101908083116125da575b505050505083612e59565b90508015610722578254839061261190600190613948565b8154811061262157612621613932565b90600052602060002001548360018361263a9190613948565b8154811061264a5761264a613932565b90600052602060002001819055508280548061266857612668613cc6565b60019003818190600052602060002001600090559055505050565b600061268e82611029565b905061269c81600084612ed4565b6126a76000836129da565b6001600160a01b03811660009081526004602052604081208054600192906126d0908490613948565b909155505060008281526003602052604080822080546001600160a01b0319169055518391906001600160a01b03841690600080516020613e3d833981519152908390a461252181600084612ff5565b61252161272b61207f565b8383613039565b61274361273d61207f565b8361253f565b61275f5760405162461bcd60e51b815260040161061c90613c44565b6108fb84848484613103565b6060816000036127925750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127bc57806127a681613c2b565b91506127b59050600a83613860565b9150612796565b6000816001600160401b038111156127d6576127d661360c565b6040519080825280601f01601f191660200182016040528015612800576020820181803683370190505b5090505b841561259657612815600183613948565b9150612822600a86613cdc565b61282d906030613c18565b60f81b81838151811061284257612842613932565b60200101906001600160f81b031916908160001a905350612864600a86613860565b9450612804565b6060815160000361288a57505060408051602081019091526000815290565b6000604051806060016040528060408152602001613dfd60409139905060006003845160026128b99190613c18565b6128c39190613860565b6128ce906004613833565b6001600160401b038111156128e5576128e561360c565b6040519080825280601f01601f19166020018201604052801561290f576020820181803683370190505b509050600182016020820185865187015b8082101561297b576003820191508151603f8160121c168501518453600184019350603f81600c1c168501518453600184019350603f8160061c168501518453600184019350603f8116850151845350600183019250612920565b505060038651066001811461299757600281146129aa576129b2565b603d6001830353603d60028303536129b2565b603d60018303535b509195945050505050565b6000908152600360205260409020546001600160a01b0316151590565b600081815260056020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612a0f82611029565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000612a5333610f29565b15612a65575060131936013560601c90565b503390565b826001600160a01b0316612a7d82611029565b6001600160a01b031614612ae15760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161061c565b6001600160a01b038216612b435760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161061c565b612b4e838383612ed4565b612b596000826129da565b6001600160a01b0383166000908152600460205260408120805460019290612b82908490613948565b90915550506001600160a01b0382166000908152600460205260408120805460019290612bb0908490613c18565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b038681169182179092559151849391871691600080516020613e3d83398151915291a4610722838383612ff5565b6008546000908190612c1990600190613948565b90505b8015612c995760088181548110612c3557612c35613932565b9060005260206000200154600003612c505750600092915050565b600160088281548110612c6557612c65613932565b9060005260206000200154612c7a9190613948565b831115612c875792915050565b80612c9181613cf0565b915050612c1c565b50600092915050565b600080612cb0836127111190565b90506000612cbe8787613136565b90508115612ce357612ccf85612c05565b612cda906007613c18565b60801760ff1690505b600085118015612cf1575081155b15612cfa575060485b6000806000807f000000000000000000000000ffcbf84650ce02dafe96926b37a0ac5e34932fa56001600160a01b031663df2823318d6040518263ffffffff1660e01b8152600401612d4c9190613467565b60c060405180830381865afa158015612d69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d8d9190613d07565b95509550955095505050730a252663dbcc0b073063d6420a40319e438cfa5963906029d98b868686868b60006040518863ffffffff1660e01b8152600401612e089796959493929190968752602087019590955260408601939093526060850191909152608084015260a0830152151560c082015260e00190565b602060405180830381865af4158015612e25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e49919061395b565b9c9b505050505050505050505050565b60015b82518111612c99578183612e71600184613948565b81518110612e8157612e81613932565b602002602001015103156107825780612e9981613c2b565b915050612e5c565b612eab8383613163565b612eb86000848484613297565b6107225760405162461bcd60e51b815260040161061c90613d5a565b6001600160a01b03831615610722576000818152600d602052604080822054905163125fb94760e11b81526004810191909152730a252663dbcc0b073063d6420a40319e438cfa59906324bf728e90602401602060405180830381865af4158015612f43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f67919061395b565b90506000428211612f8157612f7c8242613948565b612f8b565b612f8b4283613948565b905062093a8081116115175760405162461bcd60e51b815260206004820152602d60248201527f58454e46543a207472616e736665722070726f6869626974656420696e20626c60448201526c1858dadbdd5d081c195c9a5bd9609a1b606482015260840161061c565b6001600160a01b0383166000908152600f60205260409020613017908261259e565b6001600160a01b0382166000908152600f6020526040902061072290826124ab565b816001600160a01b0316836001600160a01b0316036130965760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b604482015260640161061c565b6001600160a01b03838116600081815260066020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61310e848484612a6a565b61311a84848484613297565b6108fb5760405162461bcd60e51b815260040161061c90613d5a565b60006007613144848461339f565b111561315257506007610782565b61315c838361339f565b9392505050565b6001600160a01b0382166131b95760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161061c565b6131c2816129bd565b1561320e5760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b604482015260640161061c565b61321a60008383612ed4565b6001600160a01b0382166000908152600460205260408120805460019290613243908490613c18565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b0386169081179091559051839290600080516020613e3d833981519152908290a461252160008383612ff5565b60006001600160a01b0384163b1561339457836001600160a01b031663150b7a026132c061207f565b8786866040518563ffffffff1660e01b81526004016132e29493929190613dac565b6020604051808303816000875af192505050801561331d575060408051601f3d908101601f1916820190925261331a91810190613ddf565b60015b61337a573d80801561334b576040519150601f19603f3d011682016040523d82523d6000602084013e613350565b606091505b5080516000036133725760405162461bcd60e51b815260040161061c90613d5a565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612596565b506001949350505050565b6000611d4c6133ae8385613833565b61315c9190613860565b6000602082840312156133ca57600080fd5b5035919050565b6001600160e01b031981168114611eb257600080fd5b6000602082840312156133f957600080fd5b813561315c816133d1565b60005b8381101561341f578181015183820152602001613407565b50506000910152565b60008151808452613440816020860160208601613404565b601f01601f19169290920160200192915050565b60208152600061315c6020830184613428565b6001600160a01b0391909116815260200190565b6001600160a01b0381168114611eb257600080fd5b600080604083850312156134a357600080fd5b82356134ae8161347b565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156134f4578351835292840192918401916001016134d8565b50909695505050505050565b60008060006060848603121561351557600080fd5b83356135208161347b565b925060208401356135308161347b565b929592945050506040919091013590565b6000806040838503121561355457600080fd5b50508035926020909101359150565b6001600160a01b03929092168252602082015260400190565b60008060006060848603121561359157600080fd5b505081359360208301359350604090920135919050565b6000602082840312156135ba57600080fd5b813561315c8161347b565b8015158114611eb257600080fd5b600080604083850312156135e657600080fd5b82356135f18161347b565b91506020830135613601816135c5565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561364a5761364a61360c565b604052919050565b60006001600160401b0382111561366b5761366b61360c565b50601f01601f191660200190565b6000806000806080858703121561368f57600080fd5b843561369a8161347b565b935060208501356136aa8161347b565b92506040850135915060608501356001600160401b038111156136cc57600080fd5b8501601f810187136136dd57600080fd5b80356136f06136eb82613652565b613622565b81815288602083850101111561370557600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b6000806040838503121561373a57600080fd5b82356137458161347b565b915060208301356136018161347b565b6000806040838503121561376857600080fd5b8235915060208301356136018161347b565b60208082526017908201527616115388141c9bde1e4e881d5b985d5d1a1bdc9a5e9959604a1b604082015260600190565b600081516137bd818560208601613404565b9290920192915050565b600082516137d9818460208701613404565b9190910192915050565b600181811c908216806137f757607f821691505b60208210810361381757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176107825761078261381d565b634e487b7160e01b600052601260045260246000fd5b60008261386f5761386f61384a565b500490565b60208082526015908201527416115391950e88139bdd081858dd1a5d99481e595d605a1b604082015260600190565b6020808252601a908201527916115391950e881c99595b9d1c985b98de4819195d1958dd195960321b604082015260600190565b60208082526014908201527316115391950e88125b1b1959d85b0818dbdd5b9d60621b604082015260600190565b60208082526013908201527258454e46543a20496c6c6567616c207465726d60681b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b818103818111156107825761078261381d565b60006020828403121561396d57600080fd5b5051919050565b6001600160a01b0392831681529116602082015260400190565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b6020808252601a908201527916115391950e881499595b9d1c985b98de4819195d1958dd195960321b604082015260600190565b600060208284031215613a0657600080fd5b815161315c816135c5565b600060208284031215613a2357600080fd5b81516001600160401b03811115613a3957600080fd5b8201601f81018413613a4a57600080fd5b8051613a586136eb82613652565b818152856020838501011115613a6d57600080fd5b613a7e826020830160208601613404565b95945050505050565b607b60f81b815275226e616d65223a202258454e20546f7272656e74202360501b60018201528351600090613ac3816017850160208901613404565b61088b60f21b60179184019182018190527f226465736372697074696f6e223a202258454e46543a2058454e2043727970746019830152721bc8135a5b9d1a5b99c8151bdc9c995b9d088b606a1b6039830152691134b6b0b3b2911d101160b11b604c8301527919185d184e9a5b5859d94bdcdd99cade1b5b0ed8985cd94d8d0b60321b60568301528551613b5f816070850160208a01613404565b60709201918201526d01130ba3a3934b13aba32b9911d160951b6072820152613b9b613b8e60808301866137ab565b607d60f81b815260010190565b9695505050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000815260008251613bdd81601d850160208701613404565b91909101601d0192915050565b6001600160601b031993841681529190921660148201526001600160881b0319909116602882015260370190565b808201808211156107825761078261381d565b600060018201613c3d57613c3d61381d565b5060010190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6020808252601a908201527916115391950e881d5b99195c881c995c481593554818dbdd5b9d60321b604082015260600190565b634e487b7160e01b600052603160045260246000fd5b600082613ceb57613ceb61384a565b500690565b600081613cff57613cff61381d565b506000190190565b60008060008060008060c08789031215613d2057600080fd5b8651613d2b8161347b565b6020880151604089015160608a015160808b015160a0909b0151939c929b509099909850965090945092505050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613b9b90830184613428565b600060208284031215613df157600080fd5b815161315c816133d156fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef404d724a61636b4c6576696e20406c62656c79616576206661697263727970746f2e6f7267a2646970667358221220b68169ee460b457f28ac6f0d9362a52c071cd56f3fbd60c0b5f3c587fd798f7964736f6c63430008110033000000000000000000000000{XENCrypto}{burnRates_}{tokenLimits_}{startBlockNumber_}{forwarder_}{royalty_Receiver_}00000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cecb8f27f4200f3a0000000000000000000000000000000000000000000000019d971e4fe8401e740000000000000000000000000000000000000000000000033b2e3c9fd0803ce800000000000000000000000000000000000000000000000813f3978f8940984400000000000000000000000000000000000000000000001027e72f1f128130880000000000000000000000000000000000000000000000204fce5e3e25026110000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000017700000000000000000000000000000000000000000000000000000000000000bb800000000000000000000000000000000000000000000000000000000000003e80000000000000000000000000000000000000000000000000000000000000064" + +# [[setup]] +# kind = "claim_rank" +# to = "{XENCrypto}" +# from_pool = "admin" +# signature = "function claimRank(uint256 term) external" +# args = ["1"] + +# deploy 10 contracts doing XEN. + +[[spam]] + +[spam.tx] +kind = "bulk_claim_rank" +to = "{XENTorrent}" +from_pool = "admin" +signature = "function bulkClaimRank(uint256 count, uint256 term) public notBeforeStart returns (uint256 tokenId)" +args = ["10", "1"] \ No newline at end of file From ab10c031d33f3a534999418eba668408bdcb5e1b Mon Sep 17 00:00:00 2001 From: fahimahmedx Date: Wed, 23 Apr 2025 21:28:50 -0400 Subject: [PATCH 2/5] fix bytecode --- scenarios/xen.toml | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/scenarios/xen.toml b/scenarios/xen.toml index a15a9cd8..49946de2 100644 --- a/scenarios/xen.toml +++ b/scenarios/xen.toml @@ -1,35 +1,27 @@ [env] -burnRates_= "00000000000000000000000000000000000000000000000000000000000000c0" +burnRates_ = "00000000000000000000000000000000000000000000000000000000000000c0" tokenLimits_ = "00000000000000000000000000000000000000000000000000000000000001c0" startBlockNumber_ = "0000000000000000000000000000000000000000000000000000000000000000" forwarder_ = "0000000000000000000000000000000000000000000000000000000000000000" royalty_Receiver_ = "000000000000000000000000c73fc08c931efe3fce850c09278472e8a81c2e05" -# XENTorrentArguments = "000000000000000000000000{XENCrypto}{burnRates_}{tokenLimits_}{startBlockNumber_}{forwarder_}{royalty_Receiver_}00000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cecb8f27f4200f3a0000000000000000000000000000000000000000000000019d971e4fe8401e740000000000000000000000000000000000000000000000033b2e3c9fd0803ce800000000000000000000000000000000000000000000000813f3978f8940984400000000000000000000000000000000000000000000001027e72f1f128130880000000000000000000000000000000000000000000000204fce5e3e25026110000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000017700000000000000000000000000000000000000000000000000000000000000bb800000000000000000000000000000000000000000000000000000000000003e80000000000000000000000000000000000000000000000000000000000000064" [[create]] name = "XENCrypto" from_pool = "admin" -bytecode = "0x608060405234801561001057600080fd5b50600436106102825760003560e01c80637e7aa62e116101585780637e7aa62e146104735780638979c87c1461047b5780638da7ad2314610483578063909a2ff6146104d857806395d89b41146104e0578063962ca496146104e857806399202454146104f05780639dc29fac146104f85780639ff054df1461050b578063a457c2d71461051e578063a9059cbb14610531578063b0fd1fc214610544578063b21d35f214610557578063b4800cdc14610560578063ba3ec74114610569578063bcfe394f1461035d578063c0c6525914610571578063c56f0bab14610579578063ce653d5f14610581578063dd62ed3e146105a1578063df282331146105b4578063e3af6d0a14610638578063e81917b41461065f578063ed2f236914610668578063f060482914610671578063f340faed14610679578063fed742691461068357600080fd5b80630237893214610287578063069612a5146102a357806306fdde03146102ac578063095ea7b3146102c15780630bfae56b146102e45780630f2e1228146102ec578063110d7fc2146102f457806316f9c8fd146102fc57806318160ddd146103375780631c2440821461033f5780631c560305146103485780631c6f212e1461035d57806323b872dd146103655780632a62d966146102f4578063313ce5671461037857806332870fda14610387578063395093511461038f5780633ccfd60b146103a257806345125715146103aa57806352c7f8dc146103b2578063543d36521461035d5780635bccb4c4146103ba57806361a52a36146103cd5780637010d7a1146103d757806370a082311461042f57806372475f94146104585780637b0472f014610460575b600080fd5b61029061016d81565b6040519081526020015b60405180910390f35b61029060085481565b6102b461068b565b60405161029a9190612419565b6102d46102cf366004612483565b61071d565b604051901515815260200161029a565b610290610737565b610290606381565b610290600081565b610304610748565b60405161029a91908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b600254610290565b61029060055481565b61035b610356366004612483565b6107b9565b005b610290600181565b6102d46103733660046124ad565b610a08565b6040516012815260200161029a565b610290605a81565b6102d461039d366004612483565b610a2c565b61035b610a4e565b610290610ba2565b61035b610bb1565b61035b6103c83660046124e9565b610cc2565b6102906201518081565b6103df610f64565b60405161029a919081516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a0918201519181019190915260c00190565b61029061043d36600461250b565b6001600160a01b031660009081526020819052604090205490565b610290600f81565b61035b61046e3660046124e9565b611009565b610290600281565b61029061117e565b6104b861049136600461250b565b600a6020526000908152604090208054600182015460028301546003909301549192909184565b60408051948552602085019390935291830152606082015260800161029a565b610290606481565b6102b4611188565b610290611197565b6102906111a1565b61035b610506366004612483565b6111ab565b61035b610519366004612526565b61135d565b6102d461052c366004612483565b6115d2565b6102d461053f366004612483565b61164d565b61029061055236600461253f565b61165b565b61029061138881565b61029060065481565b6102b46116ea565b610290611706565b610290600781565b61029061058f36600461250b565b600b6020526000908152604090205481565b6102906105af366004612571565b611715565b6106016105c236600461250b565b6009602052600090815260409020805460018201546002830154600384015460048501546005909501546001600160a01b039094169492939192909186565b604080516001600160a01b0390971687526020870195909552938501929092526060840152608083015260a082015260c00161029a565b6102907f0000000000000000000000000000000000000000000000000000000064e8eb0b81565b610290610bb881565b61029060075481565b610290611740565b610290620186a081565b610290601481565b60606003805461069a906125a4565b80601f01602080910402602001604051908101604052809291908181526020018280546106c6906125a4565b80156107135780601f106106e857610100808354040283529160200191610713565b820191906000526020600020905b8154815290600101906020018083116106f657829003601f168201915b5050505050905090565b60003361072b818585611759565b60019150505b92915050565b6107456201518060646125f4565b81565b6107736040518060800160405280600081526020016000815260200160008152602001600081525090565b50336000908152600a6020908152604091829020825160808101845281548152600182015492810192909252600281015492820192909252600390910154606082015290565b33600090815260096020908152604091829020825160c08101845281546001600160a01b03908116825260018301549382019390935260028201549381019390935260038101546060840152600481015460808401526005015460a083015283166108795760405162461bcd60e51b815260206004820152602560248201527f4352616e6b3a2043616e6e6f742073686172652077697468207a65726f206164604482015264647265737360d81b60648201526084015b60405180910390fd5b600082116108c95760405162461bcd60e51b815260206004820181905260248201527f4352616e6b3a2043616e6e6f74207368617265207a65726f2070657263656e746044820152606401610870565b606582106109195760405162461bcd60e51b815260206004820181905260248201527f4352616e6b3a2043616e6e6f74207368617265203130302b2070657263656e746044820152606401610870565b600081606001511161093d5760405162461bcd60e51b81526004016108709061260b565b806040015142116109605760405162461bcd60e51b81526004016108709061263a565b600061098382606001518360200151846040015185608001518660a0015161187e565b61099590670de0b6b3a76400006125f4565b9050600060646109a585846125f4565b6109af9190612685565b905060006109bd82846126a7565b90506109ca335b8261197c565b6109d4868361197c565b6109dc611a49565b60405183815233906000805160206127f8833981519152906020015b60405180910390a2505050505050565b600033610a16858285611a9d565b610a21858585611b17565b506001949350505050565b60003361072b818585610a3f8383611715565b610a4991906126ba565b611759565b336000908152600a6020908152604091829020825160808101845281548152600182015492810192909252600281015492820183905260030154606082015290610ad15760405162461bcd60e51b815260206004820152601460248201527358454e3a206e6f207374616b652065786973747360601b6044820152606401610870565b6000610aef8260400151836000015184602001518560600151611cd3565b600780549192506000610b01836126cd565b9190505550816040015160086000828254610b1c91906126a7565b90915550610b3b905033828460400151610b3691906126ba565b61197c565b60408083015181519081526020810183905233917f92ccf450a286a957af52509bc1c9939d1a6a481783e142e41e2499f0bb66ebc6910160405180910390a25050336000908152600a60205260408120818155600181018290556002810182905560030155565b6000610bac611d31565b905090565b33600090815260096020908152604091829020825160c08101845281546001600160a01b031681526001820154928101929092526002810154928201929092526003820154606082018190526004830154608083015260059092015460a082015290610c2f5760405162461bcd60e51b81526004016108709061260b565b80604001514211610c525760405162461bcd60e51b81526004016108709061263a565b6000610c7582606001518360200151846040015185608001518660a0015161187e565b610c8790670de0b6b3a76400006125f4565b9050610c92336109c4565b610c9a611a49565b60405181815233906000805160206127f8833981519152906020015b60405180910390a25050565b33600090815260096020908152604091829020825160c08101845281546001600160a01b03168152600182015492810192909252600281015492820192909252600382015460608201526004820154608082015260059091015460a082015260658310610d715760405162461bcd60e51b815260206004820181905260248201527f4352616e6b3a2043616e6e6f74207368617265203e3130302070657263656e746044820152606401610870565b6000816060015111610d955760405162461bcd60e51b81526004016108709061260b565b80604001514211610db85760405162461bcd60e51b81526004016108709061263a565b6000610ddb82606001518360200151846040015185608001518660a0015161187e565b610ded90670de0b6b3a76400006125f4565b905060006064610dfd86846125f4565b610e079190612685565b90506000610e1582846126a7565b9050610e20336109c4565b610e28611a49565b60405183815233906000805160206127f88339815191529060200160405180910390a260008211610e6b5760405162461bcd60e51b8152600401610870906126e4565b6001610e7a62015180826125f4565b610e8491906126a7565b610e9162015180876125f4565b11610eae5760405162461bcd60e51b815260040161087090612712565b610ebd620151806103e86125f4565b610ec89060016126ba565b610ed562015180876125f4565b10610ef25760405162461bcd60e51b815260040161087090612745565b336000908152600a602052604090206002015415610f225760405162461bcd60e51b815260040161087090612778565b610f2c8286611e37565b604080518381526020810187905233917f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee9091016109f8565b610fa66040518060c0016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081525090565b5033600090815260096020908152604091829020825160c08101845281546001600160a01b03168152600182015492810192909252600281015492820192909252600382015460608201526004820154608082015260059091015460a082015290565b816110133361043d565b101561105b5760405162461bcd60e51b815260206004820152601760248201527658454e3a206e6f7420656e6f7567682062616c616e636560481b6044820152606401610870565b6000821161107b5760405162461bcd60e51b8152600401610870906126e4565b600161108a62015180826125f4565b61109491906126a7565b6110a162015180836125f4565b116110be5760405162461bcd60e51b815260040161087090612712565b6110cd620151806103e86125f4565b6110d89060016126ba565b6110e562015180836125f4565b106111025760405162461bcd60e51b815260040161087090612745565b336000908152600a6020526040902060020154156111325760405162461bcd60e51b815260040161087090612778565b61113c3383611eda565b6111468282611e37565b604080518381526020810183905233917f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee909101610cb6565b6000610bac61200e565b60606004805461069a906125a4565b6000610bac612052565b6000610bac6120bf565b600081116111f35760405162461bcd60e51b8152602060048201526015602482015274109d5c9b8e8810995b1bddc81b5a5b881b1a5b5a5d605a1b6044820152606401610870565b336040516301ffc9a760e01b815263543746b160e01b60048201526001600160a01b0391909116906301ffc9a790602401602060405180830381865afa158015611241573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126591906127a3565b6112b15760405162461bcd60e51b815260206004820152601e60248201527f4275726e3a206e6f74206120737570706f7274656420636f6e747261637400006044820152606401610870565b6112bc823383611a9d565b6112c68282611eda565b6001600160a01b0382166000908152600b6020526040812080548392906112ee9084906126ba565b9091555033905060405163543746b160e01b81526001600160a01b03848116600483015260248201849052919091169063543746b190604401600060405180830381600087803b15801561134157600080fd5b505af1158015611355573d6000803e3d6000fd5b505050505050565b600061136c62015180836125f4565b9050600161137d62015180826125f4565b61138791906126a7565b81116113d15760405162461bcd60e51b815260206004820152601960248201527821a930b7359d102a32b936903632b9b9903a3430b71036b4b760391b6044820152606401610870565b6113d9611d31565b6113e49060016126ba565b81106114415760405162461bcd60e51b815260206004820152602660248201527f4352616e6b3a205465726d206d6f7265207468616e2063757272656e74206d6160448201526578207465726d60d01b6064820152608401610870565b33600090815260096020526040902060030154156114a15760405162461bcd60e51b815260206004820152601f60248201527f4352616e6b3a204d696e7420616c726561647920696e2070726f6772657373006044820152606401610870565b60006040518060c001604052806114b53390565b6001600160a01b03168152602081018590526040016114d484426126ba565b815260200160055481526020016114e96120bf565b81526020016114f661200e565b9052336000908152600960209081526040808320845181546001600160a01b0319166001600160a01b039091161781559184015160018301558301516002820155606083015160038201556080830151600482015560a08301516005909101556006805492935090611567836127c5565b91905055506115733390565b6001600160a01b03167fe9149e1b5059238baed02fa659dbf4bd932fbcf760a431330df4d934bc942f3784600560008154809291906115b1906127c5565b909155506040805192835260208301919091520160405180910390a2505050565b600033816115e08286611715565b9050838110156116405760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610870565b610a218286868403611759565b60003361072b818585611b17565b60008061167261166a8761219b565b600f0b6121b9565b905060006116ae6116828561219b565b6116a561168e8861219b565b6116a561169a8b61219b565b600f88900b90612293565b600f0b90612293565b90506116d46116cc6116c16103e861219b565b600f84900b906122d1565b600f0b612328565b6001600160401b0316925050505b949350505050565b6040518060600160405280602581526020016128386025913981565b610745620151806103e86125f4565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600161174f62015180826125f4565b61074591906126a7565b6001600160a01b0383166117bb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610870565b6001600160a01b03821661181c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610870565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60008061188b85426126a7565b9050600061189882612344565b9050600073eb585163debb1e637c6d617de3bef99347cd75c8636d5433e68a6005546118c491906126a7565b6040516001600160e01b031960e084901b168152600481019190915260026024820152604401602060405180830381865af4158015611907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192b91906127de565b9050600061193b866103e86126ba565b9050600061194b83898c8561165b565b9050606461195985826126a7565b61196390836125f4565b61196d9190612685565b9b9a5050505050505050505050565b6001600160a01b0382166119d25760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610870565b80600260008282546119e491906126ba565b90915550506001600160a01b03821660009081526020819052604081208054839290611a119084906126ba565b90915550506040518181526001600160a01b038316906000906000805160206128188339815191529060200160405180910390a35050565b33600090815260096020526040812080546001600160a01b0319168155600181018290556002810182905560038101829055600481018290556005018190556006805491611a96836126cd565b9190505550565b6000611aa98484611715565b90506000198114611b115781811015611b045760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610870565b611b118484848403611759565b50505050565b6001600160a01b038316611b7b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610870565b6001600160a01b038216611bdd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610870565b6001600160a01b03831660009081526020819052604090205481811015611c555760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610870565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611c8c9084906126ba565b92505081905550826001600160a01b0316846001600160a01b031660008051602061281883398151915284604051611cc691815260200190565b60405180910390a3611b11565b600082421115611d2657600061016d611cec86856125f4565b611cf990620f42406125f4565b611d039190612685565b90506305f5e100611d1482886125f4565b611d1e9190612685565b9150506116e2565b506000949350505050565b60006113886005541115611e29576000611d5f6116cc611d51600f61219b565b6116a561166a60055461219b565b6001600160401b031690506000611d7962015180836125f4565b611d876201518060646125f4565b611d9191906126ba565b905073eb585163debb1e637c6d617de3bef99347cd75c8637ae2b5c782611dbd620151806103e86125f4565b6040516001600160e01b031960e085901b16815260048101929092526024820152604401602060405180830381865af4158015611dfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e2291906127de565b9250505090565b610bac6201518060646125f4565b60405180608001604052808281526020016201518083611e5791906125f4565b611e6190426126ba565b8152602001838152602001611e74612052565b9052336000908152600a602090815260408083208451815591840151600183015583015160028201556060909201516003909201919091556007805491611eba836127c5565b91905055508160086000828254611ed191906126ba565b90915550505050565b6001600160a01b038216611f3a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610870565b6001600160a01b03821660009081526020819052604090205481811015611fae5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610870565b6001600160a01b0383166000908152602081905260408120838303905560028054849290611fdd9084906126a7565b90915550506040518281526000906001600160a01b0385169060008051602061281883398151915290602001611871565b600080620186a0600554600161202491906125f4565b61202e9190612685565b9050606481111561204157600091505090565b61204c8160646126a7565b91505090565b600080612063605a620151806125f4565b61208d7f0000000000000000000000000000000000000000000000000000000064e8eb0b426126a7565b6120979190612685565b9050806120a6600260146126a7565b10156120b457600291505090565b61204c8160146126a7565b600080620151806120f07f0000000000000000000000000000000000000000000000000000000064e8eb0b426126a7565b6120fa9190612685565b9050610bb88110156121935773eb585163debb1e637c6d617de3bef99347cd75c8636d5433e661212c83610bb86126a7565b6040516001600160e01b031960e084901b168152600481019190915260016024820152604401602060405180830381865af415801561216f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204c91906127de565b600191505090565b6000677fffffffffffffff8211156121b257600080fd5b5060401b90565b60008082600f0b136121ca57600080fd5b6000600f83900b600160401b81126121e4576040918201911d5b600160201b81126121f7576020918201911d5b620100008112612209576010918201911d5b610100811261221a576008918201911d5b6010811261222a576004918201911d5b6004811261223a576002918201911d5b60028112612249576001820191505b603f19820160401b600f85900b607f8490031b6001603f1b5b60008113156122885790800260ff81901c8281029390930192607f011c9060011d612262565b509095945050505050565b6000600f83810b9083900b0260401d60016001607f1b031981128015906122c1575060016001607f1b038113155b6122ca57600080fd5b9392505050565b600081600f0b6000036122e357600080fd5b600082600f0b604085600f0b901b816122fe576122fe61266f565b05905060016001607f1b031981128015906122c1575060016001607f1b038113156122ca57600080fd5b60008082600f0b121561233a57600080fd5b50600f0b60401d90565b6000806123546201518084612685565b9050612362600160076126a7565b8111156123725750606392915050565b6000600160076123838460036126ba565b6001901b6123919190612685565b61239b91906126a7565b604051637ae2b5c760e01b8152600481018290526063602482015290915073eb585163debb1e637c6d617de3bef99347cd75c890637ae2b5c790604401602060405180830381865af41580156123f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e291906127de565b600060208083528351808285015260005b818110156124465785810183015185820160400152820161242a565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461247e57600080fd5b919050565b6000806040838503121561249657600080fd5b61249f83612467565b946020939093013593505050565b6000806000606084860312156124c257600080fd5b6124cb84612467565b92506124d960208501612467565b9150604084013590509250925092565b600080604083850312156124fc57600080fd5b50508035926020909101359150565b60006020828403121561251d57600080fd5b6122ca82612467565b60006020828403121561253857600080fd5b5035919050565b6000806000806080858703121561255557600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561258457600080fd5b61258d83612467565b915061259b60208401612467565b90509250929050565b600181811c908216806125b857607f821691505b6020821081036125d857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610731576107316125de565b6020808252601590820152744352616e6b3a204e6f206d696e742065786973747360581b604082015260600190565b6020808252818101527f4352616e6b3a204d696e74206d61747572697479206e6f742072656163686564604082015260600190565b634e487b7160e01b600052601260045260246000fd5b6000826126a257634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610731576107316125de565b80820180821115610731576107316125de565b6000816126dc576126dc6125de565b506000190190565b60208082526014908201527358454e3a2042656c6f77206d696e207374616b6560601b604082015260600190565b60208082526019908201527858454e3a2042656c6f77206d696e207374616b65207465726d60381b604082015260600190565b60208082526019908201527858454e3a2041626f7665206d6178207374616b65207465726d60381b604082015260600190565b60208082526011908201527058454e3a207374616b652065786973747360781b604082015260600190565b6000602082840312156127b557600080fd5b815180151581146122ca57600080fd5b6000600182016127d7576127d76125de565b5060010190565b6000602082840312156127f057600080fd5b505191905056fed74752b13281df13701575f3a507e9b1242e0b5fb040143211c481c1fce573a6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef404d724a61636b4c6576696e20406c62656c79616576206661697263727970746f2e6f7267a2646970667358221220871d2fbc4bf68f2b5fdf1d4004b8ecac86e2bd5bb3e8aa1d2288c83f345a82be64736f6c63430008110033" +bytecode = "0x60a060405260016005553480156200001657600080fd5b506040518060400160405280600a81526020016958454e2043727970746f60b01b8152506040518060400160405280600581526020016431b12c22a760d91b81525081600390816200006991906200012a565b5060046200007882826200012a565b50504260805250620001f6565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000b057607f821691505b602082108103620000d157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200012557600081815260208120601f850160051c81016020861015620001005750805b601f850160051c820191505b8181101562000121578281556001016200010c565b5050505b505050565b81516001600160401b0381111562000146576200014662000085565b6200015e816200015784546200009b565b84620000d7565b602080601f8311600181146200019657600084156200017d5750858301515b600019600386901b1c1916600185901b17855562000121565b600085815260208120601f198616915b82811015620001c757888601518255948401946001909101908401620001a6565b5085821015620001e65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051612892620002206000396000818161063d0152818161206801526120cb01526128926000f3fe608060405234801561001057600080fd5b50600436106102825760003560e01c80637e7aa62e116101585780637e7aa62e146104735780638979c87c1461047b5780638da7ad2314610483578063909a2ff6146104d857806395d89b41146104e0578063962ca496146104e857806399202454146104f05780639dc29fac146104f85780639ff054df1461050b578063a457c2d71461051e578063a9059cbb14610531578063b0fd1fc214610544578063b21d35f214610557578063b4800cdc14610560578063ba3ec74114610569578063bcfe394f14610571578063c0c6525914610579578063c56f0bab14610581578063ce653d5f146105a1578063dd62ed3e146105b4578063df282331146105b4578063e3af6d0a14610638578063e81917b41461065f578063ed2f236914610668578063f060482914610671578063f340faed14610679578063fed742691461068357600080fd5b80630237893214610287578063069612a5146102a357806306fdde03146102ac578063095ea7b3146102c15780630bfae56b146102e45780630f2e1228146102ec578063110d7fc2146102f457806316f9c8fd146102fc57806318160ddd146103375780631c2440821461033f5780631c560305146103485780631c6f212e1461035d57806323b872dd146103655780632a62d966146102f4578063313ce5671461037857806332870fda14610387578063395093511461038f5780633ccfd60b146103a257806345125715146103aa57806352c7f8dc146103b2578063543d36521461035d5780635bccb4c4146103ba57806361a52a36146103cd5780637010d7a1146103d757806370a082311461042f57806372475f94146104585780637b0472f014610460575b600080fd5b61029061016d81565b6040519081526020015b60405180910390f35b61029060085481565b6102b461068b565b60405161029a9190612419565b6102d46102cf366004612483565b61071d565b604051901515815260200161029a565b610290610737565b610290606381565b610290600081565b610304610748565b60405161029a91908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b600254610290565b61029060055481565b61035b610356366004612483565b6107b9565b005b610290600181565b6102d46103733660046124ad565b610a08565b6040516012815260200161029a565b610290605a81565b6102d461039d366004612483565b610a2c565b61035b610a4e565b610290610ba2565b61035b610bb1565b61035b6103c83660046124e9565b610cc2565b6102906201518081565b6103df610f64565b60405161029a919081516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a0918201519181019190915260c00190565b61029061043d36600461250b565b6001600160a01b031660009081526020819052604090205490565b610290600f81565b61035b61046e3660046124e9565b611009565b610290600281565b61029061117e565b6104b861049136600461250b565b600a6020526000908152604090208054600182015460028301546003909301549192909184565b60408051948552602085019390935291830152606082015260800161029a565b610290606481565b6102b4611188565b610290611197565b6102906111a1565b61035b610506366004612483565b6111ab565b61035b610519366004612526565b61135d565b6102d461052c366004612483565b6115d2565b6102d461053f366004612483565b61164d565b61029061055236600461253f565b61165b565b61029061138881565b61029060065481565b6102b46116ea565b610290611706565b610290600781565b61029061058f36600461250b565b600b6020526000908152604090205481565b6102906105af366004612571565b611715565b6106016105c236600461250b565b6009602052600090815260409020805460018201546002830154600384015460048501546005909501546001600160a01b039094169492939192909186565b604080516001600160a01b0390971687526020870195909552938501929092526060840152608083015260a082015260c00161029a565b6102907f000000000000000000000000000000000000000000000000000000000000000081565b610290610bb881565b61029060075481565b610290611740565b610290620186a081565b610290601481565b60606003805461069a906125a4565b80601f01602080910402602001604051908101604052809291908181526020018280546106c6906125a4565b80156107135780601f106106e857610100808354040283529160200191610713565b820191906000526020600020905b8154815290600101906020018083116106f657829003601f168201915b5050505050905090565b60003361072b818585611759565b60019150505b92915050565b6107456201518060646125f4565b81565b6107736040518060800160405280600081526020016000815260200160008152602001600081525090565b50336000908152600a6020908152604091829020825160808101845281548152600182015492810192909252600281015492820192909252600390910154606082015290565b33600090815260096020908152604091829020825160c08101845281546001600160a01b03908116825260018301549382019390935260028201549381019390935260038101546060840152600481015460808401526005015460a083015283166108795760405162461bcd60e51b815260206004820152602560248201527f4352616e6b3a2043616e6e6f742073686172652077697468207a65726f206164604482015264647265737360d81b60648201526084015b60405180910390fd5b600082116108c95760405162461bcd60e51b815260206004820181905260248201527f4352616e6b3a2043616e6e6f74207368617265207a65726f2070657263656e746044820152606401610870565b606582106109195760405162461bcd60e51b815260206004820181905260248201527f4352616e6b3a2043616e6e6f74207368617265203130302b2070657263656e746044820152606401610870565b600081606001511161093d5760405162461bcd60e51b81526004016108709061260b565b806040015142116109605760405162461bcd60e51b81526004016108709061263a565b600061098382606001518360200151846040015185608001518660a0015161187e565b61099590670de0b6b3a76400006125f4565b9050600060646109a585846125f4565b6109af9190612685565b905060006109bd82846126a7565b90506109ca335b8261197c565b6109d4868361197c565b6109dc611a49565b60405183815233906000805160206127f8833981519152906020015b60405180910390a2505050505050565b600033610a16858285611a9d565b610a21858585611b17565b506001949350505050565b60003361072b818585610a3f8383611715565b610a4991906126ba565b611759565b336000908152600a6020908152604091829020825160808101845281548152600182015492810192909252600281015492820183905260030154606082015290610ad15760405162461bcd60e51b815260206004820152601460248201527358454e3a206e6f207374616b652065786973747360601b6044820152606401610870565b6000610aef8260400151836000015184602001518560600151611cd3565b600780549192506000610b01836126cd565b9190505550816040015160086000828254610b1c91906126a7565b90915550610b3b905033828460400151610b3691906126ba565b61197c565b60408083015181519081526020810183905233917f92ccf450a286a957af52509bc1c9939d1a6a481783e142e41e2499f0bb66ebc6910160405180910390a25050336000908152600a60205260408120818155600181018290556002810182905560030155565b6000610bac611d31565b905090565b33600090815260096020908152604091829020825160c08101845281546001600160a01b031681526001820154928101929092526002810154928201929092526003820154606082018190526004830154608083015260059092015460a082015290610c2f5760405162461bcd60e51b81526004016108709061260b565b80604001514211610c525760405162461bcd60e51b81526004016108709061263a565b6000610c7582606001518360200151846040015185608001518660a0015161187e565b610c8790670de0b6b3a76400006125f4565b9050610c92336109c4565b610c9a611a49565b60405181815233906000805160206127f8833981519152906020015b60405180910390a25050565b33600090815260096020908152604091829020825160c08101845281546001600160a01b03168152600182015492810192909252600281015492820192909252600382015460608201526004820154608082015260059091015460a082015260658310610d715760405162461bcd60e51b815260206004820181905260248201527f4352616e6b3a2043616e6e6f74207368617265203e3130302070657263656e746044820152606401610870565b6000816060015111610d955760405162461bcd60e51b81526004016108709061260b565b80604001514211610db85760405162461bcd60e51b81526004016108709061263a565b6000610ddb82606001518360200151846040015185608001518660a0015161187e565b610ded90670de0b6b3a76400006125f4565b905060006064610dfd86846125f4565b610e079190612685565b90506000610e1582846126a7565b9050610e20336109c4565b610e28611a49565b60405183815233906000805160206127f88339815191529060200160405180910390a260008211610e6b5760405162461bcd60e51b8152600401610870906126e4565b6001610e7a62015180826125f4565b610e8491906126a7565b610e9162015180876125f4565b11610eae5760405162461bcd60e51b815260040161087090612712565b610ebd620151806103e86125f4565b610ec89060016126ba565b610ed562015180876125f4565b10610ef25760405162461bcd60e51b815260040161087090612745565b336000908152600a602052604090206002015415610f225760405162461bcd60e51b815260040161087090612778565b610f2c8286611e37565b604080518381526020810187905233917f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee9091016109f8565b610fa66040518060c0016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081525090565b5033600090815260096020908152604091829020825160c08101845281546001600160a01b03168152600182015492810192909252600281015492820192909252600382015460608201526004820154608082015260059091015460a082015290565b816110133361043d565b101561105b5760405162461bcd60e51b815260206004820152601760248201527658454e3a206e6f7420656e6f7567682062616c616e636560481b6044820152606401610870565b6000821161107b5760405162461bcd60e51b8152600401610870906126e4565b600161108a62015180826125f4565b61109491906126a7565b6110a162015180836125f4565b116110be5760405162461bcd60e51b815260040161087090612712565b6110cd620151806103e86125f4565b6110d89060016126ba565b6110e562015180836125f4565b106111025760405162461bcd60e51b815260040161087090612745565b336000908152600a6020526040902060020154156111325760405162461bcd60e51b815260040161087090612778565b61113c3383611eda565b6111468282611e37565b604080518381526020810183905233917f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee909101610cb6565b6000610bac61200e565b60606004805461069a906125a4565b6000610bac612052565b6000610bac6120bf565b600081116111f35760405162461bcd60e51b8152602060048201526015602482015274109d5c9b8e8810995b1bddc81b5a5b881b1a5b5a5d605a1b6044820152606401610870565b336040516301ffc9a760e01b815263543746b160e01b60048201526001600160a01b0391909116906301ffc9a790602401602060405180830381865afa158015611241573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126591906127a3565b6112b15760405162461bcd60e51b815260206004820152601e60248201527f4275726e3a206e6f74206120737570706f7274656420636f6e747261637400006044820152606401610870565b6112bc823383611a9d565b6112c68282611eda565b6001600160a01b0382166000908152600b6020526040812080548392906112ee9084906126ba565b9091555033905060405163543746b160e01b81526001600160a01b03848116600483015260248201849052919091169063543746b190604401600060405180830381600087803b15801561134157600080fd5b505af1158015611355573d6000803e3d6000fd5b505050505050565b600061136c62015180836125f4565b9050600161137d62015180826125f4565b61138791906126a7565b81116113d15760405162461bcd60e51b815260206004820152601960248201527821a930b7359d102a32b936903632b9b9903a3430b71036b4b760391b6044820152606401610870565b6113d9611d31565b6113e49060016126ba565b81106114415760405162461bcd60e51b815260206004820152602660248201527f4352616e6b3a205465726d206d6f7265207468616e2063757272656e74206d6160448201526578207465726d60d01b6064820152608401610870565b33600090815260096020526040902060030154156114a15760405162461bcd60e51b815260206004820152601f60248201527f4352616e6b3a204d696e7420616c726561647920696e2070726f6772657373006044820152606401610870565b60006040518060c001604052806114b53390565b6001600160a01b03168152602081018590526040016114d484426126ba565b815260200160055481526020016114e96120bf565b81526020016114f661200e565b9052336000908152600960209081526040808320845181546001600160a01b0319166001600160a01b039091161781559184015160018301558301516002820155606083015160038201556080830151600482015560a08301516005909101556006805492935090611567836127c5565b91905055506115733390565b6001600160a01b03167fe9149e1b5059238baed02fa659dbf4bd932fbcf760a431330df4d934bc942f3784600560008154809291906115b1906127c5565b909155506040805192835260208301919091520160405180910390a2505050565b600033816115e08286611715565b9050838110156116405760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610870565b610a218286868403611759565b60003361072b818585611b17565b60008061167261166a8761219b565b600f0b6121b9565b905060006116ae6116828561219b565b6116a561168e8861219b565b6116a561169a8b61219b565b600f88900b90612293565b600f0b90612293565b90506116d46116cc6116c16103e861219b565b600f84900b906122d1565b600f0b612328565b6001600160401b0316925050505b949350505050565b6040518060600160405280602581526020016128386025913981565b610745620151806103e86125f4565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600161174f62015180826125f4565b61074591906126a7565b6001600160a01b0383166117bb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610870565b6001600160a01b03821661181c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610870565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60008061188b85426126a7565b9050600061189882612344565b9050600073eb585163debb1e637c6d617de3bef99347cd75c8636d5433e68a6005546118c491906126a7565b6040516001600160e01b031960e084901b168152600481019190915260026024820152604401602060405180830381865af4158015611907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192b91906127de565b9050600061193b866103e86126ba565b9050600061194b83898c8561165b565b9050606461195985826126a7565b61196390836125f4565b61196d9190612685565b9b9a5050505050505050505050565b6001600160a01b0382166119d25760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610870565b80600260008282546119e491906126ba565b90915550506001600160a01b03821660009081526020819052604081208054839290611a119084906126ba565b90915550506040518181526001600160a01b038316906000906000805160206128188339815191529060200160405180910390a35050565b33600090815260096020908152604091829020825160c08101845281546001600160a01b03168152600182015492810192909252600281015492820192909252600382015460608201526004820154608082015260059091015460a082015290565b816110133361043d565b101561105b5760405162461bcd60e51b815260206004820152601760248201527658454e3a206e6f7420656e6f7567682062616c616e636560481b6044820152606401610870565b6000821161107b5760405162461bcd60e51b8152600401610870906126e4565b600161108a62015180826125f4565b61109491906126a7565b6110a162015180836125f4565b116110be5760405162461bcd60e51b815260040161087090612712565b6110cd620151806103e86125f4565b6110d89060016126ba565b6110e562015180836125f4565b106111025760405162461bcd60e51b815260040161087090612745565b336000908152600a6020526040902060020154156111325760405162461bcd60e51b815260040161087090612778565b61113c3383611eda565b6111468282611e37565b604080518381526020810183905233917f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee909101610cb6565b6000610bac61200e565b60606004805461069a906125a4565b6000610bac612052565b6000610bac6120bf565b600081116111f35760405162461bcd60e51b8152602060048201526015602482015274109d5c9b8e8810995b1bddc81b5a5b881b1a5b5a5d605a1b6044820152606401610870565b336040516301ffc9a760e01b815263543746b160e01b60048201526001600160a01b0391909116906301ffc9a790602401602060405180830381865afa158015611241573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126591906127a3565b6112b15760405162461bcd60e51b815260206004820152601e60248201527f4275726e3a206e6f74206120737570706f7274656420636f6e747261637400006044820152606401610870565b6112bc823383611a9d565b6112c68282611eda565b6001600160a01b0382166000908152600b6020526040812080548392906112ee9084906126ba565b9091555033905060405163543746b160e01b81526001600160a01b03848116600483015260248201849052919091169063543746b190604401600060405180830381600087803b15801561134157600080fd5b505af1158015611355573d6000803e3d6000fd5b505050505050565b600061136c62015180836125f4565b9050600161137d62015180826125f4565b61138791906126a7565b81116113d15760405162461bcd60e51b815260206004820152601960248201527821a930b7359d102a32b936903632b9b9903a3430b71036b4b760391b6044820152606401610870565b6113d9611d31565b6113e49060016126ba565b81106114415760405162461bcd60e51b815260206004820152602660248201527f4352616e6b3a205465726d206d6f7265207468616e2063757272656e74206d6160448201526578207465726d60d01b6064820152608401610870565b33600090815260096020526040902060030154156114a15760405162461bcd60e51b815260206004820152601f60248201527f4352616e6b3a204d696e7420616c726561647920696e2070726f6772657373006044820152606401610870565b60006040518060c001604052806114b53390565b6001600160a01b03168152602081018590526040016114d484426126ba565b815260200160055481526020016114e96120bf565b81526020016114f661200e565b9052336000908152600960209081526040808320845181546001600160a01b0319166001600160a01b039091161781559184015160018301558301516002820155606083015160038201556080830151600482015560a08301516005909101556006805492935090611567836127c5565b91905055506115733390565b6001600160a01b03167fe9149e1b5059238baed02fa659dbf4bd932fbcf760a431330df4d934bc942f3784600560008154809291906115b1906127c5565b909155506040805192835260208301919091520160405180910390a2505050565b600033816115e08286611715565b9050838110156116405760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610870565b610a218286868403611759565b60003361072b818585611b17565b60008061167261166a8761219b565b600f0b6121b9565b905060006116ae6116828561219b565b6116a561168e8861219b565b6116a561169a8b61219b565b600f88900b90612293565b600f0b90612293565b90506116d46116cc6116c16103e861219b565b600f84900b906122d1565b600f0b612328565b6001600160401b0316925050505b949350505050565b6040518060600160405280602581526020016128386025913981565b610745620151806103e86125f4565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166117bb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610870565b6001600160a01b038216611bdd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610870565b6001600160a01b03831660009081526020819052604090205481811015611c555760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610870565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611c8c9084906126ba565b92505081905550826001600160a01b0316846001600160a01b031660008051602061281883398151915284604051611cc691815260200190565b60405180910390a3611b11565b600082421115611d2657600061016d611cec86856125f4565b611cf990620f42406125f4565b611d039190612685565b90506305f5e100611d1482886125f4565b611d1e9190612685565b9150506116e2565b506000949350505050565b60006113886005541115611e29576000611d5f6116cc611d51600f61219b565b6116a561166a60055461219b565b6001600160401b031690506000611d7962015180836125f4565b611d876201518060646125f4565b611d9191906126ba565b905073eb585163debb1e637c6d617de3bef99347cd75c8637ae2b5c782611dbd620151806103e86125f4565b6040516001600160e01b031960e085901b16815260048101929092526024820152604401602060405180830381865af4158015611dfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e2291906127de565b9250505090565b610bac6201518060646125f4565b60405180608001604052808281526020016201518083611e5791906125f4565b611e6190426126ba565b8152602001838152602001611e74612052565b9052336000908152600a602090815260408083208451815591840151600183015583015160028201556060909201516003909101556007805491611eba836127c5565b91905055508160086000828254611ed191906126ba565b90915550505050565b6001600160a01b038216611f3a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610870565b6001600160a01b03821660009081526020819052604090205481811015611fae5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610870565b6001600160a01b0383166000908152602081905260408120838303905560028054849290611fdd9084906126a7565b90915550506040518281526000906001600160a01b0385169060008051602061281883398151915290602001611871565b600080620186a0600554600161202491906125f4565b61202e9190612685565b9050606481111561204157600091505090565b61204c8160646126a7565b91505090565b600080612063605a620151806125f4565b61208d7f0000000000000000000000000000000000000000000000000000000000000000426126a7565b6120979190612685565b9050806120a6600260146126a7565b10156120b457600291505090565b61204c8160146126a7565b600080620151806120f07f0000000000000000000000000000000000000000000000000000000000000000426126a7565b6120fa9190612685565b9050610bb88110156121935773eb585163debb1e637c6d617de3bef99347cd75c8636d5433e661212c83610bb86126a7565b6040516001600160e01b031960e084901b168152600481019190915260016024820152604401602060405180830381865af415801561216f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204c91906127de565b600191505090565b6000677fffffffffffffff8211156121b257600080fd5b5060401b90565b60008082600f0b136121ca57600080fd5b6000600f83900b600160401b81126121e4576040918201911d5b600160201b81126121f7576020918201911d5b620100008112612209576010918201911d5b610100811261221a576008918201911d5b6010811261222a576004918201911d5b6004811261223a576002918201911d5b60028112612249576001820191505b603f19820160401b600f85900b607f8490031b6001603f1b5b60008113156122885790800260ff81901c8281029390930192607f011c9060011d612262565b509095945050505050565b6000600f83810b9083900b0260401d60016001607f1b031981128015906122c1575060016001607f1b038113155b6122ca57600080fd5b9392505050565b600081600f0b6000036122e357600080fd5b600082600f0b604085600f0b901b816122fe576122fe61266f565b05905060016001607f1b031981128015906122c1575060016001607f1b038113156122ca57600080fd5b9392505050565b6000806123546201518084612685565b9050612362600160076126a7565b8111156123725750606392915050565b6000600160076123838460036126ba565b6001901b6123919190612685565b61239b91906126a7565b604051637ae2b5c760e01b8152600481018290526063602482015290915073eb585163debb1e637c6d617de3bef99347cd75c890637ae2b5c790604401602060405180830381865af41580156123f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e291906127de565b600060208083528351808285015260005b818110156124465785810183015185820160400152820161242a565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461247e57600080fd5b919050565b6000806040838503121561249657600080fd5b61249f83612467565b946020939093013593505050565b600080600080608085870312156124c257600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156124f057600080fd5b50508035926020909101359150565b60006020828403121561251157600080fd5b5035919050565b6000806000806080858703121561253057600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561255957600080fd5b61256283612467565b915061257060208401612467565b90509250929050565b600181811c9082168061258d57607f821691505b6020821081036125ad57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610731576107316125de565b6020808252601590820152744352616e6b3a204e6f206d696e742065786973747360581b604082015260600190565b60208082526019908201527858454e3a2042656c6f77206d696e207374616b65207465726d60381b604082015260600190565b634e487b7160e01b600052601260045260246000fd5b6000826126a257634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610731576107316125de565b80820180821115610731576107316125de565b6000816126dc576126dc6125de565b506000190190565b60208082526014908201527358454e3a2042656c6f77206d696e207374616b6560601b604082015260600190565b60208082526019908201527858454e3a2042656c6f77206d696e207374616b65207465726d60381b604082015260600190565b60208082526019908201527858454e3a2041626f7665206d6178207374616b65207465726d60381b604082015260600190565b60208082526011908201527058454e3a207374616b652065786973747360781b604082015260600190565b6000602082840312156127b557600080fd5b815180151581146122ca57600080fd5b6000602082840312156127f057600080fd5b505191905056fed74752b13281df13701575f3a507e9b1242e0b5fb040143211c481c1fce573a6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef404d724a61636b4c6576696e20406c62656c79616576206661697263727970746f2e6f7267a2646970667358221220871d2fbc4bf68f2b5fdf1d4004b8ecac86e2bd5bb3e8aa1d2288c83f345a82be64736f6c63430008110033" [[create]] name = "XENTorrent" from_pool = "admin" -bytecode = "0x608060405234801561001057600080fd5b506004361061021f5760003560e01c806370a082311161012c57806370a08231146103fc57806371141a581461040f57806374a1dff21461043657806389776eb0146104495780638da5cb5b1461045c578063928dd2a71461048257806395d89b411461048a57806398bdf6f5146104925780639dc29fac1461049b578063a126ad1e146104ae578063a1a53fa1146104b8578063a22cb465146104d8578063b88d4fde146104eb578063ba3ec741146104fe578063bd33303314610506578063c87b56dd14610526578063d0d5f5b414610539578063df0030ef1461054c578063e3af6d0a1461055f578063e985e9c514610586578063ecef920114610599578063ee8743d7146105ac578063f5878b9b146105c157600080fd5b806301bb41161461022457806301ffc9a714610239578063044db8ba1461026157806306fdde0314610278578063081812fc1461028d578063095ea7b3146102ad57806319cba6b4146102c057806323b872dd146102d55780632a55205a146102e857806341b169f31461030957806341f434341461031257806342842e0e14610327578063443aa5331461033a578063498a4c2d1461035a5780634d4b2be41461038157806353b18de41461038a578063543746b11461039d57806355ee08ba146103b0578063572b6c05146103b85780635c41d2fe146103cb5780636352211e146103de578063700107af146103f1575b600080fd5b6102376102323660046133b8565b6105d4565b005b61024c6102473660046133e7565b610727565b60405190151581526020015b60405180910390f35b61026a6101f481565b604051908152602001610258565b610280610788565b6040516102589190613454565b6102a061029b3660046133b8565b61081a565b6040516102589190613467565b6102376102bb366004613490565b610841565b6102c8610855565b60405161025891906134bc565b6102376102e3366004613500565b6108d6565b6102fb6102f6366004613541565b610901565b604051610258929190613563565b61026a611d4c81565b6102a06daaeb6d7670e522a718067333cd4e81565b610237610335366004613500565b610946565b61026a6103483660046133b8565b600d6020526000908152604090205481565b61026a7f000000000000000000000000000000000000000000000000000000000000000081565b61026a61271181565b61026a61039836600461357c565b61096b565b6102376103ab366004613490565b610d36565b61026a606381565b61024c6103c63660046135a8565b610f29565b6102376103d93660046135a8565b610f3d565b6102a06103ec3660046133b8565b611029565b61026a6301e1338081565b61026a61040a3660046135a8565b61105e565b6102a07f000000000000000000000000ffcbf84650ce02dafe96926b37a0ac5e34932fa581565b61026a6104443660046133b8565b6110e4565b61026a6104573660046133b8565b611105565b7f000000000000000000000000c73fc08c931efe3fce850c09278472e8a81c2e056102a0565b610237611115565b610280611161565b61026a60075481565b6102376104a9366004613490565b611170565b61026a62093a8081565b61026a6104c63660046133b8565b600b6020526000908152604090205481565b6102376104e63660046135d3565b6114dd565b6102376104f9366004613679565b6114f1565b61028061151e565b61026a6105143660046133b8565b600c6020526000908152604090205481565b6102806105343660046133b8565b61153a565b61026a6105473660046133b8565b611717565b61023761055a3660046135a8565b611727565b61026a7f0000000000000000000000000000000000000000000000000000000064e8ec1581565b61024c610594366004613727565b6117ec565b61026a6105a7366004613541565b61181a565b61024c6105ba3660046133b8565b6127111190565b6102376105cf366004613755565b611986565b336001600160a01b037f000000000000000000000000379002701bf6f2862e3dfdd1f96d3c5e1bf450b616146106255760405162461bcd60e51b815260040161061c9061377a565b60405180910390fd5b60008160405160240161063a91815260200190565b60408051601f198184030181529181526020820180516001600160e01b0316639ff054df60e01b179052519091506000906001600160a01b037f000000000000000000000000ffcbf84650ce02dafe96926b37a0ac5e34932fa516906106a19084906137c7565b6000604051808303816000865af19150503d80600081146106de576040519150601f19603f3d011682016040523d82523d6000602084013e6106e3565b606091505b50509050806107225760405162461bcd60e51b815260206004820152600b60248201526a18d85b1b0819985a5b195960aa1b604482015260640161061c565b505050565b60006001600160e01b0319821663543746b160e01b148061075857506001600160e01b0319821663152a902d60e11b145b8061077357506001600160e01b0319821663572b6c0560e01b145b80610782575061078282611e3d565b92915050565b606060018054610797906137e3565b80601f01602080910402602001604051908101604052809291908181526020018280546107c3906137e3565b80156108105780601f106107e557610100808354040283529160200191610810565b820191906000526020600020905b8154815290600101906020018083116107f357829003601f168201915b5050505050905090565b600061082582611e8d565b506000908152600560205260409020546001600160a01b031690565b8161084b81611eb5565b6107228383611f5d565b6060600f600061086361207f565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561081057602002820191906000526020600020905b8154815260200190600101908083116108b9575050505050905090565b826001600160a01b03811633146108f0576108f033611eb5565b6108fb84848461208e565b50505050565b7f000000000000000000000000c73fc08c931efe3fce850c09278472e8a81c2e0560006127106109336101f485613833565b61093d9190613860565b90509250929050565b826001600160a01b03811633146109605761096033611eb5565b6108fb8484846120c0565b60007f000000000000000000000000000000000000000000000000000000000000000043116109ac5760405162461bcd60e51b815260040161061c90613874565b600019600e54146109cf5760405162461bcd60e51b815260040161061c906138a3565b600084116109ef5760405162461bcd60e51b815260040161061c906138d7565b60008311610a0f5760405162461bcd60e51b815260040161061c90613905565b60016008600181548110610a2557610a25613932565b9060005260206000200154610a3a9190613948565b8211610a885760405162461bcd60e51b815260206004820152601d60248201527f58454e46543a206e6f7420656e6f756768206275726e20616d6f756e74000000604482015260640161061c565b60007f000000000000000000000000ffcbf84650ce02dafe96926b37a0ac5e34932fa56001600160a01b03166370a08231610ac161207f565b6040518263ffffffff1660e01b8152600401610add9190613467565b602060405180830381865afa158015610afa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1e919061395b565b9050610b2b600184613948565b8111610b795760405162461bcd60e51b815260206004820152601d60248201527f58454e46543a206e6f7420656e6f7567682058454e2062616c616e6365000000604482015260640161061c565b60007f000000000000000000000000ffcbf84650ce02dafe96926b37a0ac5e34932fa56001600160a01b031663dd62ed3e610bb261207f565b306040518363ffffffff1660e01b8152600401610bd0929190613974565b602060405180830381865afa158015610bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c11919061395b565b9050610c1e600185613948565b8111610c845760405162461bcd60e51b815260206004820152602f60248201527f58454e46543a206e6f7420656e6f7567682058454e2062616c616e636520617060448201526e383937bb32b2103337b910313ab93760891b606482015260840161061c565b610c8e86856120db565b600e81905550610ca28686600e5487612313565b7f000000000000000000000000ffcbf84650ce02dafe96926b37a0ac5e34932fa56001600160a01b0316639dc29fac610cd961207f565b866040518363ffffffff1660e01b8152600401610cf7929190613563565b600060405180830381600087803b158015610d1157600080fd5b505af1158015610d25573d6000803e3d6000fd5b5050600e5498975050505050505050565b600019600e5403610d895760405162461bcd60e51b815260206004820152601d60248201527f58454e46543a20696c6c6567616c2063616c6c6261636b207374617465000000604482015260640161061c565b336001600160a01b037f000000000000000000000000ffcbf84650ce02dafe96926b37a0ac5e34932fa51614610e015760405162461bcd60e51b815260206004820152601e60248201527f58454e46543a20696c6c6567616c2063616c6c6261636b2063616c6c65720000604482015260640161061c565b600e546001600160a01b0383166000908152600f60205260409020610e25916124ab565b600e80546000908152600c6020526040902082905554610e46908390612525565b600e546000908152600b6020908152604080832054600d9092529182902054915163346ba94160e01b815260048101929092526001600160a01b038416917ffbb2077593b3594fd0ac359a2d898268191a74843aaf1ba3f517b5514a1b07119190730a252663dbcc0b073063d6420a40319e438cfa599063346ba94190602401602060405180830381865af4158015610ee3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f07919061395b565b6040805192835260208301919091520160405180910390a25050600019600e55565b6000546001600160a01b0391821691161490565b336001600160a01b037f000000000000000000000000c73fc08c931efe3fce850c09278472e8a81c2e051614610fae5760405162461bcd60e51b81526020600482015260166024820152752c22a7232a1d103737ba1030b7103232b83637bcb2b960511b604482015260640161061c565b6000546001600160a01b0316156110075760405162461bcd60e51b815260206004820152601f60248201527f58454e46543a20466f7277617264657220697320616c72656164792073657400604482015260640161061c565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000818152600360205260408120546001600160a01b0316806107825760405162461bcd60e51b815260040161061c9061398e565b60006001600160a01b0382166110c85760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161061c565b506001600160a01b031660009081526004602052604090205490565b600981815481106110f457600080fd5b600091825260209091200154905081565b600a81815481106110f457600080fd5b336001600160a01b037f000000000000000000000000379002701bf6f2862e3dfdd1f96d3c5e1bf450b6161461115d5760405162461bcd60e51b815260040161061c9061377a565b6000ff5b606060028054610797906137e3565b7f000000000000000000000000000000000000000000000000000000000000000043116111af5760405162461bcd60e51b815260040161061c90613874565b600019600e54146111d25760405162461bcd60e51b815260040161061c906139c0565b6111df6001600019613948565b600e556111ea61207f565b6040516301ffc9a760e01b815263543746b160e01b60048201526001600160a01b0391909116906301ffc9a790602401602060405180830381865afa158015611237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125b91906139f4565b6112b35760405162461bcd60e51b8152602060048201526024808201527f58454e4654206275726e3a206e6f74206120737570706f7274656420636f6e746044820152631c9858dd60e21b606482015260840161061c565b6001600160a01b0382166113135760405162461bcd60e51b815260206004820152602160248201527f58454e4654206275726e3a20696c6c6567616c206f776e6572206164647265736044820152607360f81b606482015260840161061c565b600081116113615760405162461bcd60e51b815260206004820152601b60248201527a161153919508189d5c9b8e881a5b1b1959d85b081d1bdad95b9259602a1b604482015260640161061c565b61137261136c61207f565b8261253f565b6113ca5760405162461bcd60e51b8152602060048201526024808201527f58454e4654206275726e3a206e6f7420616e20617070726f766564206f70657260448201526330ba37b960e11b606482015260840161061c565b816001600160a01b03166113dd82611029565b6001600160a01b0316146114415760405162461bcd60e51b815260206004820152602560248201527f58454e4654206275726e3a2075736572206973206e6f7420746f6b656e49642060448201526437bbb732b960d91b606482015260840161061c565b6001600160a01b0382166000908152600f60205260409020611463908261259e565b61146c81612683565b61147461207f565b6001600160a01b031663543746b183836040518363ffffffff1660e01b81526004016114a1929190613563565b600060405180830381600087803b1580156114bb57600080fd5b505af11580156114cf573d6000803e3d6000fd5b5050600019600e5550505050565b816114e781611eb5565b6107228383612720565b836001600160a01b038116331461150b5761150b33611eb5565b61151785858585612732565b5050505050565b604051806060016040528060258152602001613e5d6025913981565b6000818152600b6020908152604080832054600d835281842054600c90935292205460609291908261156b57600080fd5b60006115768661276b565b604051631b9345fd60e01b81526004810188905260248101869052604481018590526001600160a01b037f000000000000000000000000ffcbf84650ce02dafe96926b37a0ac5e34932fa51660648201526084810184905261163b9073af18644083151cf57f914cccc23c42a1892c218e90631b9345fd9060a401600060405180830381865af415801561160e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116369190810190613a11565b61286b565b604051633c4a25e960e21b815260048101879052602481018590526044810186905273af18644083151cf57f914cccc23c42a1892c218e9063f12897a490606401600060405180830381865af4158015611699573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116c19190810190613a11565b6040516020016116d393929190613a87565b60405160208183030381529060405290506116ed8161286b565b6040516020016116fd9190613ba5565b604051602081830303815290604052945050505050919050565b600881815481106110f457600080fd5b336001600160a01b037f000000000000000000000000379002701bf6f2862e3dfdd1f96d3c5e1bf450b6161461176f5760405162461bcd60e51b815260040161061c9061377a565b6000816064604051602401611785929190613563565b60408051601f198184030181529181526020820180516001600160e01b0316631c56030560e01b179052519091506000906001600160a01b037f000000000000000000000000ffcbf84650ce02dafe96926b37a0ac5e34932fa516906106a19084906137c7565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b60007f0000000000000000000000000000000000000000000000000000000000000000431161185b5760405162461bcd60e51b815260040161061c90613874565b600019600e541461187e5760405162461bcd60e51b815260040161061c906138a3565b6000831161189e5760405162461bcd60e51b815260040161061c906138d7565b600082116118be5760405162461bcd60e51b815260040161061c90613905565b6118c98360006120db565b600e819055506118de8383600e546000612313565b61190f600e54600f60006118f061207f565b6001600160a01b031681526020810191909152604001600020906124ab565b61192261191a61207f565b600e54612525565b61192a61207f565b6001600160a01b03167ffbb2077593b3594fd0ac359a2d898268191a74843aaf1ba3f517b5514a1b0711848460405161196d929190918252602082015260400190565b60405180910390a25050600e8054600019909155919050565b7f000000000000000000000000000000000000000000000000000000000000000043116119c55760405162461bcd60e51b815260040161061c90613874565b600019600e54146119e85760405162461bcd60e51b815260040161061c906139c0565b6119f56001600019613948565b600e55611a0061207f565b6001600160a01b0316611a1283611029565b6001600160a01b031614611a615760405162461bcd60e51b81526020600482015260166024820152752c22a7232a1d1024b731b7b93932b1ba1037bbb732b960511b604482015260640161061c565b6001600160a01b038116611ab05760405162461bcd60e51b815260206004820152601660248201527558454e46543a20496c6c6567616c206164647265737360501b604482015260640161061c565b6000828152600d60205260409081902054905163e90cdc8960e01b81526004810191909152730a252663dbcc0b073063d6420a40319e438cfa599063e90cdc8990602401602060405180830381865af4158015611b11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3591906139f4565b15611b7c5760405162461bcd60e51b815260206004820152601760248201527616115391950e88105b1c9958591e481c995919595b5959604a1b604482015260640161061c565b604051600090611bc090733d602d80600a3d3981f3363d3d373d3d3d363d7360601b903060601b906e5af43d82803e903d91602b57fd5bf360881b90602001613bea565b60408051601f198184030181529181526000858152600b6020529081205491925090611bed906001613c18565b9050600083604051602401611c029190613467565b60408051601f19818403018152918152602080830180516001600160e01b0390811663df0030ef60e01b1790915282516004815260248101909352908201805190911663928dd2a760e01b17905290915060015b83811015611dbd576040805160208082018490528183018a90528251808303840181526060808401855281519183019190912089518a8401206001600160f81b031960808601523090921b6001600160601b03191660818501526095840181905260b5808501929092528451808503909201825260d5909301909352825192810192909220855191926000928291849182918a0182855af1925082611d495760405162461bcd60e51b815260206004820152602360248201527f58454e46543a204572726f72207768696c6520636c61696d696e67207265776160448201526272647360e81b606482015260840161061c565b6000808751602089016000855af1925082611da65760405162461bcd60e51b815260206004820181905260248201527f58454e46543a204572726f72207768696c6520706f776572696e6720646f776e604482015260640161061c565b505050508080611db590613c2b565b915050611c56565b506000868152600d6020526040902080546001179055611ddb61207f565b6001600160a01b03167f7ae39cb5fb0bebb7775f35a0009e0c94f59c2e40c8967af20842619edac4694d8787604051611e279291909182526001600160a01b0316602082015260400190565b60405180910390a25050600019600e5550505050565b60006001600160e01b031982166380ac58cd60e01b1480611e6e57506001600160e01b03198216635b5e139f60e01b145b8061078257506301ffc9a760e01b6001600160e01b0319831614610782565b611e96816129bd565b611eb25760405162461bcd60e51b815260040161061c9061398e565b50565b6daaeb6d7670e522a718067333cd4e3b15611eb257604051633185c44d60e21b81526daaeb6d7670e522a718067333cd4e9063c617113490611efd9030908590600401613974565b602060405180830381865afa158015611f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3e91906139f4565b611eb25780604051633b79c77360e21b815260040161061c9190613467565b6000611f6882611029565b9050806001600160a01b0316836001600160a01b031603611fd55760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161061c565b806001600160a01b0316611fe761207f565b6001600160a01b0316148061200357506120038161059461207f565b6120755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161061c565b61072283836129da565b6000612089612a48565b905090565b61209961136c61207f565b6120b55760405162461bcd60e51b815260040161061c90613c44565b610722838383612a6a565b610722838383604051806020016040528060008152506114f1565b6000806120e783612c05565b9050806001036121a757606384116121115760405162461bcd60e51b815260040161061c90613c92565b61213f6301e133807f0000000000000000000000000000000000000000000000000000000064e8ec15613c18565b421061218b5760405162461bcd60e51b815260206004820152601b60248201527a16115391950e881b1a5b5a5d1959081d1a5b5948195e1c1a5c9959602a1b604482015260640161061c565b6007805490600061219b83613c2b565b91905055915050610782565b60018111156122f757326121b961207f565b6001600160a01b0316146122215760405162461bcd60e51b815260206004820152602960248201527f58454e46543a206f6e6c7920454f4120616c6c6f77656420666f7220746869736044820152682063617465676f727960b81b606482015260840161061c565b606384116122415760405162461bcd60e51b815260040161061c90613c92565b6009818154811061225457612254613932565b9060005260206000200154600161226b9190613c18565b600a828154811061227e5761227e613932565b9060005260206000200154106122ce5760405162461bcd60e51b815260206004820152601560248201527416115391950e8818db185cdcc81cdbdb19081bdd5d605a1b604482015260640161061c565b600a81815481106122e1576122e1613932565b6000918252602082200180549161219b83613c2b565b6007805490600061230783613c2b565b90915550949350505050565b60405160009061235790733d602d80600a3d3981f3363d3d373d3d3d363d7360601b903060601b906e5af43d82803e903d91602b57fd5bf360881b90602001613bea565b604051602081830303815290604052905060008460405160240161237d91815260200190565b60408051601f198184030181529190526020810180516001600160e01b031662dda08b60e11b179052905060008060015b6123b9896001613c18565b811015612490576040805160208101839052908101889052600090606001604051602081830303815290604052805190602001209050808651602088016000f593506000808651602088016000885af19250826124585760405162461bcd60e51b815260206004820181905260248201527f58454e46543a204572726f72207768696c6520636c61696d696e672072616e6b604482015260640161061c565b8160010361247d5761246d848b8b8a8c612ca2565b6000898152600d60205260409020555b508061248881613c2b565b9150506123ae565b50505060009384525050600b60205250604090209190915550565b612504828054806020026020016040519081016040528092919081815260200182805480156124f957602002820191906000526020600020905b8154815260200190600101908083116124e5575b505050505082612e59565b600003612521578154600181018355600083815260209020018190555b5050565b612521828260405180602001604052806000815250612ea1565b60008061254b83611029565b9050806001600160a01b0316846001600160a01b03161480612572575061257281856117ec565b806125965750836001600160a01b031661258b8461081a565b6001600160a01b0316145b949350505050565b60006125f9838054806020026020016040519081016040528092919081815260200182805480156125ee57602002820191906000526020600020905b8154815260200190600101908083116125da575b505050505083612e59565b90508015610722578254839061261190600190613948565b8154811061262157612621613932565b90600052602060002001548360018361263a9190613948565b8154811061264a5761264a613932565b90600052602060002001819055508280548061266857612668613cc6565b60019003818190600052602060002001600090559055505050565b600061268e82611029565b905061269c81600084612ed4565b6126a76000836129da565b6001600160a01b03811660009081526004602052604081208054600192906126d0908490613948565b909155505060008281526003602052604080822080546001600160a01b0319169055518391906001600160a01b03841690600080516020613e3d833981519152908390a461252181600084612ff5565b61252161272b61207f565b8383613039565b61274361273d61207f565b8361253f565b61275f5760405162461bcd60e51b815260040161061c90613c44565b6108fb84848484613103565b6060816000036127925750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127bc57806127a681613c2b565b91506127b59050600a83613860565b9150612796565b6000816001600160401b038111156127d6576127d661360c565b6040519080825280601f01601f191660200182016040528015612800576020820181803683370190505b5090505b841561259657612815600183613948565b9150612822600a86613cdc565b61282d906030613c18565b60f81b81838151811061284257612842613932565b60200101906001600160f81b031916908160001a905350612864600a86613860565b9450612804565b6060815160000361288a57505060408051602081019091526000815290565b6000604051806060016040528060408152602001613dfd60409139905060006003845160026128b99190613c18565b6128c39190613860565b6128ce906004613833565b6001600160401b038111156128e5576128e561360c565b6040519080825280601f01601f19166020018201604052801561290f576020820181803683370190505b509050600182016020820185865187015b8082101561297b576003820191508151603f8160121c168501518453600184019350603f81600c1c168501518453600184019350603f8160061c168501518453600184019350603f8116850151845350600183019250612920565b505060038651066001811461299757600281146129aa576129b2565b603d6001830353603d60028303536129b2565b603d60018303535b509195945050505050565b6000908152600360205260409020546001600160a01b0316151590565b600081815260056020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612a0f82611029565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000612a5333610f29565b15612a65575060131936013560601c90565b503390565b826001600160a01b0316612a7d82611029565b6001600160a01b031614612ae15760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161061c565b6001600160a01b038216612b435760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161061c565b612b4e838383612ed4565b612b596000826129da565b6001600160a01b0383166000908152600460205260408120805460019290612b82908490613948565b90915550506001600160a01b0382166000908152600460205260408120805460019290612bb0908490613c18565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b038681169182179092559151849391871691600080516020613e3d83398151915291a4610722838383612ff5565b6008546000908190612c1990600190613948565b90505b8015612c995760088181548110612c3557612c35613932565b9060005260206000200154600003612c505750600092915050565b600160088281548110612c6557612c65613932565b9060005260206000200154612c7a9190613948565b831115612c875792915050565b80612c9181613cf0565b915050612c1c565b50600092915050565b600080612cb0836127111190565b90506000612cbe8787613136565b90508115612ce357612ccf85612c05565b612cda906007613c18565b60801760ff1690505b600085118015612cf1575081155b15612cfa575060485b6000806000807f000000000000000000000000ffcbf84650ce02dafe96926b37a0ac5e34932fa56001600160a01b031663df2823318d6040518263ffffffff1660e01b8152600401612d4c9190613467565b60c060405180830381865afa158015612d69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d8d9190613d07565b95509550955095505050730a252663dbcc0b073063d6420a40319e438cfa5963906029d98b868686868b60006040518863ffffffff1660e01b8152600401612e089796959493929190968752602087019590955260408601939093526060850191909152608084015260a0830152151560c082015260e00190565b602060405180830381865af4158015612e25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e49919061395b565b9c9b505050505050505050505050565b60015b82518111612c99578183612e71600184613948565b81518110612e8157612e81613932565b602002602001015103156107825780612e9981613c2b565b915050612e5c565b612eab8383613163565b612eb86000848484613297565b6107225760405162461bcd60e51b815260040161061c90613d5a565b6001600160a01b03831615610722576000818152600d602052604080822054905163125fb94760e11b81526004810191909152730a252663dbcc0b073063d6420a40319e438cfa59906324bf728e90602401602060405180830381865af4158015612f43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f67919061395b565b90506000428211612f8157612f7c8242613948565b612f8b565b612f8b4283613948565b905062093a8081116115175760405162461bcd60e51b815260206004820152602d60248201527f58454e46543a207472616e736665722070726f6869626974656420696e20626c60448201526c1858dadbdd5d081c195c9a5bd9609a1b606482015260840161061c565b6001600160a01b0383166000908152600f60205260409020613017908261259e565b6001600160a01b0382166000908152600f6020526040902061072290826124ab565b816001600160a01b0316836001600160a01b0316036130965760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b604482015260640161061c565b6001600160a01b03838116600081815260066020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61310e848484612a6a565b61311a84848484613297565b6108fb5760405162461bcd60e51b815260040161061c90613d5a565b60006007613144848461339f565b111561315257506007610782565b61315c838361339f565b9392505050565b6001600160a01b0382166131b95760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161061c565b6131c2816129bd565b1561320e5760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b604482015260640161061c565b61321a60008383612ed4565b6001600160a01b0382166000908152600460205260408120805460019290613243908490613c18565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b0386169081179091559051839290600080516020613e3d833981519152908290a461252160008383612ff5565b60006001600160a01b0384163b1561339457836001600160a01b031663150b7a026132c061207f565b8786866040518563ffffffff1660e01b81526004016132e29493929190613dac565b6020604051808303816000875af192505050801561331d575060408051601f3d908101601f1916820190925261331a91810190613ddf565b60015b61337a573d80801561334b576040519150601f19603f3d011682016040523d82523d6000602084013e613350565b606091505b5080516000036133725760405162461bcd60e51b815260040161061c90613d5a565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612596565b506001949350505050565b6000611d4c6133ae8385613833565b61315c9190613860565b6000602082840312156133ca57600080fd5b5035919050565b6001600160e01b031981168114611eb257600080fd5b6000602082840312156133f957600080fd5b813561315c816133d1565b60005b8381101561341f578181015183820152602001613407565b50506000910152565b60008151808452613440816020860160208601613404565b601f01601f19169290920160200192915050565b60208152600061315c6020830184613428565b6001600160a01b0391909116815260200190565b6001600160a01b0381168114611eb257600080fd5b600080604083850312156134a357600080fd5b82356134ae8161347b565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156134f4578351835292840192918401916001016134d8565b50909695505050505050565b60008060006060848603121561351557600080fd5b83356135208161347b565b925060208401356135308161347b565b929592945050506040919091013590565b6000806040838503121561355457600080fd5b50508035926020909101359150565b6001600160a01b03929092168252602082015260400190565b60008060006060848603121561359157600080fd5b505081359360208301359350604090920135919050565b6000602082840312156135ba57600080fd5b813561315c8161347b565b8015158114611eb257600080fd5b600080604083850312156135e657600080fd5b82356135f18161347b565b91506020830135613601816135c5565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561364a5761364a61360c565b604052919050565b60006001600160401b0382111561366b5761366b61360c565b50601f01601f191660200190565b6000806000806080858703121561368f57600080fd5b843561369a8161347b565b935060208501356136aa8161347b565b92506040850135915060608501356001600160401b038111156136cc57600080fd5b8501601f810187136136dd57600080fd5b80356136f06136eb82613652565b613622565b81815288602083850101111561370557600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b6000806040838503121561373a57600080fd5b82356137458161347b565b915060208301356136018161347b565b6000806040838503121561376857600080fd5b8235915060208301356136018161347b565b60208082526017908201527616115388141c9bde1e4e881d5b985d5d1a1bdc9a5e9959604a1b604082015260600190565b600081516137bd818560208601613404565b9290920192915050565b600082516137d9818460208701613404565b9190910192915050565b600181811c908216806137f757607f821691505b60208210810361381757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176107825761078261381d565b634e487b7160e01b600052601260045260246000fd5b60008261386f5761386f61384a565b500490565b60208082526015908201527416115391950e88139bdd081858dd1a5d99481e595d605a1b604082015260600190565b6020808252601a908201527916115391950e881c99595b9d1c985b98de4819195d1958dd195960321b604082015260600190565b60208082526014908201527316115391950e88125b1b1959d85b0818dbdd5b9d60621b604082015260600190565b60208082526013908201527258454e46543a20496c6c6567616c207465726d60681b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b818103818111156107825761078261381d565b60006020828403121561396d57600080fd5b5051919050565b6001600160a01b0392831681529116602082015260400190565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b6020808252601a908201527916115391950e881499595b9d1c985b98de4819195d1958dd195960321b604082015260600190565b600060208284031215613a0657600080fd5b815161315c816135c5565b600060208284031215613a2357600080fd5b81516001600160401b03811115613a3957600080fd5b8201601f81018413613a4a57600080fd5b8051613a586136eb82613652565b818152856020838501011115613a6d57600080fd5b613a7e826020830160208601613404565b95945050505050565b607b60f81b815275226e616d65223a202258454e20546f7272656e74202360501b60018201528351600090613ac3816017850160208901613404565b61088b60f21b60179184019182018190527f226465736372697074696f6e223a202258454e46543a2058454e2043727970746019830152721bc8135a5b9d1a5b99c8151bdc9c995b9d088b606a1b6039830152691134b6b0b3b2911d101160b11b604c8301527919185d184e9a5b5859d94bdcdd99cade1b5b0ed8985cd94d8d0b60321b60568301528551613b5f816070850160208a01613404565b60709201918201526d01130ba3a3934b13aba32b9911d160951b6072820152613b9b613b8e60808301866137ab565b607d60f81b815260010190565b9695505050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000815260008251613bdd81601d850160208701613404565b91909101601d0192915050565b6001600160601b031993841681529190921660148201526001600160881b0319909116602882015260370190565b808201808211156107825761078261381d565b600060018201613c3d57613c3d61381d565b5060010190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6020808252601a908201527916115391950e881d5b99195c881c995c481593554818dbdd5b9d60321b604082015260600190565b634e487b7160e01b600052603160045260246000fd5b600082613ceb57613ceb61384a565b500690565b600081613cff57613cff61381d565b506000190190565b60008060008060008060c08789031215613d2057600080fd5b8651613d2b8161347b565b6020880151604089015160608a015160808b015160a0909b0151939c929b509099909850965090945092505050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613b9b90830184613428565b600060208284031215613df157600080fd5b815161315c816133d156fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef404d724a61636b4c6576696e20406c62656c79616576206661697263727970746f2e6f7267a2646970667358221220b68169ee460b457f28ac6f0d9362a52c071cd56f3fbd60c0b5f3c587fd798f7964736f6c63430008110033000000000000000000000000{XENCrypto}{burnRates_}{tokenLimits_}{startBlockNumber_}{forwarder_}{royalty_Receiver_}00000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cecb8f27f4200f3a0000000000000000000000000000000000000000000000019d971e4fe8401e740000000000000000000000000000000000000000000000033b2e3c9fd0803ce800000000000000000000000000000000000000000000000813f3978f8940984400000000000000000000000000000000000000000000001027e72f1f128130880000000000000000000000000000000000000000000000204fce5e3e25026110000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000017700000000000000000000000000000000000000000000000000000000000000bb800000000000000000000000000000000000000000000000000000000000003e80000000000000000000000000000000000000000000000000000000000000064" +bytecode = "6101406040526127116007553480156200001857600080fd5b506040516200478d3803806200478d8339810160408190526200003b9162000596565b604080518082018252600b81526a16115388151bdc9c995b9d60aa1b6020808301919091528251808401909352600683526518d89611539560d21b908301529083733cc6cdda760b79bafa08df41ecfa224f810dceb660016daaeb6d7670e522a718067333cd4e3b15620001d85780156200012657604051633e9f1edf60e11b81523060048201526001600160a01b03831660248201526daaeb6d7670e522a718067333cd4e90637d3e3dbe906044015b600060405180830381600087803b1580156200010757600080fd5b505af11580156200011c573d6000803e3d6000fd5b50505050620001d8565b6001600160a01b03821615620001775760405163a0af290360e01b81523060048201526001600160a01b03831660248201526daaeb6d7670e522a718067333cd4e9063a0af290390604401620000ec565b604051632210724360e11b81523060048201526daaeb6d7670e522a718067333cd4e90634420e48690602401600060405180830381600087803b158015620001be57600080fd5b505af1158015620001d3573d6000803e3d6000fd5b505050505b5050600080546001600160a01b0319166001600160a01b03929092169190911790556001620002088382620006d0565b506002620002178282620006d0565b5050506001600160a01b038616620002645760405162461bcd60e51b815260206004820152600b60248201526a626164206164647265737360a81b60448201526064015b60405180910390fd5b8351855114801562000277575060008551115b620002b75760405162461bcd60e51b815260206004820152600f60248201526e0e0c2e4c2dae640dad2e6dac2e8c6d608b1b60448201526064016200025b565b600019600e553060e05233610100526001600160a01b03811615620002dd5780620002df565b335b6001600160a01b039081166101205260c08490524260a052861660805284516200031190600890602088019062000458565b5083516200032790600990602087019062000458565b5083516001600160401b03811115620003445762000344620004dc565b6040519080825280602002602001820160405280156200036e578160200160208202803683370190505b5080516200038591600a9160209091019062000458565b5060025b6008546200039a90600190620007b2565b81101562000414576009620003b1826001620007ce565b81548110620003c457620003c4620007e4565b90600052602060002001546001620003dd9190620007ce565b600a8281548110620003f357620003f3620007e4565b600091825260209091200155806200040b81620007fa565b91505062000389565b50600854600190600a906200042b908390620007b2565b815481106200043e576200043e620007e4565b906000526020600020018190555050505050505062000816565b82805482825590600052602060002090810192821562000496579160200282015b828111156200049657825182559160200191906001019062000479565b50620004a4929150620004a8565b5090565b5b80821115620004a45760008155600101620004a9565b80516001600160a01b0381168114620004d757600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200050457600080fd5b815160206001600160401b0380831115620005235762000523620004dc565b8260051b604051601f19603f830116810181811084821117156200054b576200054b620004dc565b6040529384528581018301938381019250878511156200056a57600080fd5b83870191505b848210156200058b5781518352918301919083019062000570565b979650505050505050565b60008060008060008060c08789031215620005b057600080fd5b620005bb87620004bf565b60208801519096506001600160401b0380821115620005d957600080fd5b620005e78a838b01620004f2565b96506040890151915080821115620005fe57600080fd5b506200060d89828a01620004f2565b945050606087015192506200062560808801620004bf565b91506200063560a08801620004bf565b90509295509295509295565b600181811c908216806200065657607f821691505b6020821081036200067757634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620006cb57600081815260208120601f850160051c81016020861015620006a65750805b601f850160051c820191505b81811015620006c757828155600101620006b2565b5050505b505050565b81516001600160401b03811115620006ec57620006ec620004dc565b6200070481620006fd845462000641565b846200067d565b602080601f8311600181146200073c5760008415620007235750858301515b600019600386901b1c1916600185901b178555620006c7565b600085815260208120601f198616915b828110156200076d578886015182559484019460019091019084016200074c565b50858210156200078c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b81810381811115620007c857620007c86200079c565b92915050565b80820180821115620007c857620007c86200079c565b634e487b7160e01b600052603260045260246000fd5b6000600182016200080f576200080f6200079c565b5060010190565b60805160a05160c05160e0516101005161012051613eb7620008d6600039600061090301526000818161045e0152610f480152600081816105df01528181611120015261173201526000818161035f0152818161096f015281816111720152818161181e0152611988015260008181610564015261211b0152600081816104140152818161067501528181610a8c01528181610b7d01528181610ca401528181610d94015281816115a2015281816117c00152612d020152613eb76000f3fe608060405234801561001057600080fd5b506004361061021f5760003560e01c806370a082311161012c57806370a08231146103fc57806371141a581461040f57806374a1dff21461043657806389776eb0146104495780638da5cb5b1461045c578063928dd2a71461048257806395d89b411461048a57806398bdf6f5146104925780639dc29fac1461049b578063a126ad1e146104ae578063a1a53fa1146104b8578063a22cb465146104d8578063b88d4fde146104eb578063ba3ec741146104fe578063bd33303314610506578063c87b56dd14610526578063d0d5f5b414610539578063df0030ef1461054c578063e3af6d0a1461055f578063e985e9c514610586578063ecef920114610599578063ee8743d7146105ac578063f5878b9b146105c157600080fd5b806301bb41161461022457806301ffc9a714610239578063044db8ba1461026157806306fdde0314610278578063081812fc1461028d578063095ea7b3146102ad57806319cba6b4146102c057806323b872dd146102d55780632a55205a146102e857806341b169f31461030957806341f434341461031257806342842e0e14610327578063443aa5331461033a578063498a4c2d1461035a5780634d4b2be41461038157806353b18de41461038a578063543746b11461039d57806355ee08ba146103b0578063572b6c05146103b85780635c41d2fe146103cb5780636352211e146103de578063700107af146103f1575b600080fd5b6102376102323660046133b8565b6105d4565b005b61024c6102473660046133e7565b610727565b60405190151581526020015b60405180910390f35b61026a6101f481565b604051908152602001610258565b610280610788565b6040516102589190613454565b6102a061029b3660046133b8565b61081a565b6040516102589190613467565b6102376102bb366004613490565b610841565b6102c8610855565b60405161025891906134bc565b6102376102e3366004613500565b6108d6565b6102fb6102f6366004613541565b610901565b604051610258929190613563565b61026a611d4c81565b6102a06daaeb6d7670e522a718067333cd4e81565b610237610335366004613500565b610946565b61026a6103483660046133b8565b600d6020526000908152604090205481565b61026a7f000000000000000000000000000000000000000000000000000000000000000081565b61026a61271181565b61026a61039836600461357c565b61096b565b6102376103ab366004613490565b610d36565b61026a606381565b61024c6103c63660046135a8565b610f29565b6102376103d93660046135a8565b610f3d565b6102a06103ec3660046133b8565b611029565b61026a6301e1338081565b61026a61040a3660046135a8565b61105e565b6102a07f000000000000000000000000000000000000000000000000000000000000000081565b61026a6104443660046133b8565b6110e4565b61026a6104573660046133b8565b611105565b7f00000000000000000000000000000000000000000000000000000000000000006102a0565b610237611115565b610280611161565b61026a60075481565b6102376104a9366004613490565b611170565b61026a62093a8081565b61026a6104c63660046133b8565b600b6020526000908152604090205481565b6102376104e63660046135d3565b6114dd565b6102376104f9366004613679565b6114f1565b61028061151e565b61026a6105143660046133b8565b600c6020526000908152604090205481565b6102806105343660046133b8565b61153a565b61026a6105473660046133b8565b611717565b61023761055a3660046135a8565b611727565b61026a7f000000000000000000000000000000000000000000000000000000000000000081565b61024c610594366004613727565b6117ec565b61026a6105a7366004613541565b61181a565b61024c6105ba3660046133b8565b6127111190565b6102376105cf366004613755565b611986565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106255760405162461bcd60e51b815260040161061c9061377a565b60405180910390fd5b60008160405160240161063a91815260200190565b60408051601f198184030181529181526020820180516001600160e01b0316639ff054df60e01b179052519091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906106a19084906137c7565b6000604051808303816000865af19150503d80600081146106de576040519150601f19603f3d011682016040523d82523d6000602084013e6106e3565b606091505b50509050806107225760405162461bcd60e51b815260206004820152600b60248201526a18d85b1b0819985a5b195960aa1b604482015260640161061c565b505050565b60006001600160e01b0319821663543746b160e01b148061075857506001600160e01b0319821663152a902d60e11b145b8061077357506001600160e01b0319821663572b6c0560e01b145b80610782575061078282611e3d565b92915050565b606060018054610797906137e3565b80601f01602080910402602001604051908101604052809291908181526020018280546107c3906137e3565b80156108105780601f106107e557610100808354040283529160200191610810565b820191906000526020600020905b8154815290600101906020018083116107f357829003601f168201915b5050505050905090565b600061082582611e8d565b506000908152600560205260409020546001600160a01b031690565b8161084b81611eb5565b6107228383611f5d565b6060600f600061086361207f565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561081057602002820191906000526020600020905b8154815260200190600101908083116108b9575050505050905090565b826001600160a01b03811633146108f0576108f033611eb5565b6108fb84848461208e565b50505050565b7f000000000000000000000000000000000000000000000000000000000000000060006127106109336101f485613833565b61093d9190613860565b90509250929050565b826001600160a01b03811633146109605761096033611eb5565b6108fb8484846120c0565b60007f000000000000000000000000000000000000000000000000000000000000000043116109ac5760405162461bcd60e51b815260040161061c90613874565b600019600e54146109cf5760405162461bcd60e51b815260040161061c906138a3565b600084116109ef5760405162461bcd60e51b815260040161061c906138d7565b60008311610a0f5760405162461bcd60e51b815260040161061c90613905565b60016008600181548110610a2557610a25613932565b9060005260206000200154610a3a9190613948565b8211610a885760405162461bcd60e51b815260206004820152601d60248201527f58454e46543a206e6f7420656e6f756768206275726e20616d6f756e74000000604482015260640161061c565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231610ac161207f565b6040518263ffffffff1660e01b8152600401610add9190613467565b602060405180830381865afa158015610afa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1e919061395b565b9050610b2b600184613948565b8111610b795760405162461bcd60e51b815260206004820152601d60248201527f58454e46543a206e6f7420656e6f7567682058454e2062616c616e6365000000604482015260640161061c565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dd62ed3e610bb261207f565b306040518363ffffffff1660e01b8152600401610bd0929190613974565b602060405180830381865afa158015610bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c11919061395b565b9050610c1e600185613948565b8111610c845760405162461bcd60e51b815260206004820152602f60248201527f58454e46543a206e6f7420656e6f7567682058454e2062616c616e636520617060448201526e383937bb32b2103337b910313ab93760891b606482015260840161061c565b610c8e86856120db565b600e81905550610ca28686600e5487612313565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639dc29fac610cd961207f565b866040518363ffffffff1660e01b8152600401610cf7929190613563565b600060405180830381600087803b158015610d1157600080fd5b505af1158015610d25573d6000803e3d6000fd5b5050600e5498975050505050505050565b600019600e5403610d895760405162461bcd60e51b815260206004820152601d60248201527f58454e46543a20696c6c6567616c2063616c6c6261636b207374617465000000604482015260640161061c565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e015760405162461bcd60e51b815260206004820152601e60248201527f58454e46543a20696c6c6567616c2063616c6c6261636b2063616c6c65720000604482015260640161061c565b600e546001600160a01b0383166000908152600f60205260409020610e25916124ab565b600e80546000908152600c6020526040902082905554610e46908390612525565b600e546000908152600b6020908152604080832054600d9092529182902054915163346ba94160e01b815260048101929092526001600160a01b038416917ffbb2077593b3594fd0ac359a2d898268191a74843aaf1ba3f517b5514a1b07119190730a252663dbcc0b073063d6420a40319e438cfa599063346ba94190602401602060405180830381865af4158015610ee3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f07919061395b565b6040805192835260208301919091520160405180910390a25050600019600e55565b6000546001600160a01b0391821691161490565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fae5760405162461bcd60e51b81526020600482015260166024820152752c22a7232a1d103737ba1030b7103232b83637bcb2b960511b604482015260640161061c565b6000546001600160a01b0316156110075760405162461bcd60e51b815260206004820152601f60248201527f58454e46543a20466f7277617264657220697320616c72656164792073657400604482015260640161061c565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000818152600360205260408120546001600160a01b0316806107825760405162461bcd60e51b815260040161061c9061398e565b60006001600160a01b0382166110c85760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161061c565b506001600160a01b031660009081526004602052604090205490565b600981815481106110f457600080fd5b600091825260209091200154905081565b600a81815481106110f457600080fd5b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461115d5760405162461bcd60e51b815260040161061c9061377a565b6000ff5b606060028054610797906137e3565b7f000000000000000000000000000000000000000000000000000000000000000043116111af5760405162461bcd60e51b815260040161061c90613874565b600019600e54146111d25760405162461bcd60e51b815260040161061c906139c0565b6111df6001600019613948565b600e556111ea61207f565b6040516301ffc9a760e01b815263543746b160e01b60048201526001600160a01b0391909116906301ffc9a790602401602060405180830381865afa158015611237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125b91906139f4565b6112b35760405162461bcd60e51b8152602060048201526024808201527f58454e4654206275726e3a206e6f74206120737570706f7274656420636f6e746044820152631c9858dd60e21b606482015260840161061c565b6001600160a01b0382166113135760405162461bcd60e51b815260206004820152602160248201527f58454e4654206275726e3a20696c6c6567616c206f776e6572206164647265736044820152607360f81b606482015260840161061c565b600081116113615760405162461bcd60e51b815260206004820152601b60248201527a161153919508189d5c9b8e881a5b1b1959d85b081d1bdad95b9259602a1b604482015260640161061c565b61137261136c61207f565b8261253f565b6113ca5760405162461bcd60e51b8152602060048201526024808201527f58454e4654206275726e3a206e6f7420616e20617070726f766564206f70657260448201526330ba37b960e11b606482015260840161061c565b816001600160a01b03166113dd82611029565b6001600160a01b0316146114415760405162461bcd60e51b815260206004820152602560248201527f58454e4654206275726e3a2075736572206973206e6f7420746f6b656e49642060448201526437bbb732b960d91b606482015260840161061c565b6001600160a01b0382166000908152600f60205260409020611463908261259e565b61146c81612683565b61147461207f565b6001600160a01b031663543746b183836040518363ffffffff1660e01b81526004016114a1929190613563565b600060405180830381600087803b1580156114bb57600080fd5b505af11580156114cf573d6000803e3d6000fd5b5050600019600e5550505050565b816114e781611eb5565b6107228383612720565b836001600160a01b038116331461150b5761150b33611eb5565b61151785858585612732565b5050505050565b604051806060016040528060258152602001613e5d6025913981565b6000818152600b6020908152604080832054600d835281842054600c90935292205460609291908261156b57600080fd5b60006115768661276b565b604051631b9345fd60e01b81526004810188905260248101869052604481018590526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660648201526084810184905261163b9073af18644083151cf57f914cccc23c42a1892c218e90631b9345fd9060a401600060405180830381865af415801561160e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116369190810190613a11565b61286b565b604051633c4a25e960e21b815260048101879052602481018590526044810186905273af18644083151cf57f914cccc23c42a1892c218e9063f12897a490606401600060405180830381865af4158015611699573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116c19190810190613a11565b6040516020016116d393929190613a87565b60405160208183030381529060405290506116ed8161286b565b6040516020016116fd9190613ba5565b604051602081830303815290604052945050505050919050565b600881815481106110f457600080fd5b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461176f5760405162461bcd60e51b815260040161061c9061377a565b6000816064604051602401611785929190613563565b60408051601f198184030181529181526020820180516001600160e01b0316631c56030560e01b179052519091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906106a19084906137c7565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b60007f0000000000000000000000000000000000000000000000000000000000000000431161185b5760405162461bcd60e51b815260040161061c90613874565b600019600e541461187e5760405162461bcd60e51b815260040161061c906138a3565b6000831161189e5760405162461bcd60e51b815260040161061c906138d7565b600082116118be5760405162461bcd60e51b815260040161061c90613905565b6118c98360006120db565b600e819055506118de8383600e546000612313565b61190f600e54600f60006118f061207f565b6001600160a01b031681526020810191909152604001600020906124ab565b61192261191a61207f565b600e54612525565b61192a61207f565b6001600160a01b03167ffbb2077593b3594fd0ac359a2d898268191a74843aaf1ba3f517b5514a1b0711848460405161196d929190918252602082015260400190565b60405180910390a25050600e8054600019909155919050565b7f000000000000000000000000000000000000000000000000000000000000000043116119c55760405162461bcd60e51b815260040161061c90613874565b600019600e54146119e85760405162461bcd60e51b815260040161061c906139c0565b6119f56001600019613948565b600e55611a0061207f565b6001600160a01b0316611a1283611029565b6001600160a01b031614611a615760405162461bcd60e51b81526020600482015260166024820152752c22a7232a1d1024b731b7b93932b1ba1037bbb732b960511b604482015260640161061c565b6001600160a01b038116611ab05760405162461bcd60e51b815260206004820152601660248201527558454e46543a20496c6c6567616c206164647265737360501b604482015260640161061c565b6000828152600d60205260409081902054905163e90cdc8960e01b81526004810191909152730a252663dbcc0b073063d6420a40319e438cfa599063e90cdc8990602401602060405180830381865af4158015611b11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3591906139f4565b15611b7c5760405162461bcd60e51b815260206004820152601760248201527616115391950e88105b1c9958591e481c995919595b5959604a1b604482015260640161061c565b604051600090611bc090733d602d80600a3d3981f3363d3d373d3d3d363d7360601b903060601b906e5af43d82803e903d91602b57fd5bf360881b90602001613bea565b60408051601f198184030181529181526000858152600b6020529081205491925090611bed906001613c18565b9050600083604051602401611c029190613467565b60408051601f19818403018152918152602080830180516001600160e01b0390811663df0030ef60e01b1790915282516004815260248101909352908201805190911663928dd2a760e01b17905290915060015b83811015611dbd576040805160208082018490528183018a90528251808303840181526060808401855281519183019190912089518a8401206001600160f81b031960808601523090921b6001600160601b03191660818501526095840181905260b5808501929092528451808503909201825260d5909301909352825192810192909220855191926000928291849182918a0182855af1925082611d495760405162461bcd60e51b815260206004820152602360248201527f58454e46543a204572726f72207768696c6520636c61696d696e67207265776160448201526272647360e81b606482015260840161061c565b6000808751602089016000855af1925082611da65760405162461bcd60e51b815260206004820181905260248201527f58454e46543a204572726f72207768696c6520706f776572696e6720646f776e604482015260640161061c565b505050508080611db590613c2b565b915050611c56565b506000868152600d6020526040902080546001179055611ddb61207f565b6001600160a01b03167f7ae39cb5fb0bebb7775f35a0009e0c94f59c2e40c8967af20842619edac4694d8787604051611e279291909182526001600160a01b0316602082015260400190565b60405180910390a25050600019600e5550505050565b60006001600160e01b031982166380ac58cd60e01b1480611e6e57506001600160e01b03198216635b5e139f60e01b145b8061078257506301ffc9a760e01b6001600160e01b0319831614610782565b611e96816129bd565b611eb25760405162461bcd60e51b815260040161061c9061398e565b50565b6daaeb6d7670e522a718067333cd4e3b15611eb257604051633185c44d60e21b81526daaeb6d7670e522a718067333cd4e9063c617113490611efd9030908590600401613974565b602060405180830381865afa158015611f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3e91906139f4565b611eb25780604051633b79c77360e21b815260040161061c9190613467565b6000611f6882611029565b9050806001600160a01b0316836001600160a01b031603611fd55760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161061c565b806001600160a01b0316611fe761207f565b6001600160a01b0316148061200357506120038161059461207f565b6120755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161061c565b61072283836129da565b6000612089612a48565b905090565b61209961136c61207f565b6120b55760405162461bcd60e51b815260040161061c90613c44565b610722838383612a6a565b610722838383604051806020016040528060008152506114f1565b6000806120e783612c05565b9050806001036121a757606384116121115760405162461bcd60e51b815260040161061c90613c92565b61213f6301e133807f0000000000000000000000000000000000000000000000000000000000000000613c18565b421061218b5760405162461bcd60e51b815260206004820152601b60248201527a16115391950e881b1a5b5a5d1959081d1a5b5948195e1c1a5c9959602a1b604482015260640161061c565b6007805490600061219b83613c2b565b91905055915050610782565b60018111156122f757326121b961207f565b6001600160a01b0316146122215760405162461bcd60e51b815260206004820152602960248201527f58454e46543a206f6e6c7920454f4120616c6c6f77656420666f7220746869736044820152682063617465676f727960b81b606482015260840161061c565b606384116122415760405162461bcd60e51b815260040161061c90613c92565b6009818154811061225457612254613932565b9060005260206000200154600161226b9190613c18565b600a828154811061227e5761227e613932565b9060005260206000200154106122ce5760405162461bcd60e51b815260206004820152601560248201527416115391950e8818db185cdcc81cdbdb19081bdd5d605a1b604482015260640161061c565b600a81815481106122e1576122e1613932565b6000918252602082200180549161219b83613c2b565b6007805490600061230783613c2b565b90915550949350505050565b60405160009061235790733d602d80600a3d3981f3363d3d373d3d3d363d7360601b903060601b906e5af43d82803e903d91602b57fd5bf360881b90602001613bea565b604051602081830303815290604052905060008460405160240161237d91815260200190565b60408051601f198184030181529190526020810180516001600160e01b031662dda08b60e11b179052905060008060015b6123b9896001613c18565b811015612490576040805160208101839052908101889052600090606001604051602081830303815290604052805190602001209050808651602088016000f593506000808651602088016000885af19250826124585760405162461bcd60e51b815260206004820181905260248201527f58454e46543a204572726f72207768696c6520636c61696d696e672072616e6b604482015260640161061c565b8160010361247d5761246d848b8b8a8c612ca2565b6000898152600d60205260409020555b508061248881613c2b565b9150506123ae565b50505060009384525050600b60205250604090209190915550565b612504828054806020026020016040519081016040528092919081815260200182805480156124f957602002820191906000526020600020905b8154815260200190600101908083116124e5575b505050505082612e59565b600003612521578154600181018355600083815260209020018190555b5050565b612521828260405180602001604052806000815250612ea1565b60008061254b83611029565b9050806001600160a01b0316846001600160a01b03161480612572575061257281856117ec565b806125965750836001600160a01b031661258b8461081a565b6001600160a01b0316145b949350505050565b60006125f9838054806020026020016040519081016040528092919081815260200182805480156125ee57602002820191906000526020600020905b8154815260200190600101908083116125da575b505050505083612e59565b90508015610722578254839061261190600190613948565b8154811061262157612621613932565b90600052602060002001548360018361263a9190613948565b8154811061264a5761264a613932565b90600052602060002001819055508280548061266857612668613cc6565b60019003818190600052602060002001600090559055505050565b600061268e82611029565b905061269c81600084612ed4565b6126a76000836129da565b6001600160a01b03811660009081526004602052604081208054600192906126d0908490613948565b909155505060008281526003602052604080822080546001600160a01b0319169055518391906001600160a01b03841690600080516020613e3d833981519152908390a461252181600084612ff5565b61252161272b61207f565b8383613039565b61274361273d61207f565b8361253f565b61275f5760405162461bcd60e51b815260040161061c90613c44565b6108fb84848484613103565b6060816000036127925750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127bc57806127a681613c2b565b91506127b59050600a83613860565b9150612796565b6000816001600160401b038111156127d6576127d661360c565b6040519080825280601f01601f191660200182016040528015612800576020820181803683370190505b5090505b841561259657612815600183613948565b9150612822600a86613cdc565b61282d906030613c18565b60f81b81838151811061284257612842613932565b60200101906001600160f81b031916908160001a905350612864600a86613860565b9450612804565b6060815160000361288a57505060408051602081019091526000815290565b6000604051806060016040528060408152602001613dfd60409139905060006003845160026128b99190613c18565b6128c39190613860565b6128ce906004613833565b6001600160401b038111156128e5576128e561360c565b6040519080825280601f01601f19166020018201604052801561290f576020820181803683370190505b509050600182016020820185865187015b8082101561297b576003820191508151603f8160121c168501518453600184019350603f81600c1c168501518453600184019350603f8160061c168501518453600184019350603f8116850151845350600183019250612920565b505060038651066001811461299757600281146129aa576129b2565b603d6001830353603d60028303536129b2565b603d60018303535b509195945050505050565b6000908152600360205260409020546001600160a01b0316151590565b600081815260056020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612a0f82611029565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000612a5333610f29565b15612a65575060131936013560601c90565b503390565b826001600160a01b0316612a7d82611029565b6001600160a01b031614612ae15760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161061c565b6001600160a01b038216612b435760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161061c565b612b4e838383612ed4565b612b596000826129da565b6001600160a01b0383166000908152600460205260408120805460019290612b82908490613948565b90915550506001600160a01b0382166000908152600460205260408120805460019290612bb0908490613c18565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b038681169182179092559151849391871691600080516020613e3d83398151915291a4610722838383612ff5565b6008546000908190612c1990600190613948565b90505b8015612c995760088181548110612c3557612c35613932565b9060005260206000200154600003612c505750600092915050565b600160088281548110612c6557612c65613932565b9060005260206000200154612c7a9190613948565b831115612c875792915050565b80612c9181613cf0565b915050612c1c565b50600092915050565b600080612cb0836127111190565b90506000612cbe8787613136565b90508115612ce357612ccf85612c05565b612cda906007613c18565b60801760ff1690505b600085118015612cf1575081155b15612cfa575060485b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663df2823318d6040518263ffffffff1660e01b8152600401612d4c9190613467565b60c060405180830381865afa158015612d69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d8d9190613d07565b95509550955095505050730a252663dbcc0b073063d6420a40319e438cfa5963906029d98b868686868b60006040518863ffffffff1660e01b8152600401612e089796959493929190968752602087019590955260408601939093526060850191909152608084015260a0830152151560c082015260e00190565b602060405180830381865af4158015612e25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e49919061395b565b9c9b505050505050505050505050565b60015b82518111612c99578183612e71600184613948565b81518110612e8157612e81613932565b602002602001015103156107825780612e9981613c2b565b915050612e5c565b612eab8383613163565b612eb86000848484613297565b6107225760405162461bcd60e51b815260040161061c90613d5a565b6001600160a01b03831615610722576000818152600d602052604080822054905163125fb94760e11b81526004810191909152730a252663dbcc0b073063d6420a40319e438cfa59906324bf728e90602401602060405180830381865af4158015612f43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f67919061395b565b90506000428211612f8157612f7c8242613948565b612f8b565b612f8b4283613948565b905062093a8081116115175760405162461bcd60e51b815260206004820152602d60248201527f58454e46543a207472616e736665722070726f6869626974656420696e20626c60448201526c1858dadbdd5d081c195c9a5bd9609a1b606482015260840161061c565b6001600160a01b0383166000908152600f60205260409020613017908261259e565b6001600160a01b0382166000908152600f6020526040902061072290826124ab565b816001600160a01b0316836001600160a01b0316036130965760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b604482015260640161061c565b6001600160a01b03838116600081815260066020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61310e848484612a6a565b61311a84848484613297565b6108fb5760405162461bcd60e51b815260040161061c90613d5a565b60006007613144848461339f565b111561315257506007610782565b61315c838361339f565b9392505050565b6001600160a01b0382166131b95760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161061c565b6131c2816129bd565b1561320e5760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b604482015260640161061c565b61321a60008383612ed4565b6001600160a01b0382166000908152600460205260408120805460019290613243908490613c18565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b0386169081179091559051839290600080516020613e3d833981519152908290a461252160008383612ff5565b60006001600160a01b0384163b1561339457836001600160a01b031663150b7a026132c061207f565b8786866040518563ffffffff1660e01b81526004016132e29493929190613dac565b6020604051808303816000875af192505050801561331d575060408051601f3d908101601f1916820190925261331a91810190613ddf565b60015b61337a573d80801561334b576040519150601f19603f3d011682016040523d82523d6000602084013e613350565b606091505b5080516000036133725760405162461bcd60e51b815260040161061c90613d5a565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612596565b506001949350505050565b6000611d4c6133ae8385613833565b61315c9190613860565b6000602082840312156133ca57600080fd5b5035919050565b6001600160e01b031981168114611eb257600080fd5b6000602082840312156133f957600080fd5b813561315c816133d1565b60005b8381101561341f578181015183820152602001613407565b50506000910152565b60008151808452613440816020860160208601613404565b601f01601f19169290920160200192915050565b60208152600061315c6020830184613428565b6001600160a01b0391909116815260200190565b6001600160a01b0381168114611eb257600080fd5b600080604083850312156134a357600080fd5b82356134ae8161347b565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156134f4578351835292840192918401916001016134d8565b50909695505050505050565b60008060006060848603121561351557600080fd5b83356135208161347b565b925060208401356135308161347b565b929592945050506040919091013590565b6000806040838503121561355457600080fd5b50508035926020909101359150565b6001600160a01b03929092168252602082015260400190565b60008060006060848603121561359157600080fd5b505081359360208301359350604090920135919050565b6000602082840312156135ba57600080fd5b813561315c8161347b565b8015158114611eb257600080fd5b600080604083850312156135e657600080fd5b82356135f18161347b565b91506020830135613601816135c5565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561364a5761364a61360c565b604052919050565b60006001600160401b0382111561366b5761366b61360c565b50601f01601f191660200190565b6000806000806080858703121561368f57600080fd5b843561369a8161347b565b935060208501356136aa8161347b565b92506040850135915060608501356001600160401b038111156136cc57600080fd5b8501601f810187136136dd57600080fd5b80356136f06136eb82613652565b613622565b81815288602083850101111561370557600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b6000806040838503121561373a57600080fd5b82356137458161347b565b915060208301356136018161347b565b6000806040838503121561376857600080fd5b8235915060208301356136018161347b565b60208082526017908201527616115388141c9bde1e4e881d5b985d5d1a1bdc9a5e9959604a1b604082015260600190565b600081516137bd818560208601613404565b9290920192915050565b600082516137d9818460208701613404565b9190910192915050565b600181811c908216806137f757607f821691505b60208210810361381757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176107825761078261381d565b634e487b7160e01b600052601260045260246000fd5b60008261386f5761386f61384a565b500490565b60208082526015908201527416115391950e88139bdd081858dd1a5d99481e595d605a1b604082015260600190565b6020808252601a908201527916115391950e881c99595b9d1c985b98de4819195d1958dd195960321b604082015260600190565b60208082526014908201527316115391950e88125b1b1959d85b0818dbdd5b9d60621b604082015260600190565b60208082526013908201527258454e46543a20496c6c6567616c207465726d60681b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b818103818111156107825761078261381d565b60006020828403121561396d57600080fd5b5051919050565b6001600160a01b0392831681529116602082015260400190565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b6020808252601a908201527916115391950e881499595b9d1c985b98de4819195d1958dd195960321b604082015260600190565b600060208284031215613a0657600080fd5b815161315c816135c5565b600060208284031215613a2357600080fd5b81516001600160401b03811115613a3957600080fd5b8201601f81018413613a4a57600080fd5b8051613a586136eb82613652565b818152856020838501011115613a6d57600080fd5b613a7e826020830160208601613404565b95945050505050565b607b60f81b815275226e616d65223a202258454e20546f7272656e74202360501b60018201528351600090613ac3816017850160208901613404565b61088b60f21b60179184019182018190527f226465736372697074696f6e223a202258454e46543a2058454e2043727970746019830152721bc8135a5b9d1a5b99c8151bdc9c995b9d088b606a1b6039830152691134b6b0b3b2911d101160b11b604c8301527919185d184e9a5b5859d94bdcdd99cade1b5b0ed8985cd94d8d0b60321b60568301528551613b5f816070850160208a01613404565b60709201918201526d01130ba3a3934b13aba32b9911d160951b6072820152613b9b613b8e60808301866137ab565b607d60f81b815260010190565b9695505050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000815260008251613bdd81601d850160208701613404565b91909101601d0192915050565b6001600160601b031993841681529190921660148201526001600160881b0319909116602882015260370190565b808201808211156107825761078261381d565b600060018201613c3d57613c3d61381d565b5060010190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6020808252601a908201527916115391950e881d5b99195c881c995c481593554818dbdd5b9d60321b604082015260600190565b634e487b7160e01b600052603160045260246000fd5b600082613ceb57613ceb61384a565b500690565b600081613cff57613cff61381d565b506000190190565b60008060008060008060c08789031215613d2057600080fd5b8651613d2b8161347b565b6020880151604089015160608a015160808b015160a0909b0151939c929b509099909850965090945092505050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613b9b90830184613428565b600060208284031215613df157600080fd5b815161315c816133d156fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef404d724a61636b4c6576696e20406c62656c79616576206661697263727970746f2e6f7267a2646970667358221220b68169ee460b457f28ac6f0d9362a52c071cd56f3fbd60c0b5f3c587fd798f7964736f6c63430008110033000000000000000000000000{XENCrypto}{burnRates_}{tokenLimits_}{startBlockNumber_}{forwarder_}{royalty_Receiver_}00000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cecb8f27f4200f3a0000000000000000000000000000000000000000000000019d971e4fe8401e740000000000000000000000000000000000000000000000033b2e3c9fd0803ce800000000000000000000000000000000000000000000000813f3978f8940984400000000000000000000000000000000000000000000001027e72f1f128130880000000000000000000000000000000000000000000000204fce5e3e25026110000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000017700000000000000000000000000000000000000000000000000000000000000bb800000000000000000000000000000000000000000000000000000000000003e80000000000000000000000000000000000000000000000000000000000000064" -# [[setup]] -# kind = "claim_rank" -# to = "{XENCrypto}" -# from_pool = "admin" -# signature = "function claimRank(uint256 term) external" -# args = ["1"] - -# deploy 10 contracts doing XEN. +# deploy 128 contracts doing XEN. Note that term is just the number of days until a user can call claimMintReward(), however our test script doesn't call it as it's not the primary driver of state growth. [[spam]] [spam.tx] kind = "bulk_claim_rank" to = "{XENTorrent}" from_pool = "admin" -signature = "function bulkClaimRank(uint256 count, uint256 term) public notBeforeStart returns (uint256 tokenId)" -args = ["10", "1"] \ No newline at end of file +signature = "bulkClaimRank(uint256 count, uint256 term)" +args = ["128", "1"] \ No newline at end of file From cee75bb12137824953bf08459fea8fbf23d7d3a3 Mon Sep 17 00:00:00 2001 From: fahimahmedx Date: Tue, 29 Apr 2025 18:46:56 -0400 Subject: [PATCH 3/5] get XENCrypto bytecode from forge --- scenarios/xen.toml | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/scenarios/xen.toml b/scenarios/xen.toml index 49946de2..e446425c 100644 --- a/scenarios/xen.toml +++ b/scenarios/xen.toml @@ -5,10 +5,15 @@ startBlockNumber_ = "00000000000000000000000000000000000000000000000000000000000 forwarder_ = "0000000000000000000000000000000000000000000000000000000000000000" royalty_Receiver_ = "000000000000000000000000c73fc08c931efe3fce850c09278472e8a81c2e05" +[[create]] +name = "XENMath" +from_pool = "admin" +bytecode = "0x61039f61004d600b8282823980515f1a6073146041577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061004a575f3560e01c80634793dbab1461004e5780636d5433e61461007e5780637ae2b5c7146100ae575b5f5ffd5b610068600480360381019061006391906102a4565b6100de565b60405161007591906102ea565b60405180910390f35b61009860048036038101906100939190610303565b6100f7565b6040516100a59190610350565b60405180910390f35b6100c860048036038101906100c39190610303565b610112565b6040516100d59190610350565b60405180910390f35b5f6100f06100eb8361012d565b61014e565b9050919050565b5f818311156101085782905061010c565b8190505b92915050565b5f8183111561012357819050610127565b8290505b92915050565b5f677fffffffffffffff821115610142575f5ffd5b604082901b9050919050565b5f5f82600f0b1361015d575f5ffd5b5f5f90505f83600f0b905068010000000000000000811261018657604081901d90506040820191505b64010000000081126101a057602081901d90506020820191505b6201000081126101b857601081901d90506010820191505b61010081126101cf57600881901d90506008820191505b601081126101e557600481901d90506004820191505b600481126101fb57600281901d90506002820191505b6002811261020a576001820191505b5f6040808403901b90505f83607f0386600f0b901b90505f67800000000000000090505b5f8113156102605781820291505f60ff83901c905080607f0183901c92508082028401935050600181901d905061022e565b5081945050505050919050565b5f5ffd5b5f819050919050565b61028381610271565b811461028d575f5ffd5b50565b5f8135905061029e8161027a565b92915050565b5f602082840312156102b9576102b861026d565b5b5f6102c684828501610290565b91505092915050565b5f81600f0b9050919050565b6102e4816102cf565b82525050565b5f6020820190506102fd5f8301846102db565b92915050565b5f5f604083850312156103195761031861026d565b5b5f61032685828601610290565b925050602061033785828601610290565b9150509250929050565b61034a81610271565b82525050565b5f6020820190506103635f830184610341565b9291505056fea2646970667358221220bea4a1645a380e07b26217b036b0d7cf9413f477b75731d2762f402c9af4e06e64736f6c634300081b0033" + [[create]] name = "XENCrypto" from_pool = "admin" -bytecode = "0x60a060405260016005553480156200001657600080fd5b506040518060400160405280600a81526020016958454e2043727970746f60b01b8152506040518060400160405280600581526020016431b12c22a760d91b81525081600390816200006991906200012a565b5060046200007882826200012a565b50504260805250620001f6565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000b057607f821691505b602082108103620000d157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200012557600081815260208120601f850160051c81016020861015620001005750805b601f850160051c820191505b8181101562000121578281556001016200010c565b5050505b505050565b81516001600160401b0381111562000146576200014662000085565b6200015e816200015784546200009b565b84620000d7565b602080601f8311600181146200019657600084156200017d5750858301515b600019600386901b1c1916600185901b17855562000121565b600085815260208120601f198616915b82811015620001c757888601518255948401946001909101908401620001a6565b5085821015620001e65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051612892620002206000396000818161063d0152818161206801526120cb01526128926000f3fe608060405234801561001057600080fd5b50600436106102825760003560e01c80637e7aa62e116101585780637e7aa62e146104735780638979c87c1461047b5780638da7ad2314610483578063909a2ff6146104d857806395d89b41146104e0578063962ca496146104e857806399202454146104f05780639dc29fac146104f85780639ff054df1461050b578063a457c2d71461051e578063a9059cbb14610531578063b0fd1fc214610544578063b21d35f214610557578063b4800cdc14610560578063ba3ec74114610569578063bcfe394f14610571578063c0c6525914610579578063c56f0bab14610581578063ce653d5f146105a1578063dd62ed3e146105b4578063df282331146105b4578063e3af6d0a14610638578063e81917b41461065f578063ed2f236914610668578063f060482914610671578063f340faed14610679578063fed742691461068357600080fd5b80630237893214610287578063069612a5146102a357806306fdde03146102ac578063095ea7b3146102c15780630bfae56b146102e45780630f2e1228146102ec578063110d7fc2146102f457806316f9c8fd146102fc57806318160ddd146103375780631c2440821461033f5780631c560305146103485780631c6f212e1461035d57806323b872dd146103655780632a62d966146102f4578063313ce5671461037857806332870fda14610387578063395093511461038f5780633ccfd60b146103a257806345125715146103aa57806352c7f8dc146103b2578063543d36521461035d5780635bccb4c4146103ba57806361a52a36146103cd5780637010d7a1146103d757806370a082311461042f57806372475f94146104585780637b0472f014610460575b600080fd5b61029061016d81565b6040519081526020015b60405180910390f35b61029060085481565b6102b461068b565b60405161029a9190612419565b6102d46102cf366004612483565b61071d565b604051901515815260200161029a565b610290610737565b610290606381565b610290600081565b610304610748565b60405161029a91908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b600254610290565b61029060055481565b61035b610356366004612483565b6107b9565b005b610290600181565b6102d46103733660046124ad565b610a08565b6040516012815260200161029a565b610290605a81565b6102d461039d366004612483565b610a2c565b61035b610a4e565b610290610ba2565b61035b610bb1565b61035b6103c83660046124e9565b610cc2565b6102906201518081565b6103df610f64565b60405161029a919081516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a0918201519181019190915260c00190565b61029061043d36600461250b565b6001600160a01b031660009081526020819052604090205490565b610290600f81565b61035b61046e3660046124e9565b611009565b610290600281565b61029061117e565b6104b861049136600461250b565b600a6020526000908152604090208054600182015460028301546003909301549192909184565b60408051948552602085019390935291830152606082015260800161029a565b610290606481565b6102b4611188565b610290611197565b6102906111a1565b61035b610506366004612483565b6111ab565b61035b610519366004612526565b61135d565b6102d461052c366004612483565b6115d2565b6102d461053f366004612483565b61164d565b61029061055236600461253f565b61165b565b61029061138881565b61029060065481565b6102b46116ea565b610290611706565b610290600781565b61029061058f36600461250b565b600b6020526000908152604090205481565b6102906105af366004612571565b611715565b6106016105c236600461250b565b6009602052600090815260409020805460018201546002830154600384015460048501546005909501546001600160a01b039094169492939192909186565b604080516001600160a01b0390971687526020870195909552938501929092526060840152608083015260a082015260c00161029a565b6102907f000000000000000000000000000000000000000000000000000000000000000081565b610290610bb881565b61029060075481565b610290611740565b610290620186a081565b610290601481565b60606003805461069a906125a4565b80601f01602080910402602001604051908101604052809291908181526020018280546106c6906125a4565b80156107135780601f106106e857610100808354040283529160200191610713565b820191906000526020600020905b8154815290600101906020018083116106f657829003601f168201915b5050505050905090565b60003361072b818585611759565b60019150505b92915050565b6107456201518060646125f4565b81565b6107736040518060800160405280600081526020016000815260200160008152602001600081525090565b50336000908152600a6020908152604091829020825160808101845281548152600182015492810192909252600281015492820192909252600390910154606082015290565b33600090815260096020908152604091829020825160c08101845281546001600160a01b03908116825260018301549382019390935260028201549381019390935260038101546060840152600481015460808401526005015460a083015283166108795760405162461bcd60e51b815260206004820152602560248201527f4352616e6b3a2043616e6e6f742073686172652077697468207a65726f206164604482015264647265737360d81b60648201526084015b60405180910390fd5b600082116108c95760405162461bcd60e51b815260206004820181905260248201527f4352616e6b3a2043616e6e6f74207368617265207a65726f2070657263656e746044820152606401610870565b606582106109195760405162461bcd60e51b815260206004820181905260248201527f4352616e6b3a2043616e6e6f74207368617265203130302b2070657263656e746044820152606401610870565b600081606001511161093d5760405162461bcd60e51b81526004016108709061260b565b806040015142116109605760405162461bcd60e51b81526004016108709061263a565b600061098382606001518360200151846040015185608001518660a0015161187e565b61099590670de0b6b3a76400006125f4565b9050600060646109a585846125f4565b6109af9190612685565b905060006109bd82846126a7565b90506109ca335b8261197c565b6109d4868361197c565b6109dc611a49565b60405183815233906000805160206127f8833981519152906020015b60405180910390a2505050505050565b600033610a16858285611a9d565b610a21858585611b17565b506001949350505050565b60003361072b818585610a3f8383611715565b610a4991906126ba565b611759565b336000908152600a6020908152604091829020825160808101845281548152600182015492810192909252600281015492820183905260030154606082015290610ad15760405162461bcd60e51b815260206004820152601460248201527358454e3a206e6f207374616b652065786973747360601b6044820152606401610870565b6000610aef8260400151836000015184602001518560600151611cd3565b600780549192506000610b01836126cd565b9190505550816040015160086000828254610b1c91906126a7565b90915550610b3b905033828460400151610b3691906126ba565b61197c565b60408083015181519081526020810183905233917f92ccf450a286a957af52509bc1c9939d1a6a481783e142e41e2499f0bb66ebc6910160405180910390a25050336000908152600a60205260408120818155600181018290556002810182905560030155565b6000610bac611d31565b905090565b33600090815260096020908152604091829020825160c08101845281546001600160a01b031681526001820154928101929092526002810154928201929092526003820154606082018190526004830154608083015260059092015460a082015290610c2f5760405162461bcd60e51b81526004016108709061260b565b80604001514211610c525760405162461bcd60e51b81526004016108709061263a565b6000610c7582606001518360200151846040015185608001518660a0015161187e565b610c8790670de0b6b3a76400006125f4565b9050610c92336109c4565b610c9a611a49565b60405181815233906000805160206127f8833981519152906020015b60405180910390a25050565b33600090815260096020908152604091829020825160c08101845281546001600160a01b03168152600182015492810192909252600281015492820192909252600382015460608201526004820154608082015260059091015460a082015260658310610d715760405162461bcd60e51b815260206004820181905260248201527f4352616e6b3a2043616e6e6f74207368617265203e3130302070657263656e746044820152606401610870565b6000816060015111610d955760405162461bcd60e51b81526004016108709061260b565b80604001514211610db85760405162461bcd60e51b81526004016108709061263a565b6000610ddb82606001518360200151846040015185608001518660a0015161187e565b610ded90670de0b6b3a76400006125f4565b905060006064610dfd86846125f4565b610e079190612685565b90506000610e1582846126a7565b9050610e20336109c4565b610e28611a49565b60405183815233906000805160206127f88339815191529060200160405180910390a260008211610e6b5760405162461bcd60e51b8152600401610870906126e4565b6001610e7a62015180826125f4565b610e8491906126a7565b610e9162015180876125f4565b11610eae5760405162461bcd60e51b815260040161087090612712565b610ebd620151806103e86125f4565b610ec89060016126ba565b610ed562015180876125f4565b10610ef25760405162461bcd60e51b815260040161087090612745565b336000908152600a602052604090206002015415610f225760405162461bcd60e51b815260040161087090612778565b610f2c8286611e37565b604080518381526020810187905233917f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee9091016109f8565b610fa66040518060c0016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081525090565b5033600090815260096020908152604091829020825160c08101845281546001600160a01b03168152600182015492810192909252600281015492820192909252600382015460608201526004820154608082015260059091015460a082015290565b816110133361043d565b101561105b5760405162461bcd60e51b815260206004820152601760248201527658454e3a206e6f7420656e6f7567682062616c616e636560481b6044820152606401610870565b6000821161107b5760405162461bcd60e51b8152600401610870906126e4565b600161108a62015180826125f4565b61109491906126a7565b6110a162015180836125f4565b116110be5760405162461bcd60e51b815260040161087090612712565b6110cd620151806103e86125f4565b6110d89060016126ba565b6110e562015180836125f4565b106111025760405162461bcd60e51b815260040161087090612745565b336000908152600a6020526040902060020154156111325760405162461bcd60e51b815260040161087090612778565b61113c3383611eda565b6111468282611e37565b604080518381526020810183905233917f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee909101610cb6565b6000610bac61200e565b60606004805461069a906125a4565b6000610bac612052565b6000610bac6120bf565b600081116111f35760405162461bcd60e51b8152602060048201526015602482015274109d5c9b8e8810995b1bddc81b5a5b881b1a5b5a5d605a1b6044820152606401610870565b336040516301ffc9a760e01b815263543746b160e01b60048201526001600160a01b0391909116906301ffc9a790602401602060405180830381865afa158015611241573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126591906127a3565b6112b15760405162461bcd60e51b815260206004820152601e60248201527f4275726e3a206e6f74206120737570706f7274656420636f6e747261637400006044820152606401610870565b6112bc823383611a9d565b6112c68282611eda565b6001600160a01b0382166000908152600b6020526040812080548392906112ee9084906126ba565b9091555033905060405163543746b160e01b81526001600160a01b03848116600483015260248201849052919091169063543746b190604401600060405180830381600087803b15801561134157600080fd5b505af1158015611355573d6000803e3d6000fd5b505050505050565b600061136c62015180836125f4565b9050600161137d62015180826125f4565b61138791906126a7565b81116113d15760405162461bcd60e51b815260206004820152601960248201527821a930b7359d102a32b936903632b9b9903a3430b71036b4b760391b6044820152606401610870565b6113d9611d31565b6113e49060016126ba565b81106114415760405162461bcd60e51b815260206004820152602660248201527f4352616e6b3a205465726d206d6f7265207468616e2063757272656e74206d6160448201526578207465726d60d01b6064820152608401610870565b33600090815260096020526040902060030154156114a15760405162461bcd60e51b815260206004820152601f60248201527f4352616e6b3a204d696e7420616c726561647920696e2070726f6772657373006044820152606401610870565b60006040518060c001604052806114b53390565b6001600160a01b03168152602081018590526040016114d484426126ba565b815260200160055481526020016114e96120bf565b81526020016114f661200e565b9052336000908152600960209081526040808320845181546001600160a01b0319166001600160a01b039091161781559184015160018301558301516002820155606083015160038201556080830151600482015560a08301516005909101556006805492935090611567836127c5565b91905055506115733390565b6001600160a01b03167fe9149e1b5059238baed02fa659dbf4bd932fbcf760a431330df4d934bc942f3784600560008154809291906115b1906127c5565b909155506040805192835260208301919091520160405180910390a2505050565b600033816115e08286611715565b9050838110156116405760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610870565b610a218286868403611759565b60003361072b818585611b17565b60008061167261166a8761219b565b600f0b6121b9565b905060006116ae6116828561219b565b6116a561168e8861219b565b6116a561169a8b61219b565b600f88900b90612293565b600f0b90612293565b90506116d46116cc6116c16103e861219b565b600f84900b906122d1565b600f0b612328565b6001600160401b0316925050505b949350505050565b6040518060600160405280602581526020016128386025913981565b610745620151806103e86125f4565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600161174f62015180826125f4565b61074591906126a7565b6001600160a01b0383166117bb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610870565b6001600160a01b03821661181c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610870565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60008061188b85426126a7565b9050600061189882612344565b9050600073eb585163debb1e637c6d617de3bef99347cd75c8636d5433e68a6005546118c491906126a7565b6040516001600160e01b031960e084901b168152600481019190915260026024820152604401602060405180830381865af4158015611907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192b91906127de565b9050600061193b866103e86126ba565b9050600061194b83898c8561165b565b9050606461195985826126a7565b61196390836125f4565b61196d9190612685565b9b9a5050505050505050505050565b6001600160a01b0382166119d25760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610870565b80600260008282546119e491906126ba565b90915550506001600160a01b03821660009081526020819052604081208054839290611a119084906126ba565b90915550506040518181526001600160a01b038316906000906000805160206128188339815191529060200160405180910390a35050565b33600090815260096020908152604091829020825160c08101845281546001600160a01b03168152600182015492810192909252600281015492820192909252600382015460608201526004820154608082015260059091015460a082015290565b816110133361043d565b101561105b5760405162461bcd60e51b815260206004820152601760248201527658454e3a206e6f7420656e6f7567682062616c616e636560481b6044820152606401610870565b6000821161107b5760405162461bcd60e51b8152600401610870906126e4565b600161108a62015180826125f4565b61109491906126a7565b6110a162015180836125f4565b116110be5760405162461bcd60e51b815260040161087090612712565b6110cd620151806103e86125f4565b6110d89060016126ba565b6110e562015180836125f4565b106111025760405162461bcd60e51b815260040161087090612745565b336000908152600a6020526040902060020154156111325760405162461bcd60e51b815260040161087090612778565b61113c3383611eda565b6111468282611e37565b604080518381526020810183905233917f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee909101610cb6565b6000610bac61200e565b60606004805461069a906125a4565b6000610bac612052565b6000610bac6120bf565b600081116111f35760405162461bcd60e51b8152602060048201526015602482015274109d5c9b8e8810995b1bddc81b5a5b881b1a5b5a5d605a1b6044820152606401610870565b336040516301ffc9a760e01b815263543746b160e01b60048201526001600160a01b0391909116906301ffc9a790602401602060405180830381865afa158015611241573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126591906127a3565b6112b15760405162461bcd60e51b815260206004820152601e60248201527f4275726e3a206e6f74206120737570706f7274656420636f6e747261637400006044820152606401610870565b6112bc823383611a9d565b6112c68282611eda565b6001600160a01b0382166000908152600b6020526040812080548392906112ee9084906126ba565b9091555033905060405163543746b160e01b81526001600160a01b03848116600483015260248201849052919091169063543746b190604401600060405180830381600087803b15801561134157600080fd5b505af1158015611355573d6000803e3d6000fd5b505050505050565b600061136c62015180836125f4565b9050600161137d62015180826125f4565b61138791906126a7565b81116113d15760405162461bcd60e51b815260206004820152601960248201527821a930b7359d102a32b936903632b9b9903a3430b71036b4b760391b6044820152606401610870565b6113d9611d31565b6113e49060016126ba565b81106114415760405162461bcd60e51b815260206004820152602660248201527f4352616e6b3a205465726d206d6f7265207468616e2063757272656e74206d6160448201526578207465726d60d01b6064820152608401610870565b33600090815260096020526040902060030154156114a15760405162461bcd60e51b815260206004820152601f60248201527f4352616e6b3a204d696e7420616c726561647920696e2070726f6772657373006044820152606401610870565b60006040518060c001604052806114b53390565b6001600160a01b03168152602081018590526040016114d484426126ba565b815260200160055481526020016114e96120bf565b81526020016114f661200e565b9052336000908152600960209081526040808320845181546001600160a01b0319166001600160a01b039091161781559184015160018301558301516002820155606083015160038201556080830151600482015560a08301516005909101556006805492935090611567836127c5565b91905055506115733390565b6001600160a01b03167fe9149e1b5059238baed02fa659dbf4bd932fbcf760a431330df4d934bc942f3784600560008154809291906115b1906127c5565b909155506040805192835260208301919091520160405180910390a2505050565b600033816115e08286611715565b9050838110156116405760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610870565b610a218286868403611759565b60003361072b818585611b17565b60008061167261166a8761219b565b600f0b6121b9565b905060006116ae6116828561219b565b6116a561168e8861219b565b6116a561169a8b61219b565b600f88900b90612293565b600f0b90612293565b90506116d46116cc6116c16103e861219b565b600f84900b906122d1565b600f0b612328565b6001600160401b0316925050505b949350505050565b6040518060600160405280602581526020016128386025913981565b610745620151806103e86125f4565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166117bb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610870565b6001600160a01b038216611bdd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610870565b6001600160a01b03831660009081526020819052604090205481811015611c555760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610870565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611c8c9084906126ba565b92505081905550826001600160a01b0316846001600160a01b031660008051602061281883398151915284604051611cc691815260200190565b60405180910390a3611b11565b600082421115611d2657600061016d611cec86856125f4565b611cf990620f42406125f4565b611d039190612685565b90506305f5e100611d1482886125f4565b611d1e9190612685565b9150506116e2565b506000949350505050565b60006113886005541115611e29576000611d5f6116cc611d51600f61219b565b6116a561166a60055461219b565b6001600160401b031690506000611d7962015180836125f4565b611d876201518060646125f4565b611d9191906126ba565b905073eb585163debb1e637c6d617de3bef99347cd75c8637ae2b5c782611dbd620151806103e86125f4565b6040516001600160e01b031960e085901b16815260048101929092526024820152604401602060405180830381865af4158015611dfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e2291906127de565b9250505090565b610bac6201518060646125f4565b60405180608001604052808281526020016201518083611e5791906125f4565b611e6190426126ba565b8152602001838152602001611e74612052565b9052336000908152600a602090815260408083208451815591840151600183015583015160028201556060909201516003909101556007805491611eba836127c5565b91905055508160086000828254611ed191906126ba565b90915550505050565b6001600160a01b038216611f3a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610870565b6001600160a01b03821660009081526020819052604090205481811015611fae5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610870565b6001600160a01b0383166000908152602081905260408120838303905560028054849290611fdd9084906126a7565b90915550506040518281526000906001600160a01b0385169060008051602061281883398151915290602001611871565b600080620186a0600554600161202491906125f4565b61202e9190612685565b9050606481111561204157600091505090565b61204c8160646126a7565b91505090565b600080612063605a620151806125f4565b61208d7f0000000000000000000000000000000000000000000000000000000000000000426126a7565b6120979190612685565b9050806120a6600260146126a7565b10156120b457600291505090565b61204c8160146126a7565b600080620151806120f07f0000000000000000000000000000000000000000000000000000000000000000426126a7565b6120fa9190612685565b9050610bb88110156121935773eb585163debb1e637c6d617de3bef99347cd75c8636d5433e661212c83610bb86126a7565b6040516001600160e01b031960e084901b168152600481019190915260016024820152604401602060405180830381865af415801561216f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204c91906127de565b600191505090565b6000677fffffffffffffff8211156121b257600080fd5b5060401b90565b60008082600f0b136121ca57600080fd5b6000600f83900b600160401b81126121e4576040918201911d5b600160201b81126121f7576020918201911d5b620100008112612209576010918201911d5b610100811261221a576008918201911d5b6010811261222a576004918201911d5b6004811261223a576002918201911d5b60028112612249576001820191505b603f19820160401b600f85900b607f8490031b6001603f1b5b60008113156122885790800260ff81901c8281029390930192607f011c9060011d612262565b509095945050505050565b6000600f83810b9083900b0260401d60016001607f1b031981128015906122c1575060016001607f1b038113155b6122ca57600080fd5b9392505050565b600081600f0b6000036122e357600080fd5b600082600f0b604085600f0b901b816122fe576122fe61266f565b05905060016001607f1b031981128015906122c1575060016001607f1b038113156122ca57600080fd5b9392505050565b6000806123546201518084612685565b9050612362600160076126a7565b8111156123725750606392915050565b6000600160076123838460036126ba565b6001901b6123919190612685565b61239b91906126a7565b604051637ae2b5c760e01b8152600481018290526063602482015290915073eb585163debb1e637c6d617de3bef99347cd75c890637ae2b5c790604401602060405180830381865af41580156123f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e291906127de565b600060208083528351808285015260005b818110156124465785810183015185820160400152820161242a565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461247e57600080fd5b919050565b6000806040838503121561249657600080fd5b61249f83612467565b946020939093013593505050565b600080600080608085870312156124c257600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156124f057600080fd5b50508035926020909101359150565b60006020828403121561251157600080fd5b5035919050565b6000806000806080858703121561253057600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561255957600080fd5b61256283612467565b915061257060208401612467565b90509250929050565b600181811c9082168061258d57607f821691505b6020821081036125ad57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610731576107316125de565b6020808252601590820152744352616e6b3a204e6f206d696e742065786973747360581b604082015260600190565b60208082526019908201527858454e3a2042656c6f77206d696e207374616b65207465726d60381b604082015260600190565b634e487b7160e01b600052601260045260246000fd5b6000826126a257634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610731576107316125de565b80820180821115610731576107316125de565b6000816126dc576126dc6125de565b506000190190565b60208082526014908201527358454e3a2042656c6f77206d696e207374616b6560601b604082015260600190565b60208082526019908201527858454e3a2042656c6f77206d696e207374616b65207465726d60381b604082015260600190565b60208082526019908201527858454e3a2041626f7665206d6178207374616b65207465726d60381b604082015260600190565b60208082526011908201527058454e3a207374616b652065786973747360781b604082015260600190565b6000602082840312156127b557600080fd5b815180151581146122ca57600080fd5b6000602082840312156127f057600080fd5b505191905056fed74752b13281df13701575f3a507e9b1242e0b5fb040143211c481c1fce573a6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef404d724a61636b4c6576696e20406c62656c79616576206661697263727970746f2e6f7267a2646970667358221220871d2fbc4bf68f2b5fdf1d4004b8ecac86e2bd5bb3e8aa1d2288c83f345a82be64736f6c63430008110033" +bytecode = "0x60a06040526001600555348015610014575f5ffd5b506040518060400160405280600a81526020017f58454e2043727970746f000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f58454e0000000000000000000000000000000000000000000000000000000000815250816003908161009091906102ed565b5080600490816100a091906102ed565b50505042608081815250506103bc565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061012b57607f821691505b60208210810361013e5761013d6100e7565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026101a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610165565b6101aa8683610165565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6101ee6101e96101e4846101c2565b6101cb565b6101c2565b9050919050565b5f819050919050565b610207836101d4565b61021b610213826101f5565b848454610171565b825550505050565b5f5f905090565b610232610223565b61023d8184846101fe565b505050565b5b81811015610260576102555f8261022a565b600181019050610243565b5050565b601f8211156102a55761027681610144565b61027f84610156565b8101602085101561028e578190505b6102a261029a85610156565b830182610242565b50505b505050565b5f82821c905092915050565b5f6102c55f19846008026102aa565b1980831691505092915050565b5f6102dd83836102b6565b9150826002028217905092915050565b6102f6826100b0565b67ffffffffffffffff81111561030f5761030e6100ba565b5b6103198254610114565b610324828285610264565b5f60209050601f831160018114610355575f8415610343578287015190505b61034d85826102d2565b8655506103b4565b601f19841661036386610144565b5f5b8281101561038a57848901518255600182019150602085019450602081019050610365565b868310156103a757848901516103a3601f8916826102b6565b8355505b6001600288020188555050505b505050505050565b608051614b4f6103e25f395f81816123ef0152818161308501526130f60152614b4f5ff3fe608060405234801561000f575f5ffd5b5060043610610340575f3560e01c80637e7aa62e116101b6578063b4800cdc11610102578063df282331116100a0578063ed2f23691161007a578063ed2f2369146109bc578063f0604829146109da578063f340faed146109f8578063fed7426914610a1657610340565b8063df2823311461094b578063e3af6d0a14610980578063e81917b41461099e57610340565b8063c0c65259116100dc578063c0c65259146108af578063c56f0bab146108cd578063ce653d5f146108eb578063dd62ed3e1461091b57610340565b8063b4800cdc14610855578063ba3ec74114610873578063bcfe394f1461089157610340565b8063992024541161016f578063a457c2d711610149578063a457c2d7146107a7578063a9059cbb146107d7578063b0fd1fc214610807578063b21d35f21461083757610340565b806399202454146107515780639dc29fac1461076f5780639ff054df1461078b57610340565b80637e7aa62e146106885780638979c87c146106a65780638da7ad23146106c4578063909a2ff6146106f757806395d89b4114610715578063962ca4961461073357610340565b80632a62d96611610290578063543d36521161022e5780637010d7a1116102085780637010d7a11461060057806370a082311461061e57806372475f941461064e5780637b0472f01461066c57610340565b8063543d3652146105a85780635bccb4c4146105c657806361a52a36146105e257610340565b8063395093511161026a57806339509351146105465780633ccfd60b14610576578063451257151461058057806352c7f8dc1461059e57610340565b80632a62d966146104ec578063313ce5671461050a57806332870fda1461052857610340565b8063110d7fc2116102fd5780631c244082116102d75780631c244082146104645780631c560305146104825780631c6f212e1461049e57806323b872dd146104bc57610340565b8063110d7fc21461040a57806316f9c8fd1461042857806318160ddd1461044657610340565b80630237893214610344578063069612a51461036257806306fdde0314610380578063095ea7b31461039e5780630bfae56b146103ce5780630f2e1228146103ec575b5f5ffd5b61034c610a34565b6040516103599190613587565b60405180910390f35b61036a610a3a565b6040516103779190613587565b60405180910390f35b610388610a40565b6040516103959190613610565b60405180910390f35b6103b860048036038101906103b391906136b8565b610ad0565b6040516103c59190613710565b60405180910390f35b6103d6610af2565b6040516103e39190613587565b60405180910390f35b6103f4610b05565b6040516104019190613587565b60405180910390f35b610412610b0a565b60405161041f9190613587565b60405180910390f35b610430610b0e565b60405161043d919061378b565b60405180910390f35b61044e610b91565b60405161045b9190613587565b60405180910390f35b61046c610b9a565b6040516104799190613587565b60405180910390f35b61049c600480360381019061049791906136b8565b610ba0565b005b6104a6610ed8565b6040516104b39190613587565b60405180910390f35b6104d660048036038101906104d191906137a4565b610edd565b6040516104e39190613710565b60405180910390f35b6104f4610f0b565b6040516105019190613587565b60405180910390f35b610512610f0f565b60405161051f919061380f565b60405180910390f35b610530610f17565b60405161053d9190613587565b60405180910390f35b610560600480360381019061055b91906136b8565b610f1c565b60405161056d9190613710565b60405180910390f35b61057e610f52565b005b610588611143565b6040516105959190613587565b60405180910390f35b6105a6611151565b005b6105b061135e565b6040516105bd9190613587565b60405180910390f35b6105e060048036038101906105db9190613828565b611363565b005b6105ea6117e4565b6040516105f79190613587565b60405180910390f35b6106086117eb565b60405161061591906138ee565b60405180910390f35b61063860048036038101906106339190613907565b6118cd565b6040516106459190613587565b60405180910390f35b610656611912565b6040516106639190613587565b60405180910390f35b61068660048036038101906106819190613828565b611917565b005b610690611b81565b60405161069d9190613587565b60405180910390f35b6106ae611b86565b6040516106bb9190613587565b60405180910390f35b6106de60048036038101906106d99190613907565b611b94565b6040516106ee9493929190613932565b60405180910390f35b6106ff611bc0565b60405161070c9190613587565b60405180910390f35b61071d611bc5565b60405161072a9190613610565b60405180910390f35b61073b611c55565b6040516107489190613587565b60405180910390f35b610759611c63565b6040516107669190613587565b60405180910390f35b610789600480360381019061078491906136b8565b611c71565b005b6107a560048036038101906107a09190613975565b611e73565b005b6107c160048036038101906107bc91906136b8565b61216e565b6040516107ce9190613710565b60405180910390f35b6107f160048036038101906107ec91906136b8565b6121e3565b6040516107fe9190613710565b60405180910390f35b610821600480360381019061081c91906139a0565b612205565b60405161082e9190613587565b60405180910390f35b61083f6122b9565b60405161084c9190613587565b60405180910390f35b61085d6122bf565b60405161086a9190613587565b60405180910390f35b61087b6122c5565b6040516108889190613610565b60405180910390f35b6108996122e1565b6040516108a69190613587565b60405180910390f35b6108b76122e6565b6040516108c49190613587565b60405180910390f35b6108d56122fa565b6040516108e29190613587565b60405180910390f35b61090560048036038101906109009190613907565b6122ff565b6040516109129190613587565b60405180910390f35b61093560048036038101906109309190613a04565b612314565b6040516109429190613587565b60405180910390f35b61096560048036038101906109609190613907565b612396565b60405161097796959493929190613a51565b60405180910390f35b6109886123ed565b6040516109959190613587565b60405180910390f35b6109a6612411565b6040516109b39190613587565b60405180910390f35b6109c4612417565b6040516109d19190613587565b60405180910390f35b6109e261241d565b6040516109ef9190613587565b60405180910390f35b610a0061243c565b604051610a0d9190613587565b60405180910390f35b610a1e612443565b604051610a2b9190613587565b60405180910390f35b61016d81565b60085481565b606060038054610a4f90613add565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7b90613add565b8015610ac65780601f10610a9d57610100808354040283529160200191610ac6565b820191905f5260205f20905b815481529060010190602001808311610aa957829003601f168201915b5050505050905090565b5f5f610ada612448565b9050610ae781858561244f565b600191505092915050565b620151806064610b029190613b3a565b81565b606381565b5f81565b610b16613505565b600a5f610b21612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015481525050905090565b5f600254905090565b60055481565b5f60095f610bac612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060c00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152505090505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ce6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdd90613beb565b60405180910390fd5b5f8211610d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1f90613c53565b60405180910390fd5b60658210610d6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6290613cbb565b60405180910390fd5b5f816060015111610db1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da890613d23565b60405180910390fd5b80604001514211610df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dee90613d8b565b60405180910390fd5b5f670de0b6b3a7640000610e2283606001518460200151856040015186608001518760a00151612612565b610e2c9190613b3a565b90505f60648483610e3d9190613b3a565b610e479190613dd6565b90505f8183610e569190613e06565b9050610e69610e63612448565b8261270b565b610e73868361270b565b610e7b612859565b610e83612448565b73ffffffffffffffffffffffffffffffffffffffff167fd74752b13281df13701575f3a507e9b1242e0b5fb040143211c481c1fce573a684604051610ec89190613587565b60405180910390a2505050505050565b600181565b5f5f610ee7612448565b9050610ef4858285612901565b610eff85858561298c565b60019150509392505050565b5f81565b5f6012905090565b605a81565b5f5f610f26612448565b9050610f47818585610f388589612314565b610f429190613e39565b61244f565b600191505092915050565b5f600a5f610f5e612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060800160405290815f8201548152602001600182015481526020016002820154815260200160038201548152505090505f816040015111611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100890613eb6565b60405180910390fd5b5f61102d8260400151835f015184602001518560600151612bf8565b905060075f81548092919061104190613ed4565b9190505550816040015160085f82825461105b9190613e06565b9250508190555061108261106d612448565b82846040015161107d9190613e39565b61270b565b61108a612448565b73ffffffffffffffffffffffffffffffffffffffff167f92ccf450a286a957af52509bc1c9939d1a6a481783e142e41e2499f0bb66ebc68360400151836040516110d5929190613efb565b60405180910390a2600a5f6110e8612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f5f82015f9055600182015f9055600282015f9055600382015f905550505050565b5f61114c612c5a565b905090565b5f60095f61115d612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060c00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152505090505f81606001511161126f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126690613d23565b60405180910390fd5b806040015142116112b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ac90613d8b565b60405180910390fd5b5f670de0b6b3a76400006112e083606001518460200151856040015186608001518760a00151612612565b6112ea9190613b3a565b90506112fd6112f7612448565b8261270b565b611305612859565b61130d612448565b73ffffffffffffffffffffffffffffffffffffffff167fd74752b13281df13701575f3a507e9b1242e0b5fb040143211c481c1fce573a6826040516113529190613587565b60405180910390a25050565b600181565b5f60095f61136f612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060c00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152505090506065831061147e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147590613f6c565b60405180910390fd5b5f8160600151116114c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bb90613d23565b60405180910390fd5b8060400151421161150a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150190613d8b565b60405180910390fd5b5f670de0b6b3a764000061153583606001518460200151856040015186608001518760a00151612612565b61153f9190613b3a565b90505f606485836115509190613b3a565b61155a9190613dd6565b90505f81836115699190613e06565b905061157c611576612448565b8261270b565b611584612859565b61158c612448565b73ffffffffffffffffffffffffffffffffffffffff167fd74752b13281df13701575f3a507e9b1242e0b5fb040143211c481c1fce573a6846040516115d19190613587565b60405180910390a25f821161161b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161290613fd4565b60405180910390fd5b600162015180600161162d9190613b3a565b6116379190613e06565b62015180866116469190613b3a565b11611686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167d9061403c565b60405180910390fd5b6001620151806103e86116999190613b3a565b6116a39190613e39565b62015180866116b29190613b3a565b106116f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e9906140a4565b60405180910390fd5b5f600a5f6116fe612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600201541461177b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117729061410c565b60405180910390fd5b6117858286612d86565b61178d612448565b73ffffffffffffffffffffffffffffffffffffffff167f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee9083876040516117d4929190613efb565b60405180910390a2505050505050565b6201518081565b6117f3613529565b60095f6117fe612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060c00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481525050905090565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b600f81565b81611928611923612448565b6118cd565b1015611969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196090614174565b60405180910390fd5b5f82116119ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a290613fd4565b60405180910390fd5b60016201518060016119bd9190613b3a565b6119c79190613e06565b62015180826119d69190613b3a565b11611a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0d9061403c565b60405180910390fd5b6001620151806103e8611a299190613b3a565b611a339190613e39565b6201518082611a429190613b3a565b10611a82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a79906140a4565b60405180910390fd5b5f600a5f611a8e612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015414611b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b029061410c565b60405180910390fd5b611b1c611b16612448565b83612e67565b611b268282612d86565b611b2e612448565b73ffffffffffffffffffffffffffffffffffffffff167f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee908383604051611b75929190613efb565b60405180910390a25050565b600281565b5f611b8f61302a565b905090565b600a602052805f5260405f205f91509050805f0154908060010154908060020154908060030154905084565b606481565b606060048054611bd490613add565b80601f0160208091040260200160405190810160405280929190818152602001828054611c0090613add565b8015611c4b5780601f10611c2257610100808354040283529160200191611c4b565b820191905f5260205f20905b815481529060010190602001808311611c2e57829003601f168201915b5050505050905090565b5f611c5e613071565b905090565b5f611c6c6130ee565b905090565b5f8111611cb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611caa906141dc565b60405180910390fd5b611cbb612448565b73ffffffffffffffffffffffffffffffffffffffff166301ffc9a77f543746b1000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401611d139190614234565b602060405180830381865afa158015611d2e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d529190614277565b611d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d88906142ec565b60405180910390fd5b611da382611d9d612448565b83612901565b611dad8282612e67565b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611df99190613e39565b92505081905550611e08612448565b73ffffffffffffffffffffffffffffffffffffffff1663543746b183836040518363ffffffff1660e01b8152600401611e4292919061430a565b5f604051808303815f87803b158015611e59575f5ffd5b505af1158015611e6b573d5f5f3e3d5ffd5b505050505050565b5f6201518082611e839190613b3a565b90506001620151806001611e979190613b3a565b611ea19190613e06565b8111611ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed99061437b565b60405180910390fd5b6001611eec612c5a565b611ef69190613e39565b8110611f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2e90614409565b60405180910390fd5b5f60095f611f43612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206003015414611fc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb790614471565b60405180910390fd5b5f6040518060c00160405280611fd4612448565b73ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183426120019190613e39565b815260200160055481526020016120166130ee565b815260200161202361302a565b81525090508060095f612034612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015590505060065f8154809291906120f89061448f565b9190505550612105612448565b73ffffffffffffffffffffffffffffffffffffffff167fe9149e1b5059238baed02fa659dbf4bd932fbcf760a431330df4d934bc942f378460055f81548092919061214f9061448f565b91905055604051612161929190613efb565b60405180910390a2505050565b5f5f612178612448565b90505f6121858286612314565b9050838110156121ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c190614546565b60405180910390fd5b6121d7828686840361244f565b60019250505092915050565b5f5f6121ed612448565b90506121fa81858561298c565b600191505092915050565b5f5f61221b612213876131cd565b600f0b6131ee565b90505f61227661222a856131cd565b612265612236886131cd565b6122546122428b6131cd565b87600f0b61330d90919063ffffffff16565b600f0b61330d90919063ffffffff16565b600f0b61330d90919063ffffffff16565b90506122a361229b6122896103e86131cd565b83600f0b61337690919063ffffffff16565b600f0b6133fb565b67ffffffffffffffff1692505050949350505050565b61138881565b60065481565b604051806060016040528060258152602001614af56025913981565b600181565b620151806103e86122f79190613b3a565b81565b600781565b600b602052805f5260405f205f915090505481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6009602052805f5260405f205f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154908060040154908060050154905086565b7f000000000000000000000000000000000000000000000000000000000000000081565b610bb881565b60075481565b600162015180600161242f9190613b3a565b6124399190613e06565b81565b620186a081565b601481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b4906145d4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361252b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252290614662565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126059190613587565b60405180910390a3505050565b5f5f84426126209190613e06565b90505f61262c8261341a565b90505f73000000000000000000000000{XENMath}636d5433e68a6005546126579190613e06565b60026040518363ffffffff1660e01b81526004016126769291906146d1565b602060405180830381865af4158015612691573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126b5919061470c565b90505f856103e86126c69190613e39565b90505f6126d583898c85612205565b905060648460646126e69190613e06565b826126f19190613b3a565b6126fb9190613dd6565b9550505050505095945050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612779576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277090614781565b60405180910390fd5b6127845f83836134fb565b8060025f8282546127959190613e39565b92505081905550805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128429190613587565b60405180910390a36128555f8383613500565b5050565b60095f612864612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f5f82015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182015f9055600282015f9055600382015f9055600482015f9055600582015f9055505060065f8154809291906128fa90613ed4565b9190505550565b5f61290c8484612314565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146129865781811015612978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296f906147e9565b60405180910390fd5b612985848484840361244f565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f190614877565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5f90614905565b60405180910390fd5b612a738383836134fb565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aed90614993565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612bdf9190613587565b60405180910390a3612bf2848484613500565b50505050565b5f82421115612c4e575f61016d620f42408685612c159190613b3a565b612c1f9190613b3a565b612c299190613dd6565b90506305f5e1008187612c3c9190613b3a565b612c469190613dd6565b915050612c52565b5f90505b949350505050565b5f6113886005541115612d70575f612ca7612c9f612c78600f6131cd565b612c8e612c866005546131cd565b600f0b6131ee565b600f0b61330d90919063ffffffff16565b600f0b6133fb565b67ffffffffffffffff1690505f6201518082612cc39190613b3a565b620151806064612cd39190613b3a565b612cdd9190613e39565b905073000000000000000000000000{XENMath}637ae2b5c782620151806103e8612d0b9190613b3a565b6040518363ffffffff1660e01b8152600401612d289291906149b1565b602060405180830381865af4158015612d43573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d67919061470c565b92505050612d83565b620151806064612d809190613b3a565b90505b90565b60405180608001604052808281526020016201518083612da69190613b3a565b42612db19190613e39565b8152602001838152602001612dc4613071565b815250600a5f612dd2612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f015560208201518160010155604082015181600201556060820151816003015590505060075f815480929190612e469061448f565b91905055508160085f828254612e5c9190613e39565b925050819055505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ed5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ecc90614a48565b60405180910390fd5b612ee0825f836134fb565b5f5f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5a90614ad6565b60405180910390fd5b8181035f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160025f82825403925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516130129190613587565b60405180910390a3613025835f84613500565b505050565b5f5f620186a0600554600161303f9190613b3a565b6130499190613dd6565b9050606481111561305d575f91505061306e565b80606461306a9190613e06565b9150505b90565b5f5f605a620151806130839190613b3a565b7f0000000000000000000000000000000000000000000000000000000000000000426130af9190613e06565b6130b99190613dd6565b905080600260146130ca9190613e06565b10156130da5760029150506130eb565b8060146130e79190613e06565b9150505b90565b5f5f620151807f0000000000000000000000000000000000000000000000000000000000000000426131209190613e06565b61312a9190613dd6565b9050610bb88110156131c45773000000000000000000000000{XENMath}636d5433e682610bb861315e9190613e06565b60016040518363ffffffff1660e01b815260040161317d9291906149b1565b602060405180830381865af4158015613198573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131bc919061470c565b9150506131ca565b60019150505b90565b5f677fffffffffffffff8211156131e2575f5ffd5b604082901b9050919050565b5f5f82600f0b136131fd575f5ffd5b5f5f90505f83600f0b905068010000000000000000811261322657604081901d90506040820191505b640100000000811261324057602081901d90506020820191505b62010000811261325857601081901d90506010820191505b610100811261326f57600881901d90506008820191505b6010811261328557600481901d90506004820191505b6004811261329b57600281901d90506002820191505b600281126132aa576001820191505b5f6040808403901b90505f83607f0386600f0b901b90505f67800000000000000090505b5f8113156133005781820291505f60ff83901c905080607f0183901c92508082028401935050600181901d90506132ce565b5081945050505050919050565b5f5f604083600f0b85600f0b02901d90507fffffffffffffffffffffffffffffffff80000000000000000000000000000000600f0b811215801561336457506f7fffffffffffffffffffffffffffffff600f0b8113155b61336c575f5ffd5b8091505092915050565b5f5f82600f0b03613385575f5ffd5b5f82600f0b604085600f0b901b816133a05761339f613da9565b5b0590507fffffffffffffffffffffffffffffffff80000000000000000000000000000000600f0b81121580156133e957506f7fffffffffffffffffffffffffffffff600f0b8113155b6133f1575f5ffd5b8091505092915050565b5f5f82600f0b121561340b575f5ffd5b604082600f0b901d9050919050565b5f5f620151808361342b9190613dd6565b90506001600761343b9190613e06565b81111561344c5760639150506134f6565b5f6001600760038461345e9190613e39565b6001901b61346c9190613dd6565b6134769190613e06565b905073000000000000000000000000{XENMath}637ae2b5c78260636040518363ffffffff1660e01b81526004016134b29291906149b1565b602060405180830381865af41580156134cd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134f1919061470c565b925050505b919050565b505050565b505050565b60405180608001604052805f81526020015f81526020015f81526020015f81525090565b6040518060c001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5f819050919050565b6135818161356f565b82525050565b5f60208201905061359a5f830184613578565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6135e2826135a0565b6135ec81856135aa565b93506135fc8185602086016135ba565b613605816135c8565b840191505092915050565b5f6020820190508181035f83015261362881846135d8565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61365d82613634565b9050919050565b61366d81613653565b8114613677575f5ffd5b50565b5f8135905061368881613664565b92915050565b6136978161356f565b81146136a1575f5ffd5b50565b5f813590506136b28161368e565b92915050565b5f5f604083850312156136ce576136cd613630565b5b5f6136db8582860161367a565b92505060206136ec858286016136a4565b9150509250929050565b5f8115159050919050565b61370a816136f6565b82525050565b5f6020820190506137235f830184613701565b92915050565b6137328161356f565b82525050565b608082015f82015161374c5f850182613729565b50602082015161375f6020850182613729565b5060408201516137726040850182613729565b5060608201516137856060850182613729565b50505050565b5f60808201905061379e5f830184613738565b92915050565b5f5f5f606084860312156137bb576137ba613630565b5b5f6137c88682870161367a565b93505060206137d98682870161367a565b92505060406137ea868287016136a4565b9150509250925092565b5f60ff82169050919050565b613809816137f4565b82525050565b5f6020820190506138225f830184613800565b92915050565b5f5f6040838503121561383e5761383d613630565b5b5f61384b858286016136a4565b925050602061385c858286016136a4565b9150509250929050565b61386f81613653565b82525050565b60c082015f8201516138895f850182613866565b50602082015161389c6020850182613729565b5060408201516138af6040850182613729565b5060608201516138c26060850182613729565b5060808201516138d56080850182613729565b5060a08201516138e860a0850182613729565b50505050565b5f60c0820190506139015f830184613875565b92915050565b5f6020828403121561391c5761391b613630565b5b5f6139298482850161367a565b91505092915050565b5f6080820190506139455f830187613578565b6139526020830186613578565b61395f6040830185613578565b61396c6060830184613578565b95945050505050565b5f6020828403121561398a57613989613630565b5b5f613997848285016136a4565b91505092915050565b5f5f5f5f608085870312156139b8576139b7613630565b5b5f6139c5878288016136a4565b94505060206139d6878288016136a4565b93505060406139e7878288016136a4565b92505060606139f8878288016136a4565b91505092959194509250565b5f5f60408385031215613a1a57613a19613630565b5b5f613a278582860161367a565b9250506020613a388582860161367a565b9150509250929050565b613a4b81613653565b82525050565b5f60c082019050613a645f830189613a42565b613a716020830188613578565b613a7e6040830187613578565b613a8b6060830186613578565b613a986080830185613578565b613aa560a0830184613578565b979650505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613af457607f821691505b602082108103613b0757613b06613ab0565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613b448261356f565b9150613b4f8361356f565b9250828202613b5d8161356f565b91508282048414831517613b7457613b73613b0d565b5b5092915050565b7f4352616e6b3a2043616e6e6f742073686172652077697468207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613bd56025836135aa565b9150613be082613b7b565b604082019050919050565b5f6020820190508181035f830152613c0281613bc9565b9050919050565b7f4352616e6b3a2043616e6e6f74207368617265207a65726f2070657263656e745f82015250565b5f613c3d6020836135aa565b9150613c4882613c09565b602082019050919050565b5f6020820190508181035f830152613c6a81613c31565b9050919050565b7f4352616e6b3a2043616e6e6f74207368617265203130302b2070657263656e745f82015250565b5f613ca56020836135aa565b9150613cb082613c71565b602082019050919050565b5f6020820190508181035f830152613cd281613c99565b9050919050565b7f4352616e6b3a204e6f206d696e742065786973747300000000000000000000005f82015250565b5f613d0d6015836135aa565b9150613d1882613cd9565b602082019050919050565b5f6020820190508181035f830152613d3a81613d01565b9050919050565b7f4352616e6b3a204d696e74206d61747572697479206e6f7420726561636865645f82015250565b5f613d756020836135aa565b9150613d8082613d41565b602082019050919050565b5f6020820190508181035f830152613da281613d69565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613de08261356f565b9150613deb8361356f565b925082613dfb57613dfa613da9565b5b828204905092915050565b5f613e108261356f565b9150613e1b8361356f565b9250828203905081811115613e3357613e32613b0d565b5b92915050565b5f613e438261356f565b9150613e4e8361356f565b9250828201905080821115613e6657613e65613b0d565b5b92915050565b7f58454e3a206e6f207374616b65206578697374730000000000000000000000005f82015250565b5f613ea06014836135aa565b9150613eab82613e6c565b602082019050919050565b5f6020820190508181035f830152613ecd81613e94565b9050919050565b5f613ede8261356f565b91505f8203613ef057613eef613b0d565b5b600182039050919050565b5f604082019050613f0e5f830185613578565b613f1b6020830184613578565b9392505050565b7f4352616e6b3a2043616e6e6f74207368617265203e3130302070657263656e745f82015250565b5f613f566020836135aa565b9150613f6182613f22565b602082019050919050565b5f6020820190508181035f830152613f8381613f4a565b9050919050565b7f58454e3a2042656c6f77206d696e207374616b650000000000000000000000005f82015250565b5f613fbe6014836135aa565b9150613fc982613f8a565b602082019050919050565b5f6020820190508181035f830152613feb81613fb2565b9050919050565b7f58454e3a2042656c6f77206d696e207374616b65207465726d000000000000005f82015250565b5f6140266019836135aa565b915061403182613ff2565b602082019050919050565b5f6020820190508181035f8301526140538161401a565b9050919050565b7f58454e3a2041626f7665206d6178207374616b65207465726d000000000000005f82015250565b5f61408e6019836135aa565b91506140998261405a565b602082019050919050565b5f6020820190508181035f8301526140bb81614082565b9050919050565b7f58454e3a207374616b65206578697374730000000000000000000000000000005f82015250565b5f6140f66011836135aa565b9150614101826140c2565b602082019050919050565b5f6020820190508181035f830152614123816140ea565b9050919050565b7f58454e3a206e6f7420656e6f7567682062616c616e63650000000000000000005f82015250565b5f61415e6017836135aa565b91506141698261412a565b602082019050919050565b5f6020820190508181035f83015261418b81614152565b9050919050565b7f4275726e3a2042656c6f77206d696e206c696d697400000000000000000000005f82015250565b5f6141c66015836135aa565b91506141d182614192565b602082019050919050565b5f6020820190508181035f8301526141f3816141ba565b9050919050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61422e816141fa565b82525050565b5f6020820190506142475f830184614225565b92915050565b614256816136f6565b8114614260575f5ffd5b50565b5f815190506142718161424d565b92915050565b5f6020828403121561428c5761428b613630565b5b5f61429984828501614263565b91505092915050565b7f4275726e3a206e6f74206120737570706f7274656420636f6e747261637400005f82015250565b5f6142d6601e836135aa565b91506142e1826142a2565b602082019050919050565b5f6020820190508181035f830152614303816142ca565b9050919050565b5f60408201905061431d5f830185613a42565b61432a6020830184613578565b9392505050565b7f4352616e6b3a205465726d206c657373207468616e206d696e000000000000005f82015250565b5f6143656019836135aa565b915061437082614331565b602082019050919050565b5f6020820190508181035f83015261439281614359565b9050919050565b7f4352616e6b3a205465726d206d6f7265207468616e2063757272656e74206d615f8201527f78207465726d0000000000000000000000000000000000000000000000000000602082015250565b5f6143f36026836135aa565b91506143fe82614399565b604082019050919050565b5f6020820190508181035f830152614420816143e7565b9050919050565b7f4352616e6b3a204d696e7420616c726561647920696e2070726f6772657373005f82015250565b5f61445b601f836135aa565b915061446682614427565b602082019050919050565b5f6020820190508181035f8301526144888161444f565b9050919050565b5f6144998261356f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036144cb576144ca613b0d565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6145306025836135aa565b915061453b826144d6565b604082019050919050565b5f6020820190508181035f83015261455d81614524565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6145be6024836135aa565b91506145c982614564565b604082019050919050565b5f6020820190508181035f8301526145eb816145b2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61464c6022836135aa565b9150614657826145f2565b604082019050919050565b5f6020820190508181035f83015261467981614640565b9050919050565b6146898161356f565b82525050565b5f819050919050565b5f819050919050565b5f6146bb6146b66146b18461468f565b614698565b61356f565b9050919050565b6146cb816146a1565b82525050565b5f6040820190506146e45f830185614680565b6146f160208301846146c2565b9392505050565b5f815190506147068161368e565b92915050565b5f6020828403121561472157614720613630565b5b5f61472e848285016146f8565b91505092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f61476b601f836135aa565b915061477682614737565b602082019050919050565b5f6020820190508181035f8301526147988161475f565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f6147d3601d836135aa565b91506147de8261479f565b602082019050919050565b5f6020820190508181035f830152614800816147c7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6148616025836135aa565b915061486c82614807565b604082019050919050565b5f6020820190508181035f83015261488e81614855565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6148ef6023836135aa565b91506148fa82614895565b604082019050919050565b5f6020820190508181035f83015261491c816148e3565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61497d6026836135aa565b915061498882614923565b604082019050919050565b5f6020820190508181035f8301526149aa81614971565b9050919050565b5f6040820190506149c45f830185614680565b6149d16020830184614680565b9392505050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f614a326021836135aa565b9150614a3d826149d8565b604082019050919050565b5f6020820190508181035f830152614a5f81614a26565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f614ac06022836135aa565b9150614acb82614a66565b604082019050919050565b5f6020820190508181035f830152614aed81614ab4565b905091905056fe404d724a61636b4c6576696e20406c62656c79616576206661697263727970746f2e6f7267a2646970667358221220dde80958ed119700481648234ceae7c3bc08c9b9c239a4bd75f4f9c2549d8d5664736f6c634300081b0033" [[create]] name = "XENTorrent" @@ -19,9 +24,16 @@ bytecode = "6101406040526127116007553480156200001857600080fd5b506040516200478d38 # deploy 128 contracts doing XEN. Note that term is just the number of days until a user can call claimMintReward(), however our test script doesn't call it as it's not the primary driver of state growth. [[spam]] +# [spam.tx] +# kind = "bulk_claim_rank" +# to = "{XENTorrent}" +# from_pool = "admin" +# signature = "bulkClaimRank(uint256 count, uint256 term)" +# args = ["128", "1"] + [spam.tx] -kind = "bulk_claim_rank" -to = "{XENTorrent}" +kind = "claim_rank" +to = "{XENCrypto}" from_pool = "admin" -signature = "bulkClaimRank(uint256 count, uint256 term)" -args = ["128", "1"] \ No newline at end of file +signature = "claimRank(uint256 term)" +args = ["1"] \ No newline at end of file From 5609130497bf641238dec9136bd445c14286c8bf Mon Sep 17 00:00:00 2001 From: fahimahmedx Date: Tue, 29 Apr 2025 20:25:29 -0400 Subject: [PATCH 4/5] fix XENCrypto contract bytecode --- scenarios/xen.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scenarios/xen.toml b/scenarios/xen.toml index e446425c..cd5b62e9 100644 --- a/scenarios/xen.toml +++ b/scenarios/xen.toml @@ -13,7 +13,7 @@ bytecode = "0x61039f61004d600b8282823980515f1a6073146041577f4e487b71000000000000 [[create]] name = "XENCrypto" from_pool = "admin" -bytecode = "0x60a06040526001600555348015610014575f5ffd5b506040518060400160405280600a81526020017f58454e2043727970746f000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f58454e0000000000000000000000000000000000000000000000000000000000815250816003908161009091906102ed565b5080600490816100a091906102ed565b50505042608081815250506103bc565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061012b57607f821691505b60208210810361013e5761013d6100e7565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026101a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610165565b6101aa8683610165565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6101ee6101e96101e4846101c2565b6101cb565b6101c2565b9050919050565b5f819050919050565b610207836101d4565b61021b610213826101f5565b848454610171565b825550505050565b5f5f905090565b610232610223565b61023d8184846101fe565b505050565b5b81811015610260576102555f8261022a565b600181019050610243565b5050565b601f8211156102a55761027681610144565b61027f84610156565b8101602085101561028e578190505b6102a261029a85610156565b830182610242565b50505b505050565b5f82821c905092915050565b5f6102c55f19846008026102aa565b1980831691505092915050565b5f6102dd83836102b6565b9150826002028217905092915050565b6102f6826100b0565b67ffffffffffffffff81111561030f5761030e6100ba565b5b6103198254610114565b610324828285610264565b5f60209050601f831160018114610355575f8415610343578287015190505b61034d85826102d2565b8655506103b4565b601f19841661036386610144565b5f5b8281101561038a57848901518255600182019150602085019450602081019050610365565b868310156103a757848901516103a3601f8916826102b6565b8355505b6001600288020188555050505b505050505050565b608051614b4f6103e25f395f81816123ef0152818161308501526130f60152614b4f5ff3fe608060405234801561000f575f5ffd5b5060043610610340575f3560e01c80637e7aa62e116101b6578063b4800cdc11610102578063df282331116100a0578063ed2f23691161007a578063ed2f2369146109bc578063f0604829146109da578063f340faed146109f8578063fed7426914610a1657610340565b8063df2823311461094b578063e3af6d0a14610980578063e81917b41461099e57610340565b8063c0c65259116100dc578063c0c65259146108af578063c56f0bab146108cd578063ce653d5f146108eb578063dd62ed3e1461091b57610340565b8063b4800cdc14610855578063ba3ec74114610873578063bcfe394f1461089157610340565b8063992024541161016f578063a457c2d711610149578063a457c2d7146107a7578063a9059cbb146107d7578063b0fd1fc214610807578063b21d35f21461083757610340565b806399202454146107515780639dc29fac1461076f5780639ff054df1461078b57610340565b80637e7aa62e146106885780638979c87c146106a65780638da7ad23146106c4578063909a2ff6146106f757806395d89b4114610715578063962ca4961461073357610340565b80632a62d96611610290578063543d36521161022e5780637010d7a1116102085780637010d7a11461060057806370a082311461061e57806372475f941461064e5780637b0472f01461066c57610340565b8063543d3652146105a85780635bccb4c4146105c657806361a52a36146105e257610340565b8063395093511161026a57806339509351146105465780633ccfd60b14610576578063451257151461058057806352c7f8dc1461059e57610340565b80632a62d966146104ec578063313ce5671461050a57806332870fda1461052857610340565b8063110d7fc2116102fd5780631c244082116102d75780631c244082146104645780631c560305146104825780631c6f212e1461049e57806323b872dd146104bc57610340565b8063110d7fc21461040a57806316f9c8fd1461042857806318160ddd1461044657610340565b80630237893214610344578063069612a51461036257806306fdde0314610380578063095ea7b31461039e5780630bfae56b146103ce5780630f2e1228146103ec575b5f5ffd5b61034c610a34565b6040516103599190613587565b60405180910390f35b61036a610a3a565b6040516103779190613587565b60405180910390f35b610388610a40565b6040516103959190613610565b60405180910390f35b6103b860048036038101906103b391906136b8565b610ad0565b6040516103c59190613710565b60405180910390f35b6103d6610af2565b6040516103e39190613587565b60405180910390f35b6103f4610b05565b6040516104019190613587565b60405180910390f35b610412610b0a565b60405161041f9190613587565b60405180910390f35b610430610b0e565b60405161043d919061378b565b60405180910390f35b61044e610b91565b60405161045b9190613587565b60405180910390f35b61046c610b9a565b6040516104799190613587565b60405180910390f35b61049c600480360381019061049791906136b8565b610ba0565b005b6104a6610ed8565b6040516104b39190613587565b60405180910390f35b6104d660048036038101906104d191906137a4565b610edd565b6040516104e39190613710565b60405180910390f35b6104f4610f0b565b6040516105019190613587565b60405180910390f35b610512610f0f565b60405161051f919061380f565b60405180910390f35b610530610f17565b60405161053d9190613587565b60405180910390f35b610560600480360381019061055b91906136b8565b610f1c565b60405161056d9190613710565b60405180910390f35b61057e610f52565b005b610588611143565b6040516105959190613587565b60405180910390f35b6105a6611151565b005b6105b061135e565b6040516105bd9190613587565b60405180910390f35b6105e060048036038101906105db9190613828565b611363565b005b6105ea6117e4565b6040516105f79190613587565b60405180910390f35b6106086117eb565b60405161061591906138ee565b60405180910390f35b61063860048036038101906106339190613907565b6118cd565b6040516106459190613587565b60405180910390f35b610656611912565b6040516106639190613587565b60405180910390f35b61068660048036038101906106819190613828565b611917565b005b610690611b81565b60405161069d9190613587565b60405180910390f35b6106ae611b86565b6040516106bb9190613587565b60405180910390f35b6106de60048036038101906106d99190613907565b611b94565b6040516106ee9493929190613932565b60405180910390f35b6106ff611bc0565b60405161070c9190613587565b60405180910390f35b61071d611bc5565b60405161072a9190613610565b60405180910390f35b61073b611c55565b6040516107489190613587565b60405180910390f35b610759611c63565b6040516107669190613587565b60405180910390f35b610789600480360381019061078491906136b8565b611c71565b005b6107a560048036038101906107a09190613975565b611e73565b005b6107c160048036038101906107bc91906136b8565b61216e565b6040516107ce9190613710565b60405180910390f35b6107f160048036038101906107ec91906136b8565b6121e3565b6040516107fe9190613710565b60405180910390f35b610821600480360381019061081c91906139a0565b612205565b60405161082e9190613587565b60405180910390f35b61083f6122b9565b60405161084c9190613587565b60405180910390f35b61085d6122bf565b60405161086a9190613587565b60405180910390f35b61087b6122c5565b6040516108889190613610565b60405180910390f35b6108996122e1565b6040516108a69190613587565b60405180910390f35b6108b76122e6565b6040516108c49190613587565b60405180910390f35b6108d56122fa565b6040516108e29190613587565b60405180910390f35b61090560048036038101906109009190613907565b6122ff565b6040516109129190613587565b60405180910390f35b61093560048036038101906109309190613a04565b612314565b6040516109429190613587565b60405180910390f35b61096560048036038101906109609190613907565b612396565b60405161097796959493929190613a51565b60405180910390f35b6109886123ed565b6040516109959190613587565b60405180910390f35b6109a6612411565b6040516109b39190613587565b60405180910390f35b6109c4612417565b6040516109d19190613587565b60405180910390f35b6109e261241d565b6040516109ef9190613587565b60405180910390f35b610a0061243c565b604051610a0d9190613587565b60405180910390f35b610a1e612443565b604051610a2b9190613587565b60405180910390f35b61016d81565b60085481565b606060038054610a4f90613add565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7b90613add565b8015610ac65780601f10610a9d57610100808354040283529160200191610ac6565b820191905f5260205f20905b815481529060010190602001808311610aa957829003601f168201915b5050505050905090565b5f5f610ada612448565b9050610ae781858561244f565b600191505092915050565b620151806064610b029190613b3a565b81565b606381565b5f81565b610b16613505565b600a5f610b21612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015481525050905090565b5f600254905090565b60055481565b5f60095f610bac612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060c00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152505090505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ce6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdd90613beb565b60405180910390fd5b5f8211610d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1f90613c53565b60405180910390fd5b60658210610d6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6290613cbb565b60405180910390fd5b5f816060015111610db1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da890613d23565b60405180910390fd5b80604001514211610df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dee90613d8b565b60405180910390fd5b5f670de0b6b3a7640000610e2283606001518460200151856040015186608001518760a00151612612565b610e2c9190613b3a565b90505f60648483610e3d9190613b3a565b610e479190613dd6565b90505f8183610e569190613e06565b9050610e69610e63612448565b8261270b565b610e73868361270b565b610e7b612859565b610e83612448565b73ffffffffffffffffffffffffffffffffffffffff167fd74752b13281df13701575f3a507e9b1242e0b5fb040143211c481c1fce573a684604051610ec89190613587565b60405180910390a2505050505050565b600181565b5f5f610ee7612448565b9050610ef4858285612901565b610eff85858561298c565b60019150509392505050565b5f81565b5f6012905090565b605a81565b5f5f610f26612448565b9050610f47818585610f388589612314565b610f429190613e39565b61244f565b600191505092915050565b5f600a5f610f5e612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060800160405290815f8201548152602001600182015481526020016002820154815260200160038201548152505090505f816040015111611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100890613eb6565b60405180910390fd5b5f61102d8260400151835f015184602001518560600151612bf8565b905060075f81548092919061104190613ed4565b9190505550816040015160085f82825461105b9190613e06565b9250508190555061108261106d612448565b82846040015161107d9190613e39565b61270b565b61108a612448565b73ffffffffffffffffffffffffffffffffffffffff167f92ccf450a286a957af52509bc1c9939d1a6a481783e142e41e2499f0bb66ebc68360400151836040516110d5929190613efb565b60405180910390a2600a5f6110e8612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f5f82015f9055600182015f9055600282015f9055600382015f905550505050565b5f61114c612c5a565b905090565b5f60095f61115d612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060c00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152505090505f81606001511161126f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126690613d23565b60405180910390fd5b806040015142116112b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ac90613d8b565b60405180910390fd5b5f670de0b6b3a76400006112e083606001518460200151856040015186608001518760a00151612612565b6112ea9190613b3a565b90506112fd6112f7612448565b8261270b565b611305612859565b61130d612448565b73ffffffffffffffffffffffffffffffffffffffff167fd74752b13281df13701575f3a507e9b1242e0b5fb040143211c481c1fce573a6826040516113529190613587565b60405180910390a25050565b600181565b5f60095f61136f612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060c00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152505090506065831061147e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147590613f6c565b60405180910390fd5b5f8160600151116114c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bb90613d23565b60405180910390fd5b8060400151421161150a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150190613d8b565b60405180910390fd5b5f670de0b6b3a764000061153583606001518460200151856040015186608001518760a00151612612565b61153f9190613b3a565b90505f606485836115509190613b3a565b61155a9190613dd6565b90505f81836115699190613e06565b905061157c611576612448565b8261270b565b611584612859565b61158c612448565b73ffffffffffffffffffffffffffffffffffffffff167fd74752b13281df13701575f3a507e9b1242e0b5fb040143211c481c1fce573a6846040516115d19190613587565b60405180910390a25f821161161b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161290613fd4565b60405180910390fd5b600162015180600161162d9190613b3a565b6116379190613e06565b62015180866116469190613b3a565b11611686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167d9061403c565b60405180910390fd5b6001620151806103e86116999190613b3a565b6116a39190613e39565b62015180866116b29190613b3a565b106116f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e9906140a4565b60405180910390fd5b5f600a5f6116fe612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600201541461177b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117729061410c565b60405180910390fd5b6117858286612d86565b61178d612448565b73ffffffffffffffffffffffffffffffffffffffff167f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee9083876040516117d4929190613efb565b60405180910390a2505050505050565b6201518081565b6117f3613529565b60095f6117fe612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060c00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481525050905090565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b600f81565b81611928611923612448565b6118cd565b1015611969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196090614174565b60405180910390fd5b5f82116119ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a290613fd4565b60405180910390fd5b60016201518060016119bd9190613b3a565b6119c79190613e06565b62015180826119d69190613b3a565b11611a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0d9061403c565b60405180910390fd5b6001620151806103e8611a299190613b3a565b611a339190613e39565b6201518082611a429190613b3a565b10611a82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a79906140a4565b60405180910390fd5b5f600a5f611a8e612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015414611b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b029061410c565b60405180910390fd5b611b1c611b16612448565b83612e67565b611b268282612d86565b611b2e612448565b73ffffffffffffffffffffffffffffffffffffffff167f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee908383604051611b75929190613efb565b60405180910390a25050565b600281565b5f611b8f61302a565b905090565b600a602052805f5260405f205f91509050805f0154908060010154908060020154908060030154905084565b606481565b606060048054611bd490613add565b80601f0160208091040260200160405190810160405280929190818152602001828054611c0090613add565b8015611c4b5780601f10611c2257610100808354040283529160200191611c4b565b820191905f5260205f20905b815481529060010190602001808311611c2e57829003601f168201915b5050505050905090565b5f611c5e613071565b905090565b5f611c6c6130ee565b905090565b5f8111611cb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611caa906141dc565b60405180910390fd5b611cbb612448565b73ffffffffffffffffffffffffffffffffffffffff166301ffc9a77f543746b1000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401611d139190614234565b602060405180830381865afa158015611d2e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d529190614277565b611d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d88906142ec565b60405180910390fd5b611da382611d9d612448565b83612901565b611dad8282612e67565b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611df99190613e39565b92505081905550611e08612448565b73ffffffffffffffffffffffffffffffffffffffff1663543746b183836040518363ffffffff1660e01b8152600401611e4292919061430a565b5f604051808303815f87803b158015611e59575f5ffd5b505af1158015611e6b573d5f5f3e3d5ffd5b505050505050565b5f6201518082611e839190613b3a565b90506001620151806001611e979190613b3a565b611ea19190613e06565b8111611ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed99061437b565b60405180910390fd5b6001611eec612c5a565b611ef69190613e39565b8110611f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2e90614409565b60405180910390fd5b5f60095f611f43612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206003015414611fc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb790614471565b60405180910390fd5b5f6040518060c00160405280611fd4612448565b73ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183426120019190613e39565b815260200160055481526020016120166130ee565b815260200161202361302a565b81525090508060095f612034612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015590505060065f8154809291906120f89061448f565b9190505550612105612448565b73ffffffffffffffffffffffffffffffffffffffff167fe9149e1b5059238baed02fa659dbf4bd932fbcf760a431330df4d934bc942f378460055f81548092919061214f9061448f565b91905055604051612161929190613efb565b60405180910390a2505050565b5f5f612178612448565b90505f6121858286612314565b9050838110156121ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c190614546565b60405180910390fd5b6121d7828686840361244f565b60019250505092915050565b5f5f6121ed612448565b90506121fa81858561298c565b600191505092915050565b5f5f61221b612213876131cd565b600f0b6131ee565b90505f61227661222a856131cd565b612265612236886131cd565b6122546122428b6131cd565b87600f0b61330d90919063ffffffff16565b600f0b61330d90919063ffffffff16565b600f0b61330d90919063ffffffff16565b90506122a361229b6122896103e86131cd565b83600f0b61337690919063ffffffff16565b600f0b6133fb565b67ffffffffffffffff1692505050949350505050565b61138881565b60065481565b604051806060016040528060258152602001614af56025913981565b600181565b620151806103e86122f79190613b3a565b81565b600781565b600b602052805f5260405f205f915090505481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6009602052805f5260405f205f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154908060040154908060050154905086565b7f000000000000000000000000000000000000000000000000000000000000000081565b610bb881565b60075481565b600162015180600161242f9190613b3a565b6124399190613e06565b81565b620186a081565b601481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b4906145d4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361252b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252290614662565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126059190613587565b60405180910390a3505050565b5f5f84426126209190613e06565b90505f61262c8261341a565b90505f73000000000000000000000000{XENMath}636d5433e68a6005546126579190613e06565b60026040518363ffffffff1660e01b81526004016126769291906146d1565b602060405180830381865af4158015612691573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126b5919061470c565b90505f856103e86126c69190613e39565b90505f6126d583898c85612205565b905060648460646126e69190613e06565b826126f19190613b3a565b6126fb9190613dd6565b9550505050505095945050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612779576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277090614781565b60405180910390fd5b6127845f83836134fb565b8060025f8282546127959190613e39565b92505081905550805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128429190613587565b60405180910390a36128555f8383613500565b5050565b60095f612864612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f5f82015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182015f9055600282015f9055600382015f9055600482015f9055600582015f9055505060065f8154809291906128fa90613ed4565b9190505550565b5f61290c8484612314565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146129865781811015612978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296f906147e9565b60405180910390fd5b612985848484840361244f565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f190614877565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5f90614905565b60405180910390fd5b612a738383836134fb565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aed90614993565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612bdf9190613587565b60405180910390a3612bf2848484613500565b50505050565b5f82421115612c4e575f61016d620f42408685612c159190613b3a565b612c1f9190613b3a565b612c299190613dd6565b90506305f5e1008187612c3c9190613b3a565b612c469190613dd6565b915050612c52565b5f90505b949350505050565b5f6113886005541115612d70575f612ca7612c9f612c78600f6131cd565b612c8e612c866005546131cd565b600f0b6131ee565b600f0b61330d90919063ffffffff16565b600f0b6133fb565b67ffffffffffffffff1690505f6201518082612cc39190613b3a565b620151806064612cd39190613b3a565b612cdd9190613e39565b905073000000000000000000000000{XENMath}637ae2b5c782620151806103e8612d0b9190613b3a565b6040518363ffffffff1660e01b8152600401612d289291906149b1565b602060405180830381865af4158015612d43573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d67919061470c565b92505050612d83565b620151806064612d809190613b3a565b90505b90565b60405180608001604052808281526020016201518083612da69190613b3a565b42612db19190613e39565b8152602001838152602001612dc4613071565b815250600a5f612dd2612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f015560208201518160010155604082015181600201556060820151816003015590505060075f815480929190612e469061448f565b91905055508160085f828254612e5c9190613e39565b925050819055505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ed5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ecc90614a48565b60405180910390fd5b612ee0825f836134fb565b5f5f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5a90614ad6565b60405180910390fd5b8181035f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160025f82825403925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516130129190613587565b60405180910390a3613025835f84613500565b505050565b5f5f620186a0600554600161303f9190613b3a565b6130499190613dd6565b9050606481111561305d575f91505061306e565b80606461306a9190613e06565b9150505b90565b5f5f605a620151806130839190613b3a565b7f0000000000000000000000000000000000000000000000000000000000000000426130af9190613e06565b6130b99190613dd6565b905080600260146130ca9190613e06565b10156130da5760029150506130eb565b8060146130e79190613e06565b9150505b90565b5f5f620151807f0000000000000000000000000000000000000000000000000000000000000000426131209190613e06565b61312a9190613dd6565b9050610bb88110156131c45773000000000000000000000000{XENMath}636d5433e682610bb861315e9190613e06565b60016040518363ffffffff1660e01b815260040161317d9291906149b1565b602060405180830381865af4158015613198573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131bc919061470c565b9150506131ca565b60019150505b90565b5f677fffffffffffffff8211156131e2575f5ffd5b604082901b9050919050565b5f5f82600f0b136131fd575f5ffd5b5f5f90505f83600f0b905068010000000000000000811261322657604081901d90506040820191505b640100000000811261324057602081901d90506020820191505b62010000811261325857601081901d90506010820191505b610100811261326f57600881901d90506008820191505b6010811261328557600481901d90506004820191505b6004811261329b57600281901d90506002820191505b600281126132aa576001820191505b5f6040808403901b90505f83607f0386600f0b901b90505f67800000000000000090505b5f8113156133005781820291505f60ff83901c905080607f0183901c92508082028401935050600181901d90506132ce565b5081945050505050919050565b5f5f604083600f0b85600f0b02901d90507fffffffffffffffffffffffffffffffff80000000000000000000000000000000600f0b811215801561336457506f7fffffffffffffffffffffffffffffff600f0b8113155b61336c575f5ffd5b8091505092915050565b5f5f82600f0b03613385575f5ffd5b5f82600f0b604085600f0b901b816133a05761339f613da9565b5b0590507fffffffffffffffffffffffffffffffff80000000000000000000000000000000600f0b81121580156133e957506f7fffffffffffffffffffffffffffffff600f0b8113155b6133f1575f5ffd5b8091505092915050565b5f5f82600f0b121561340b575f5ffd5b604082600f0b901d9050919050565b5f5f620151808361342b9190613dd6565b90506001600761343b9190613e06565b81111561344c5760639150506134f6565b5f6001600760038461345e9190613e39565b6001901b61346c9190613dd6565b6134769190613e06565b905073000000000000000000000000{XENMath}637ae2b5c78260636040518363ffffffff1660e01b81526004016134b29291906149b1565b602060405180830381865af41580156134cd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134f1919061470c565b925050505b919050565b505050565b505050565b60405180608001604052805f81526020015f81526020015f81526020015f81525090565b6040518060c001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5f819050919050565b6135818161356f565b82525050565b5f60208201905061359a5f830184613578565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6135e2826135a0565b6135ec81856135aa565b93506135fc8185602086016135ba565b613605816135c8565b840191505092915050565b5f6020820190508181035f83015261362881846135d8565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61365d82613634565b9050919050565b61366d81613653565b8114613677575f5ffd5b50565b5f8135905061368881613664565b92915050565b6136978161356f565b81146136a1575f5ffd5b50565b5f813590506136b28161368e565b92915050565b5f5f604083850312156136ce576136cd613630565b5b5f6136db8582860161367a565b92505060206136ec858286016136a4565b9150509250929050565b5f8115159050919050565b61370a816136f6565b82525050565b5f6020820190506137235f830184613701565b92915050565b6137328161356f565b82525050565b608082015f82015161374c5f850182613729565b50602082015161375f6020850182613729565b5060408201516137726040850182613729565b5060608201516137856060850182613729565b50505050565b5f60808201905061379e5f830184613738565b92915050565b5f5f5f606084860312156137bb576137ba613630565b5b5f6137c88682870161367a565b93505060206137d98682870161367a565b92505060406137ea868287016136a4565b9150509250925092565b5f60ff82169050919050565b613809816137f4565b82525050565b5f6020820190506138225f830184613800565b92915050565b5f5f6040838503121561383e5761383d613630565b5b5f61384b858286016136a4565b925050602061385c858286016136a4565b9150509250929050565b61386f81613653565b82525050565b60c082015f8201516138895f850182613866565b50602082015161389c6020850182613729565b5060408201516138af6040850182613729565b5060608201516138c26060850182613729565b5060808201516138d56080850182613729565b5060a08201516138e860a0850182613729565b50505050565b5f60c0820190506139015f830184613875565b92915050565b5f6020828403121561391c5761391b613630565b5b5f6139298482850161367a565b91505092915050565b5f6080820190506139455f830187613578565b6139526020830186613578565b61395f6040830185613578565b61396c6060830184613578565b95945050505050565b5f6020828403121561398a57613989613630565b5b5f613997848285016136a4565b91505092915050565b5f5f5f5f608085870312156139b8576139b7613630565b5b5f6139c5878288016136a4565b94505060206139d6878288016136a4565b93505060406139e7878288016136a4565b92505060606139f8878288016136a4565b91505092959194509250565b5f5f60408385031215613a1a57613a19613630565b5b5f613a278582860161367a565b9250506020613a388582860161367a565b9150509250929050565b613a4b81613653565b82525050565b5f60c082019050613a645f830189613a42565b613a716020830188613578565b613a7e6040830187613578565b613a8b6060830186613578565b613a986080830185613578565b613aa560a0830184613578565b979650505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613af457607f821691505b602082108103613b0757613b06613ab0565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613b448261356f565b9150613b4f8361356f565b9250828202613b5d8161356f565b91508282048414831517613b7457613b73613b0d565b5b5092915050565b7f4352616e6b3a2043616e6e6f742073686172652077697468207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613bd56025836135aa565b9150613be082613b7b565b604082019050919050565b5f6020820190508181035f830152613c0281613bc9565b9050919050565b7f4352616e6b3a2043616e6e6f74207368617265207a65726f2070657263656e745f82015250565b5f613c3d6020836135aa565b9150613c4882613c09565b602082019050919050565b5f6020820190508181035f830152613c6a81613c31565b9050919050565b7f4352616e6b3a2043616e6e6f74207368617265203130302b2070657263656e745f82015250565b5f613ca56020836135aa565b9150613cb082613c71565b602082019050919050565b5f6020820190508181035f830152613cd281613c99565b9050919050565b7f4352616e6b3a204e6f206d696e742065786973747300000000000000000000005f82015250565b5f613d0d6015836135aa565b9150613d1882613cd9565b602082019050919050565b5f6020820190508181035f830152613d3a81613d01565b9050919050565b7f4352616e6b3a204d696e74206d61747572697479206e6f7420726561636865645f82015250565b5f613d756020836135aa565b9150613d8082613d41565b602082019050919050565b5f6020820190508181035f830152613da281613d69565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613de08261356f565b9150613deb8361356f565b925082613dfb57613dfa613da9565b5b828204905092915050565b5f613e108261356f565b9150613e1b8361356f565b9250828203905081811115613e3357613e32613b0d565b5b92915050565b5f613e438261356f565b9150613e4e8361356f565b9250828201905080821115613e6657613e65613b0d565b5b92915050565b7f58454e3a206e6f207374616b65206578697374730000000000000000000000005f82015250565b5f613ea06014836135aa565b9150613eab82613e6c565b602082019050919050565b5f6020820190508181035f830152613ecd81613e94565b9050919050565b5f613ede8261356f565b91505f8203613ef057613eef613b0d565b5b600182039050919050565b5f604082019050613f0e5f830185613578565b613f1b6020830184613578565b9392505050565b7f4352616e6b3a2043616e6e6f74207368617265203e3130302070657263656e745f82015250565b5f613f566020836135aa565b9150613f6182613f22565b602082019050919050565b5f6020820190508181035f830152613f8381613f4a565b9050919050565b7f58454e3a2042656c6f77206d696e207374616b650000000000000000000000005f82015250565b5f613fbe6014836135aa565b9150613fc982613f8a565b602082019050919050565b5f6020820190508181035f830152613feb81613fb2565b9050919050565b7f58454e3a2042656c6f77206d696e207374616b65207465726d000000000000005f82015250565b5f6140266019836135aa565b915061403182613ff2565b602082019050919050565b5f6020820190508181035f8301526140538161401a565b9050919050565b7f58454e3a2041626f7665206d6178207374616b65207465726d000000000000005f82015250565b5f61408e6019836135aa565b91506140998261405a565b602082019050919050565b5f6020820190508181035f8301526140bb81614082565b9050919050565b7f58454e3a207374616b65206578697374730000000000000000000000000000005f82015250565b5f6140f66011836135aa565b9150614101826140c2565b602082019050919050565b5f6020820190508181035f830152614123816140ea565b9050919050565b7f58454e3a206e6f7420656e6f7567682062616c616e63650000000000000000005f82015250565b5f61415e6017836135aa565b91506141698261412a565b602082019050919050565b5f6020820190508181035f83015261418b81614152565b9050919050565b7f4275726e3a2042656c6f77206d696e206c696d697400000000000000000000005f82015250565b5f6141c66015836135aa565b91506141d182614192565b602082019050919050565b5f6020820190508181035f8301526141f3816141ba565b9050919050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61422e816141fa565b82525050565b5f6020820190506142475f830184614225565b92915050565b614256816136f6565b8114614260575f5ffd5b50565b5f815190506142718161424d565b92915050565b5f6020828403121561428c5761428b613630565b5b5f61429984828501614263565b91505092915050565b7f4275726e3a206e6f74206120737570706f7274656420636f6e747261637400005f82015250565b5f6142d6601e836135aa565b91506142e1826142a2565b602082019050919050565b5f6020820190508181035f830152614303816142ca565b9050919050565b5f60408201905061431d5f830185613a42565b61432a6020830184613578565b9392505050565b7f4352616e6b3a205465726d206c657373207468616e206d696e000000000000005f82015250565b5f6143656019836135aa565b915061437082614331565b602082019050919050565b5f6020820190508181035f83015261439281614359565b9050919050565b7f4352616e6b3a205465726d206d6f7265207468616e2063757272656e74206d615f8201527f78207465726d0000000000000000000000000000000000000000000000000000602082015250565b5f6143f36026836135aa565b91506143fe82614399565b604082019050919050565b5f6020820190508181035f830152614420816143e7565b9050919050565b7f4352616e6b3a204d696e7420616c726561647920696e2070726f6772657373005f82015250565b5f61445b601f836135aa565b915061446682614427565b602082019050919050565b5f6020820190508181035f8301526144888161444f565b9050919050565b5f6144998261356f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036144cb576144ca613b0d565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6145306025836135aa565b915061453b826144d6565b604082019050919050565b5f6020820190508181035f83015261455d81614524565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6145be6024836135aa565b91506145c982614564565b604082019050919050565b5f6020820190508181035f8301526145eb816145b2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61464c6022836135aa565b9150614657826145f2565b604082019050919050565b5f6020820190508181035f83015261467981614640565b9050919050565b6146898161356f565b82525050565b5f819050919050565b5f819050919050565b5f6146bb6146b66146b18461468f565b614698565b61356f565b9050919050565b6146cb816146a1565b82525050565b5f6040820190506146e45f830185614680565b6146f160208301846146c2565b9392505050565b5f815190506147068161368e565b92915050565b5f6020828403121561472157614720613630565b5b5f61472e848285016146f8565b91505092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f61476b601f836135aa565b915061477682614737565b602082019050919050565b5f6020820190508181035f8301526147988161475f565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f6147d3601d836135aa565b91506147de8261479f565b602082019050919050565b5f6020820190508181035f830152614800816147c7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6148616025836135aa565b915061486c82614807565b604082019050919050565b5f6020820190508181035f83015261488e81614855565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6148ef6023836135aa565b91506148fa82614895565b604082019050919050565b5f6020820190508181035f83015261491c816148e3565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61497d6026836135aa565b915061498882614923565b604082019050919050565b5f6020820190508181035f8301526149aa81614971565b9050919050565b5f6040820190506149c45f830185614680565b6149d16020830184614680565b9392505050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f614a326021836135aa565b9150614a3d826149d8565b604082019050919050565b5f6020820190508181035f830152614a5f81614a26565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f614ac06022836135aa565b9150614acb82614a66565b604082019050919050565b5f6020820190508181035f830152614aed81614ab4565b905091905056fe404d724a61636b4c6576696e20406c62656c79616576206661697263727970746f2e6f7267a2646970667358221220dde80958ed119700481648234ceae7c3bc08c9b9c239a4bd75f4f9c2549d8d5664736f6c634300081b0033" +bytecode = "0x60a06040526001600555348015610014575f5ffd5b506040518060400160405280600a81526020017f58454e2043727970746f000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f58454e0000000000000000000000000000000000000000000000000000000000815250816003908161009091906102ed565b5080600490816100a091906102ed565b50505042608081815250506103bc565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061012b57607f821691505b60208210810361013e5761013d6100e7565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026101a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610165565b6101aa8683610165565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6101ee6101e96101e4846101c2565b6101cb565b6101c2565b9050919050565b5f819050919050565b610207836101d4565b61021b610213826101f5565b848454610171565b825550505050565b5f5f905090565b610232610223565b61023d8184846101fe565b505050565b5b81811015610260576102555f8261022a565b600181019050610243565b5050565b601f8211156102a55761027681610144565b61027f84610156565b8101602085101561028e578190505b6102a261029a85610156565b830182610242565b50505b505050565b5f82821c905092915050565b5f6102c55f19846008026102aa565b1980831691505092915050565b5f6102dd83836102b6565b9150826002028217905092915050565b6102f6826100b0565b67ffffffffffffffff81111561030f5761030e6100ba565b5b6103198254610114565b610324828285610264565b5f60209050601f831160018114610355575f8415610343578287015190505b61034d85826102d2565b8655506103b4565b601f19841661036386610144565b5f5b8281101561038a57848901518255600182019150602085019450602081019050610365565b868310156103a757848901516103a3601f8916826102b6565b8355505b6001600288020188555050505b505050505050565b608051614b4f6103e25f395f81816123ef0152818161308501526130f60152614b4f5ff3fe608060405234801561000f575f5ffd5b5060043610610340575f3560e01c80637e7aa62e116101b6578063b4800cdc11610102578063df282331116100a0578063ed2f23691161007a578063ed2f2369146109bc578063f0604829146109da578063f340faed146109f8578063fed7426914610a1657610340565b8063df2823311461094b578063e3af6d0a14610980578063e81917b41461099e57610340565b8063c0c65259116100dc578063c0c65259146108af578063c56f0bab146108cd578063ce653d5f146108eb578063dd62ed3e1461091b57610340565b8063b4800cdc14610855578063ba3ec74114610873578063bcfe394f1461089157610340565b8063992024541161016f578063a457c2d711610149578063a457c2d7146107a7578063a9059cbb146107d7578063b0fd1fc214610807578063b21d35f21461083757610340565b806399202454146107515780639dc29fac1461076f5780639ff054df1461078b57610340565b80637e7aa62e146106885780638979c87c146106a65780638da7ad23146106c4578063909a2ff6146106f757806395d89b4114610715578063962ca4961461073357610340565b80632a62d96611610290578063543d36521161022e5780637010d7a1116102085780637010d7a11461060057806370a082311461061e57806372475f941461064e5780637b0472f01461066c57610340565b8063543d3652146105a85780635bccb4c4146105c657806361a52a36146105e257610340565b8063395093511161026a57806339509351146105465780633ccfd60b14610576578063451257151461058057806352c7f8dc1461059e57610340565b80632a62d966146104ec578063313ce5671461050a57806332870fda1461052857610340565b8063110d7fc2116102fd5780631c244082116102d75780631c244082146104645780631c560305146104825780631c6f212e1461049e57806323b872dd146104bc57610340565b8063110d7fc21461040a57806316f9c8fd1461042857806318160ddd1461044657610340565b80630237893214610344578063069612a51461036257806306fdde0314610380578063095ea7b31461039e5780630bfae56b146103ce5780630f2e1228146103ec575b5f5ffd5b61034c610a34565b6040516103599190613587565b60405180910390f35b61036a610a3a565b6040516103779190613587565b60405180910390f35b610388610a40565b6040516103959190613610565b60405180910390f35b6103b860048036038101906103b391906136b8565b610ad0565b6040516103c59190613710565b60405180910390f35b6103d6610af2565b6040516103e39190613587565b60405180910390f35b6103f4610b05565b6040516104019190613587565b60405180910390f35b610412610b0a565b60405161041f9190613587565b60405180910390f35b610430610b0e565b60405161043d919061378b565b60405180910390f35b61044e610b91565b60405161045b9190613587565b60405180910390f35b61046c610b9a565b6040516104799190613587565b60405180910390f35b61049c600480360381019061049791906136b8565b610ba0565b005b6104a6610ed8565b6040516104b39190613587565b60405180910390f35b6104d660048036038101906104d191906137a4565b610edd565b6040516104e39190613710565b60405180910390f35b6104f4610f0b565b6040516105019190613587565b60405180910390f35b610512610f0f565b60405161051f919061380f565b60405180910390f35b610530610f17565b60405161053d9190613587565b60405180910390f35b610560600480360381019061055b91906136b8565b610f1c565b60405161056d9190613710565b60405180910390f35b61057e610f52565b005b610588611143565b6040516105959190613587565b60405180910390f35b6105a6611151565b005b6105b061135e565b6040516105bd9190613587565b60405180910390f35b6105e060048036038101906105db9190613828565b611363565b005b6105ea6117e4565b6040516105f79190613587565b60405180910390f35b6106086117eb565b60405161061591906138ee565b60405180910390f35b61063860048036038101906106339190613907565b6118cd565b6040516106459190613587565b60405180910390f35b610656611912565b6040516106639190613587565b60405180910390f35b61068660048036038101906106819190613828565b611917565b005b610690611b81565b60405161069d9190613587565b60405180910390f35b6106ae611b86565b6040516106bb9190613587565b60405180910390f35b6106de60048036038101906106d99190613907565b611b94565b6040516106ee9493929190613932565b60405180910390f35b6106ff611bc0565b60405161070c9190613587565b60405180910390f35b61071d611bc5565b60405161072a9190613610565b60405180910390f35b61073b611c55565b6040516107489190613587565b60405180910390f35b610759611c63565b6040516107669190613587565b60405180910390f35b610789600480360381019061078491906136b8565b611c71565b005b6107a560048036038101906107a09190613975565b611e73565b005b6107c160048036038101906107bc91906136b8565b61216e565b6040516107ce9190613710565b60405180910390f35b6107f160048036038101906107ec91906136b8565b6121e3565b6040516107fe9190613710565b60405180910390f35b610821600480360381019061081c91906139a0565b612205565b60405161082e9190613587565b60405180910390f35b61083f6122b9565b60405161084c9190613587565b60405180910390f35b61085d6122bf565b60405161086a9190613587565b60405180910390f35b61087b6122c5565b6040516108889190613610565b60405180910390f35b6108996122e1565b6040516108a69190613587565b60405180910390f35b6108b76122e6565b6040516108c49190613587565b60405180910390f35b6108d56122fa565b6040516108e29190613587565b60405180910390f35b61090560048036038101906109009190613907565b6122ff565b6040516109129190613587565b60405180910390f35b61093560048036038101906109309190613a04565b612314565b6040516109429190613587565b60405180910390f35b61096560048036038101906109609190613907565b612396565b60405161097796959493929190613a51565b60405180910390f35b6109886123ed565b6040516109959190613587565b60405180910390f35b6109a6612411565b6040516109b39190613587565b60405180910390f35b6109c4612417565b6040516109d19190613587565b60405180910390f35b6109e261241d565b6040516109ef9190613587565b60405180910390f35b610a0061243c565b604051610a0d9190613587565b60405180910390f35b610a1e612443565b604051610a2b9190613587565b60405180910390f35b61016d81565b60085481565b606060038054610a4f90613add565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7b90613add565b8015610ac65780601f10610a9d57610100808354040283529160200191610ac6565b820191905f5260205f20905b815481529060010190602001808311610aa957829003601f168201915b5050505050905090565b5f5f610ada612448565b9050610ae781858561244f565b600191505092915050565b620151806064610b029190613b3a565b81565b606381565b5f81565b610b16613505565b600a5f610b21612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015481525050905090565b5f600254905090565b60055481565b5f60095f610bac612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060c00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152505090505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ce6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdd90613beb565b60405180910390fd5b5f8211610d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1f90613c53565b60405180910390fd5b60658210610d6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6290613cbb565b60405180910390fd5b5f816060015111610db1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da890613d23565b60405180910390fd5b80604001514211610df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dee90613d8b565b60405180910390fd5b5f670de0b6b3a7640000610e2283606001518460200151856040015186608001518760a00151612612565b610e2c9190613b3a565b90505f60648483610e3d9190613b3a565b610e479190613dd6565b90505f8183610e569190613e06565b9050610e69610e63612448565b8261270b565b610e73868361270b565b610e7b612859565b610e83612448565b73ffffffffffffffffffffffffffffffffffffffff167fd74752b13281df13701575f3a507e9b1242e0b5fb040143211c481c1fce573a684604051610ec89190613587565b60405180910390a2505050505050565b600181565b5f5f610ee7612448565b9050610ef4858285612901565b610eff85858561298c565b60019150509392505050565b5f81565b5f6012905090565b605a81565b5f5f610f26612448565b9050610f47818585610f388589612314565b610f429190613e39565b61244f565b600191505092915050565b5f600a5f610f5e612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060800160405290815f8201548152602001600182015481526020016002820154815260200160038201548152505090505f816040015111611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100890613eb6565b60405180910390fd5b5f61102d8260400151835f015184602001518560600151612bf8565b905060075f81548092919061104190613ed4565b9190505550816040015160085f82825461105b9190613e06565b9250508190555061108261106d612448565b82846040015161107d9190613e39565b61270b565b61108a612448565b73ffffffffffffffffffffffffffffffffffffffff167f92ccf450a286a957af52509bc1c9939d1a6a481783e142e41e2499f0bb66ebc68360400151836040516110d5929190613efb565b60405180910390a2600a5f6110e8612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f5f82015f9055600182015f9055600282015f9055600382015f905550505050565b5f61114c612c5a565b905090565b5f60095f61115d612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060c00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152505090505f81606001511161126f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126690613d23565b60405180910390fd5b806040015142116112b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ac90613d8b565b60405180910390fd5b5f670de0b6b3a76400006112e083606001518460200151856040015186608001518760a00151612612565b6112ea9190613b3a565b90506112fd6112f7612448565b8261270b565b611305612859565b61130d612448565b73ffffffffffffffffffffffffffffffffffffffff167fd74752b13281df13701575f3a507e9b1242e0b5fb040143211c481c1fce573a6826040516113529190613587565b60405180910390a25050565b600181565b5f60095f61136f612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060c00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152505090506065831061147e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147590613f6c565b60405180910390fd5b5f8160600151116114c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bb90613d23565b60405180910390fd5b8060400151421161150a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150190613d8b565b60405180910390fd5b5f670de0b6b3a764000061153583606001518460200151856040015186608001518760a00151612612565b61153f9190613b3a565b90505f606485836115509190613b3a565b61155a9190613dd6565b90505f81836115699190613e06565b905061157c611576612448565b8261270b565b611584612859565b61158c612448565b73ffffffffffffffffffffffffffffffffffffffff167fd74752b13281df13701575f3a507e9b1242e0b5fb040143211c481c1fce573a6846040516115d19190613587565b60405180910390a25f821161161b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161290613fd4565b60405180910390fd5b600162015180600161162d9190613b3a565b6116379190613e06565b62015180866116469190613b3a565b11611686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167d9061403c565b60405180910390fd5b6001620151806103e86116999190613b3a565b6116a39190613e39565b62015180866116b29190613b3a565b106116f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e9906140a4565b60405180910390fd5b5f600a5f6116fe612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600201541461177b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117729061410c565b60405180910390fd5b6117858286612d86565b61178d612448565b73ffffffffffffffffffffffffffffffffffffffff167f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee9083876040516117d4929190613efb565b60405180910390a2505050505050565b6201518081565b6117f3613529565b60095f6117fe612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060c00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481525050905090565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b600f81565b81611928611923612448565b6118cd565b1015611969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196090614174565b60405180910390fd5b5f82116119ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a290613fd4565b60405180910390fd5b60016201518060016119bd9190613b3a565b6119c79190613e06565b62015180826119d69190613b3a565b11611a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0d9061403c565b60405180910390fd5b6001620151806103e8611a299190613b3a565b611a339190613e39565b6201518082611a429190613b3a565b10611a82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a79906140a4565b60405180910390fd5b5f600a5f611a8e612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015414611b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b029061410c565b60405180910390fd5b611b1c611b16612448565b83612e67565b611b268282612d86565b611b2e612448565b73ffffffffffffffffffffffffffffffffffffffff167f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee908383604051611b75929190613efb565b60405180910390a25050565b600281565b5f611b8f61302a565b905090565b600a602052805f5260405f205f91509050805f0154908060010154908060020154908060030154905084565b606481565b606060048054611bd490613add565b80601f0160208091040260200160405190810160405280929190818152602001828054611c0090613add565b8015611c4b5780601f10611c2257610100808354040283529160200191611c4b565b820191905f5260205f20905b815481529060010190602001808311611c2e57829003601f168201915b5050505050905090565b5f611c5e613071565b905090565b5f611c6c6130ee565b905090565b5f8111611cb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611caa906141dc565b60405180910390fd5b611cbb612448565b73ffffffffffffffffffffffffffffffffffffffff166301ffc9a77f543746b1000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401611d139190614234565b602060405180830381865afa158015611d2e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d529190614277565b611d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d88906142ec565b60405180910390fd5b611da382611d9d612448565b83612901565b611dad8282612e67565b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611df99190613e39565b92505081905550611e08612448565b73ffffffffffffffffffffffffffffffffffffffff1663543746b183836040518363ffffffff1660e01b8152600401611e4292919061430a565b5f604051808303815f87803b158015611e59575f5ffd5b505af1158015611e6b573d5f5f3e3d5ffd5b505050505050565b5f6201518082611e839190613b3a565b90506001620151806001611e979190613b3a565b611ea19190613e06565b8111611ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed99061437b565b60405180910390fd5b6001611eec612c5a565b611ef69190613e39565b8110611f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2e90614409565b60405180910390fd5b5f60095f611f43612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206003015414611fc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb790614471565b60405180910390fd5b5f6040518060c00160405280611fd4612448565b73ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183426120019190613e39565b815260200160055481526020016120166130ee565b815260200161202361302a565b81525090508060095f612034612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015590505060065f8154809291906120f89061448f565b9190505550612105612448565b73ffffffffffffffffffffffffffffffffffffffff167fe9149e1b5059238baed02fa659dbf4bd932fbcf760a431330df4d934bc942f378460055f81548092919061214f9061448f565b91905055604051612161929190613efb565b60405180910390a2505050565b5f5f612178612448565b90505f6121858286612314565b9050838110156121ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c190614546565b60405180910390fd5b6121d7828686840361244f565b60019250505092915050565b5f5f6121ed612448565b90506121fa81858561298c565b600191505092915050565b5f5f61221b612213876131cd565b600f0b6131ee565b90505f61227661222a856131cd565b612265612236886131cd565b6122546122428b6131cd565b87600f0b61330d90919063ffffffff16565b600f0b61330d90919063ffffffff16565b600f0b61330d90919063ffffffff16565b90506122a361229b6122896103e86131cd565b83600f0b61337690919063ffffffff16565b600f0b6133fb565b67ffffffffffffffff1692505050949350505050565b61138881565b60065481565b604051806060016040528060258152602001614af56025913981565b600181565b620151806103e86122f79190613b3a565b81565b600781565b600b602052805f5260405f205f915090505481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6009602052805f5260405f205f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154908060040154908060050154905086565b7f000000000000000000000000000000000000000000000000000000000000000081565b610bb881565b60075481565b600162015180600161242f9190613b3a565b6124399190613e06565b81565b620186a081565b601481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b4906145d4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361252b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252290614662565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126059190613587565b60405180910390a3505050565b5f5f84426126209190613e06565b90505f61262c8261341a565b90505f73{XENMath}636d5433e68a6005546126579190613e06565b60026040518363ffffffff1660e01b81526004016126769291906146d1565b602060405180830381865af4158015612691573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126b5919061470c565b90505f856103e86126c69190613e39565b90505f6126d583898c85612205565b905060648460646126e69190613e06565b826126f19190613b3a565b6126fb9190613dd6565b9550505050505095945050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612779576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277090614781565b60405180910390fd5b6127845f83836134fb565b8060025f8282546127959190613e39565b92505081905550805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128429190613587565b60405180910390a36128555f8383613500565b5050565b60095f612864612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f5f82015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182015f9055600282015f9055600382015f9055600482015f9055600582015f9055505060065f8154809291906128fa90613ed4565b9190505550565b5f61290c8484612314565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146129865781811015612978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296f906147e9565b60405180910390fd5b612985848484840361244f565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f190614877565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5f90614905565b60405180910390fd5b612a738383836134fb565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aed90614993565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612bdf9190613587565b60405180910390a3612bf2848484613500565b50505050565b5f82421115612c4e575f61016d620f42408685612c159190613b3a565b612c1f9190613b3a565b612c299190613dd6565b90506305f5e1008187612c3c9190613b3a565b612c469190613dd6565b915050612c52565b5f90505b949350505050565b5f6113886005541115612d70575f612ca7612c9f612c78600f6131cd565b612c8e612c866005546131cd565b600f0b6131ee565b600f0b61330d90919063ffffffff16565b600f0b6133fb565b67ffffffffffffffff1690505f6201518082612cc39190613b3a565b620151806064612cd39190613b3a565b612cdd9190613e39565b905073{XENMath}637ae2b5c782620151806103e8612d0b9190613b3a565b6040518363ffffffff1660e01b8152600401612d289291906149b1565b602060405180830381865af4158015612d43573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d67919061470c565b92505050612d83565b620151806064612d809190613b3a565b90505b90565b60405180608001604052808281526020016201518083612da69190613b3a565b42612db19190613e39565b8152602001838152602001612dc4613071565b815250600a5f612dd2612448565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f015560208201518160010155604082015181600201556060820151816003015590505060075f815480929190612e469061448f565b91905055508160085f828254612e5c9190613e39565b925050819055505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ed5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ecc90614a48565b60405180910390fd5b612ee0825f836134fb565b5f5f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5a90614ad6565b60405180910390fd5b8181035f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160025f82825403925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516130129190613587565b60405180910390a3613025835f84613500565b505050565b5f5f620186a0600554600161303f9190613b3a565b6130499190613dd6565b9050606481111561305d575f91505061306e565b80606461306a9190613e06565b9150505b90565b5f5f605a620151806130839190613b3a565b7f0000000000000000000000000000000000000000000000000000000000000000426130af9190613e06565b6130b99190613dd6565b905080600260146130ca9190613e06565b10156130da5760029150506130eb565b8060146130e79190613e06565b9150505b90565b5f5f620151807f0000000000000000000000000000000000000000000000000000000000000000426131209190613e06565b61312a9190613dd6565b9050610bb88110156131c45773{XENMath}636d5433e682610bb861315e9190613e06565b60016040518363ffffffff1660e01b815260040161317d9291906149b1565b602060405180830381865af4158015613198573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131bc919061470c565b9150506131ca565b60019150505b90565b5f677fffffffffffffff8211156131e2575f5ffd5b604082901b9050919050565b5f5f82600f0b136131fd575f5ffd5b5f5f90505f83600f0b905068010000000000000000811261322657604081901d90506040820191505b640100000000811261324057602081901d90506020820191505b62010000811261325857601081901d90506010820191505b610100811261326f57600881901d90506008820191505b6010811261328557600481901d90506004820191505b6004811261329b57600281901d90506002820191505b600281126132aa576001820191505b5f6040808403901b90505f83607f0386600f0b901b90505f67800000000000000090505b5f8113156133005781820291505f60ff83901c905080607f0183901c92508082028401935050600181901d90506132ce565b5081945050505050919050565b5f5f604083600f0b85600f0b02901d90507fffffffffffffffffffffffffffffffff80000000000000000000000000000000600f0b811215801561336457506f7fffffffffffffffffffffffffffffff600f0b8113155b61336c575f5ffd5b8091505092915050565b5f5f82600f0b03613385575f5ffd5b5f82600f0b604085600f0b901b816133a05761339f613da9565b5b0590507fffffffffffffffffffffffffffffffff80000000000000000000000000000000600f0b81121580156133e957506f7fffffffffffffffffffffffffffffff600f0b8113155b6133f1575f5ffd5b8091505092915050565b5f5f82600f0b121561340b575f5ffd5b604082600f0b901d9050919050565b5f5f620151808361342b9190613dd6565b90506001600761343b9190613e06565b81111561344c5760639150506134f6565b5f6001600760038461345e9190613e39565b6001901b61346c9190613dd6565b6134769190613e06565b905073{XENMath}637ae2b5c78260636040518363ffffffff1660e01b81526004016134b29291906149b1565b602060405180830381865af41580156134cd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134f1919061470c565b925050505b919050565b505050565b505050565b60405180608001604052805f81526020015f81526020015f81526020015f81525090565b6040518060c001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5f819050919050565b6135818161356f565b82525050565b5f60208201905061359a5f830184613578565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6135e2826135a0565b6135ec81856135aa565b93506135fc8185602086016135ba565b613605816135c8565b840191505092915050565b5f6020820190508181035f83015261362881846135d8565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61365d82613634565b9050919050565b61366d81613653565b8114613677575f5ffd5b50565b5f8135905061368881613664565b92915050565b6136978161356f565b81146136a1575f5ffd5b50565b5f813590506136b28161368e565b92915050565b5f5f604083850312156136ce576136cd613630565b5b5f6136db8582860161367a565b92505060206136ec858286016136a4565b9150509250929050565b5f8115159050919050565b61370a816136f6565b82525050565b5f6020820190506137235f830184613701565b92915050565b6137328161356f565b82525050565b608082015f82015161374c5f850182613729565b50602082015161375f6020850182613729565b5060408201516137726040850182613729565b5060608201516137856060850182613729565b50505050565b5f60808201905061379e5f830184613738565b92915050565b5f5f5f606084860312156137bb576137ba613630565b5b5f6137c88682870161367a565b93505060206137d98682870161367a565b92505060406137ea868287016136a4565b9150509250925092565b5f60ff82169050919050565b613809816137f4565b82525050565b5f6020820190506138225f830184613800565b92915050565b5f5f6040838503121561383e5761383d613630565b5b5f61384b858286016136a4565b925050602061385c858286016136a4565b9150509250929050565b61386f81613653565b82525050565b60c082015f8201516138895f850182613866565b50602082015161389c6020850182613729565b5060408201516138af6040850182613729565b5060608201516138c26060850182613729565b5060808201516138d56080850182613729565b5060a08201516138e860a0850182613729565b50505050565b5f60c0820190506139015f830184613875565b92915050565b5f6020828403121561391c5761391b613630565b5b5f6139298482850161367a565b91505092915050565b5f6080820190506139455f830187613578565b6139526020830186613578565b61395f6040830185613578565b61396c6060830184613578565b95945050505050565b5f6020828403121561398a57613989613630565b5b5f613997848285016136a4565b91505092915050565b5f5f5f5f608085870312156139b8576139b7613630565b5b5f6139c5878288016136a4565b94505060206139d6878288016136a4565b93505060406139e7878288016136a4565b92505060606139f8878288016136a4565b91505092959194509250565b5f5f60408385031215613a1a57613a19613630565b5b5f613a278582860161367a565b9250506020613a388582860161367a565b9150509250929050565b613a4b81613653565b82525050565b5f60c082019050613a645f830189613a42565b613a716020830188613578565b613a7e6040830187613578565b613a8b6060830186613578565b613a986080830185613578565b613aa560a0830184613578565b979650505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613af457607f821691505b602082108103613b0757613b06613ab0565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613b448261356f565b9150613b4f8361356f565b9250828202613b5d8161356f565b91508282048414831517613b7457613b73613b0d565b5b5092915050565b7f4352616e6b3a2043616e6e6f742073686172652077697468207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613bd56025836135aa565b9150613be082613b7b565b604082019050919050565b5f6020820190508181035f830152613c0281613bc9565b9050919050565b7f4352616e6b3a2043616e6e6f74207368617265207a65726f2070657263656e745f82015250565b5f613c3d6020836135aa565b9150613c4882613c09565b602082019050919050565b5f6020820190508181035f830152613c6a81613c31565b9050919050565b7f4352616e6b3a2043616e6e6f74207368617265203130302b2070657263656e745f82015250565b5f613ca56020836135aa565b9150613cb082613c71565b602082019050919050565b5f6020820190508181035f830152613cd281613c99565b9050919050565b7f4352616e6b3a204e6f206d696e742065786973747300000000000000000000005f82015250565b5f613d0d6015836135aa565b9150613d1882613cd9565b602082019050919050565b5f6020820190508181035f830152613d3a81613d01565b9050919050565b7f4352616e6b3a204d696e74206d61747572697479206e6f7420726561636865645f82015250565b5f613d756020836135aa565b9150613d8082613d41565b602082019050919050565b5f6020820190508181035f830152613da281613d69565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613de08261356f565b9150613deb8361356f565b925082613dfb57613dfa613da9565b5b828204905092915050565b5f613e108261356f565b9150613e1b8361356f565b9250828203905081811115613e3357613e32613b0d565b5b92915050565b5f613e438261356f565b9150613e4e8361356f565b9250828201905080821115613e6657613e65613b0d565b5b92915050565b7f58454e3a206e6f207374616b65206578697374730000000000000000000000005f82015250565b5f613ea06014836135aa565b9150613eab82613e6c565b602082019050919050565b5f6020820190508181035f830152613ecd81613e94565b9050919050565b5f613ede8261356f565b91505f8203613ef057613eef613b0d565b5b600182039050919050565b5f604082019050613f0e5f830185613578565b613f1b6020830184613578565b9392505050565b7f4352616e6b3a2043616e6e6f74207368617265203e3130302070657263656e745f82015250565b5f613f566020836135aa565b9150613f6182613f22565b602082019050919050565b5f6020820190508181035f830152613f8381613f4a565b9050919050565b7f58454e3a2042656c6f77206d696e207374616b650000000000000000000000005f82015250565b5f613fbe6014836135aa565b9150613fc982613f8a565b602082019050919050565b5f6020820190508181035f830152613feb81613fb2565b9050919050565b7f58454e3a2042656c6f77206d696e207374616b65207465726d000000000000005f82015250565b5f6140266019836135aa565b915061403182613ff2565b602082019050919050565b5f6020820190508181035f8301526140538161401a565b9050919050565b7f58454e3a2041626f7665206d6178207374616b65207465726d000000000000005f82015250565b5f61408e6019836135aa565b91506140998261405a565b602082019050919050565b5f6020820190508181035f8301526140bb81614082565b9050919050565b7f58454e3a207374616b65206578697374730000000000000000000000000000005f82015250565b5f6140f66011836135aa565b9150614101826140c2565b602082019050919050565b5f6020820190508181035f830152614123816140ea565b9050919050565b7f58454e3a206e6f7420656e6f7567682062616c616e63650000000000000000005f82015250565b5f61415e6017836135aa565b91506141698261412a565b602082019050919050565b5f6020820190508181035f83015261418b81614152565b9050919050565b7f4275726e3a2042656c6f77206d696e206c696d697400000000000000000000005f82015250565b5f6141c66015836135aa565b91506141d182614192565b602082019050919050565b5f6020820190508181035f8301526141f3816141ba565b9050919050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61422e816141fa565b82525050565b5f6020820190506142475f830184614225565b92915050565b614256816136f6565b8114614260575f5ffd5b50565b5f815190506142718161424d565b92915050565b5f6020828403121561428c5761428b613630565b5b5f61429984828501614263565b91505092915050565b7f4275726e3a206e6f74206120737570706f7274656420636f6e747261637400005f82015250565b5f6142d6601e836135aa565b91506142e1826142a2565b602082019050919050565b5f6020820190508181035f830152614303816142ca565b9050919050565b5f60408201905061431d5f830185613a42565b61432a6020830184613578565b9392505050565b7f4352616e6b3a205465726d206c657373207468616e206d696e000000000000005f82015250565b5f6143656019836135aa565b915061437082614331565b602082019050919050565b5f6020820190508181035f83015261439281614359565b9050919050565b7f4352616e6b3a205465726d206d6f7265207468616e2063757272656e74206d615f8201527f78207465726d0000000000000000000000000000000000000000000000000000602082015250565b5f6143f36026836135aa565b91506143fe82614399565b604082019050919050565b5f6020820190508181035f830152614420816143e7565b9050919050565b7f4352616e6b3a204d696e7420616c726561647920696e2070726f6772657373005f82015250565b5f61445b601f836135aa565b915061446682614427565b602082019050919050565b5f6020820190508181035f8301526144888161444f565b9050919050565b5f6144998261356f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036144cb576144ca613b0d565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6145306025836135aa565b915061453b826144d6565b604082019050919050565b5f6020820190508181035f83015261455d81614524565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6145be6024836135aa565b91506145c982614564565b604082019050919050565b5f6020820190508181035f8301526145eb816145b2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61464c6022836135aa565b9150614657826145f2565b604082019050919050565b5f6020820190508181035f83015261467981614640565b9050919050565b6146898161356f565b82525050565b5f819050919050565b5f819050919050565b5f6146bb6146b66146b18461468f565b614698565b61356f565b9050919050565b6146cb816146a1565b82525050565b5f6040820190506146e45f830185614680565b6146f160208301846146c2565b9392505050565b5f815190506147068161368e565b92915050565b5f6020828403121561472157614720613630565b5b5f61472e848285016146f8565b91505092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f61476b601f836135aa565b915061477682614737565b602082019050919050565b5f6020820190508181035f8301526147988161475f565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f6147d3601d836135aa565b91506147de8261479f565b602082019050919050565b5f6020820190508181035f830152614800816147c7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6148616025836135aa565b915061486c82614807565b604082019050919050565b5f6020820190508181035f83015261488e81614855565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6148ef6023836135aa565b91506148fa82614895565b604082019050919050565b5f6020820190508181035f83015261491c816148e3565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61497d6026836135aa565b915061498882614923565b604082019050919050565b5f6020820190508181035f8301526149aa81614971565b9050919050565b5f6040820190506149c45f830185614680565b6149d16020830184614680565b9392505050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f614a326021836135aa565b9150614a3d826149d8565b604082019050919050565b5f6020820190508181035f830152614a5f81614a26565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f614ac06022836135aa565b9150614acb82614a66565b604082019050919050565b5f6020820190508181035f830152614aed81614ab4565b905091905056fe404d724a61636b4c6576696e20406c62656c79616576206661697263727970746f2e6f7267a2646970667358221220dde80958ed119700481648234ceae7c3bc08c9b9c239a4bd75f4f9c2549d8d5664736f6c634300081b0033" [[create]] name = "XENTorrent" @@ -35,5 +35,5 @@ bytecode = "6101406040526127116007553480156200001857600080fd5b506040516200478d38 kind = "claim_rank" to = "{XENCrypto}" from_pool = "admin" -signature = "claimRank(uint256 term)" +signature = "claimRank(uint256 term) external" args = ["1"] \ No newline at end of file From 9854ef3bc191d9414fa49968810b2e5146f090c4 Mon Sep 17 00:00:00 2001 From: fahimahmedx Date: Tue, 29 Apr 2025 22:03:35 -0400 Subject: [PATCH 5/5] push updated broken XENTorrent bytecode --- scenarios/xen.toml | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/scenarios/xen.toml b/scenarios/xen.toml index cd5b62e9..b7ad70ce 100644 --- a/scenarios/xen.toml +++ b/scenarios/xen.toml @@ -18,22 +18,23 @@ bytecode = "0x60a06040526001600555348015610014575f5ffd5b506040518060400160405280 [[create]] name = "XENTorrent" from_pool = "admin" -bytecode = "6101406040526127116007553480156200001857600080fd5b506040516200478d3803806200478d8339810160408190526200003b9162000596565b604080518082018252600b81526a16115388151bdc9c995b9d60aa1b6020808301919091528251808401909352600683526518d89611539560d21b908301529083733cc6cdda760b79bafa08df41ecfa224f810dceb660016daaeb6d7670e522a718067333cd4e3b15620001d85780156200012657604051633e9f1edf60e11b81523060048201526001600160a01b03831660248201526daaeb6d7670e522a718067333cd4e90637d3e3dbe906044015b600060405180830381600087803b1580156200010757600080fd5b505af11580156200011c573d6000803e3d6000fd5b50505050620001d8565b6001600160a01b03821615620001775760405163a0af290360e01b81523060048201526001600160a01b03831660248201526daaeb6d7670e522a718067333cd4e9063a0af290390604401620000ec565b604051632210724360e11b81523060048201526daaeb6d7670e522a718067333cd4e90634420e48690602401600060405180830381600087803b158015620001be57600080fd5b505af1158015620001d3573d6000803e3d6000fd5b505050505b5050600080546001600160a01b0319166001600160a01b03929092169190911790556001620002088382620006d0565b506002620002178282620006d0565b5050506001600160a01b038616620002645760405162461bcd60e51b815260206004820152600b60248201526a626164206164647265737360a81b60448201526064015b60405180910390fd5b8351855114801562000277575060008551115b620002b75760405162461bcd60e51b815260206004820152600f60248201526e0e0c2e4c2dae640dad2e6dac2e8c6d608b1b60448201526064016200025b565b600019600e553060e05233610100526001600160a01b03811615620002dd5780620002df565b335b6001600160a01b039081166101205260c08490524260a052861660805284516200031190600890602088019062000458565b5083516200032790600990602087019062000458565b5083516001600160401b03811115620003445762000344620004dc565b6040519080825280602002602001820160405280156200036e578160200160208202803683370190505b5080516200038591600a9160209091019062000458565b5060025b6008546200039a90600190620007b2565b81101562000414576009620003b1826001620007ce565b81548110620003c457620003c4620007e4565b90600052602060002001546001620003dd9190620007ce565b600a8281548110620003f357620003f3620007e4565b600091825260209091200155806200040b81620007fa565b91505062000389565b50600854600190600a906200042b908390620007b2565b815481106200043e576200043e620007e4565b906000526020600020018190555050505050505062000816565b82805482825590600052602060002090810192821562000496579160200282015b828111156200049657825182559160200191906001019062000479565b50620004a4929150620004a8565b5090565b5b80821115620004a45760008155600101620004a9565b80516001600160a01b0381168114620004d757600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200050457600080fd5b815160206001600160401b0380831115620005235762000523620004dc565b8260051b604051601f19603f830116810181811084821117156200054b576200054b620004dc565b6040529384528581018301938381019250878511156200056a57600080fd5b83870191505b848210156200058b5781518352918301919083019062000570565b979650505050505050565b60008060008060008060c08789031215620005b057600080fd5b620005bb87620004bf565b60208801519096506001600160401b0380821115620005d957600080fd5b620005e78a838b01620004f2565b96506040890151915080821115620005fe57600080fd5b506200060d89828a01620004f2565b945050606087015192506200062560808801620004bf565b91506200063560a08801620004bf565b90509295509295509295565b600181811c908216806200065657607f821691505b6020821081036200067757634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620006cb57600081815260208120601f850160051c81016020861015620006a65750805b601f850160051c820191505b81811015620006c757828155600101620006b2565b5050505b505050565b81516001600160401b03811115620006ec57620006ec620004dc565b6200070481620006fd845462000641565b846200067d565b602080601f8311600181146200073c5760008415620007235750858301515b600019600386901b1c1916600185901b178555620006c7565b600085815260208120601f198616915b828110156200076d578886015182559484019460019091019084016200074c565b50858210156200078c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b81810381811115620007c857620007c86200079c565b92915050565b80820180821115620007c857620007c86200079c565b634e487b7160e01b600052603260045260246000fd5b6000600182016200080f576200080f6200079c565b5060010190565b60805160a05160c05160e0516101005161012051613eb7620008d6600039600061090301526000818161045e0152610f480152600081816105df01528181611120015261173201526000818161035f0152818161096f015281816111720152818161181e0152611988015260008181610564015261211b0152600081816104140152818161067501528181610a8c01528181610b7d01528181610ca401528181610d94015281816115a2015281816117c00152612d020152613eb76000f3fe608060405234801561001057600080fd5b506004361061021f5760003560e01c806370a082311161012c57806370a08231146103fc57806371141a581461040f57806374a1dff21461043657806389776eb0146104495780638da5cb5b1461045c578063928dd2a71461048257806395d89b411461048a57806398bdf6f5146104925780639dc29fac1461049b578063a126ad1e146104ae578063a1a53fa1146104b8578063a22cb465146104d8578063b88d4fde146104eb578063ba3ec741146104fe578063bd33303314610506578063c87b56dd14610526578063d0d5f5b414610539578063df0030ef1461054c578063e3af6d0a1461055f578063e985e9c514610586578063ecef920114610599578063ee8743d7146105ac578063f5878b9b146105c157600080fd5b806301bb41161461022457806301ffc9a714610239578063044db8ba1461026157806306fdde0314610278578063081812fc1461028d578063095ea7b3146102ad57806319cba6b4146102c057806323b872dd146102d55780632a55205a146102e857806341b169f31461030957806341f434341461031257806342842e0e14610327578063443aa5331461033a578063498a4c2d1461035a5780634d4b2be41461038157806353b18de41461038a578063543746b11461039d57806355ee08ba146103b0578063572b6c05146103b85780635c41d2fe146103cb5780636352211e146103de578063700107af146103f1575b600080fd5b6102376102323660046133b8565b6105d4565b005b61024c6102473660046133e7565b610727565b60405190151581526020015b60405180910390f35b61026a6101f481565b604051908152602001610258565b610280610788565b6040516102589190613454565b6102a061029b3660046133b8565b61081a565b6040516102589190613467565b6102376102bb366004613490565b610841565b6102c8610855565b60405161025891906134bc565b6102376102e3366004613500565b6108d6565b6102fb6102f6366004613541565b610901565b604051610258929190613563565b61026a611d4c81565b6102a06daaeb6d7670e522a718067333cd4e81565b610237610335366004613500565b610946565b61026a6103483660046133b8565b600d6020526000908152604090205481565b61026a7f000000000000000000000000000000000000000000000000000000000000000081565b61026a61271181565b61026a61039836600461357c565b61096b565b6102376103ab366004613490565b610d36565b61026a606381565b61024c6103c63660046135a8565b610f29565b6102376103d93660046135a8565b610f3d565b6102a06103ec3660046133b8565b611029565b61026a6301e1338081565b61026a61040a3660046135a8565b61105e565b6102a07f000000000000000000000000000000000000000000000000000000000000000081565b61026a6104443660046133b8565b6110e4565b61026a6104573660046133b8565b611105565b7f00000000000000000000000000000000000000000000000000000000000000006102a0565b610237611115565b610280611161565b61026a60075481565b6102376104a9366004613490565b611170565b61026a62093a8081565b61026a6104c63660046133b8565b600b6020526000908152604090205481565b6102376104e63660046135d3565b6114dd565b6102376104f9366004613679565b6114f1565b61028061151e565b61026a6105143660046133b8565b600c6020526000908152604090205481565b6102806105343660046133b8565b61153a565b61026a6105473660046133b8565b611717565b61023761055a3660046135a8565b611727565b61026a7f000000000000000000000000000000000000000000000000000000000000000081565b61024c610594366004613727565b6117ec565b61026a6105a7366004613541565b61181a565b61024c6105ba3660046133b8565b6127111190565b6102376105cf366004613755565b611986565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106255760405162461bcd60e51b815260040161061c9061377a565b60405180910390fd5b60008160405160240161063a91815260200190565b60408051601f198184030181529181526020820180516001600160e01b0316639ff054df60e01b179052519091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906106a19084906137c7565b6000604051808303816000865af19150503d80600081146106de576040519150601f19603f3d011682016040523d82523d6000602084013e6106e3565b606091505b50509050806107225760405162461bcd60e51b815260206004820152600b60248201526a18d85b1b0819985a5b195960aa1b604482015260640161061c565b505050565b60006001600160e01b0319821663543746b160e01b148061075857506001600160e01b0319821663152a902d60e11b145b8061077357506001600160e01b0319821663572b6c0560e01b145b80610782575061078282611e3d565b92915050565b606060018054610797906137e3565b80601f01602080910402602001604051908101604052809291908181526020018280546107c3906137e3565b80156108105780601f106107e557610100808354040283529160200191610810565b820191906000526020600020905b8154815290600101906020018083116107f357829003601f168201915b5050505050905090565b600061082582611e8d565b506000908152600560205260409020546001600160a01b031690565b8161084b81611eb5565b6107228383611f5d565b6060600f600061086361207f565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561081057602002820191906000526020600020905b8154815260200190600101908083116108b9575050505050905090565b826001600160a01b03811633146108f0576108f033611eb5565b6108fb84848461208e565b50505050565b7f000000000000000000000000000000000000000000000000000000000000000060006127106109336101f485613833565b61093d9190613860565b90509250929050565b826001600160a01b03811633146109605761096033611eb5565b6108fb8484846120c0565b60007f000000000000000000000000000000000000000000000000000000000000000043116109ac5760405162461bcd60e51b815260040161061c90613874565b600019600e54146109cf5760405162461bcd60e51b815260040161061c906138a3565b600084116109ef5760405162461bcd60e51b815260040161061c906138d7565b60008311610a0f5760405162461bcd60e51b815260040161061c90613905565b60016008600181548110610a2557610a25613932565b9060005260206000200154610a3a9190613948565b8211610a885760405162461bcd60e51b815260206004820152601d60248201527f58454e46543a206e6f7420656e6f756768206275726e20616d6f756e74000000604482015260640161061c565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231610ac161207f565b6040518263ffffffff1660e01b8152600401610add9190613467565b602060405180830381865afa158015610afa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1e919061395b565b9050610b2b600184613948565b8111610b795760405162461bcd60e51b815260206004820152601d60248201527f58454e46543a206e6f7420656e6f7567682058454e2062616c616e6365000000604482015260640161061c565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dd62ed3e610bb261207f565b306040518363ffffffff1660e01b8152600401610bd0929190613974565b602060405180830381865afa158015610bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c11919061395b565b9050610c1e600185613948565b8111610c845760405162461bcd60e51b815260206004820152602f60248201527f58454e46543a206e6f7420656e6f7567682058454e2062616c616e636520617060448201526e383937bb32b2103337b910313ab93760891b606482015260840161061c565b610c8e86856120db565b600e81905550610ca28686600e5487612313565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639dc29fac610cd961207f565b866040518363ffffffff1660e01b8152600401610cf7929190613563565b600060405180830381600087803b158015610d1157600080fd5b505af1158015610d25573d6000803e3d6000fd5b5050600e5498975050505050505050565b600019600e5403610d895760405162461bcd60e51b815260206004820152601d60248201527f58454e46543a20696c6c6567616c2063616c6c6261636b207374617465000000604482015260640161061c565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e015760405162461bcd60e51b815260206004820152601e60248201527f58454e46543a20696c6c6567616c2063616c6c6261636b2063616c6c65720000604482015260640161061c565b600e546001600160a01b0383166000908152600f60205260409020610e25916124ab565b600e80546000908152600c6020526040902082905554610e46908390612525565b600e546000908152600b6020908152604080832054600d9092529182902054915163346ba94160e01b815260048101929092526001600160a01b038416917ffbb2077593b3594fd0ac359a2d898268191a74843aaf1ba3f517b5514a1b07119190730a252663dbcc0b073063d6420a40319e438cfa599063346ba94190602401602060405180830381865af4158015610ee3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f07919061395b565b6040805192835260208301919091520160405180910390a25050600019600e55565b6000546001600160a01b0391821691161490565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fae5760405162461bcd60e51b81526020600482015260166024820152752c22a7232a1d103737ba1030b7103232b83637bcb2b960511b604482015260640161061c565b6000546001600160a01b0316156110075760405162461bcd60e51b815260206004820152601f60248201527f58454e46543a20466f7277617264657220697320616c72656164792073657400604482015260640161061c565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000818152600360205260408120546001600160a01b0316806107825760405162461bcd60e51b815260040161061c9061398e565b60006001600160a01b0382166110c85760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161061c565b506001600160a01b031660009081526004602052604090205490565b600981815481106110f457600080fd5b600091825260209091200154905081565b600a81815481106110f457600080fd5b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461115d5760405162461bcd60e51b815260040161061c9061377a565b6000ff5b606060028054610797906137e3565b7f000000000000000000000000000000000000000000000000000000000000000043116111af5760405162461bcd60e51b815260040161061c90613874565b600019600e54146111d25760405162461bcd60e51b815260040161061c906139c0565b6111df6001600019613948565b600e556111ea61207f565b6040516301ffc9a760e01b815263543746b160e01b60048201526001600160a01b0391909116906301ffc9a790602401602060405180830381865afa158015611237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125b91906139f4565b6112b35760405162461bcd60e51b8152602060048201526024808201527f58454e4654206275726e3a206e6f74206120737570706f7274656420636f6e746044820152631c9858dd60e21b606482015260840161061c565b6001600160a01b0382166113135760405162461bcd60e51b815260206004820152602160248201527f58454e4654206275726e3a20696c6c6567616c206f776e6572206164647265736044820152607360f81b606482015260840161061c565b600081116113615760405162461bcd60e51b815260206004820152601b60248201527a161153919508189d5c9b8e881a5b1b1959d85b081d1bdad95b9259602a1b604482015260640161061c565b61137261136c61207f565b8261253f565b6113ca5760405162461bcd60e51b8152602060048201526024808201527f58454e4654206275726e3a206e6f7420616e20617070726f766564206f70657260448201526330ba37b960e11b606482015260840161061c565b816001600160a01b03166113dd82611029565b6001600160a01b0316146114415760405162461bcd60e51b815260206004820152602560248201527f58454e4654206275726e3a2075736572206973206e6f7420746f6b656e49642060448201526437bbb732b960d91b606482015260840161061c565b6001600160a01b0382166000908152600f60205260409020611463908261259e565b61146c81612683565b61147461207f565b6001600160a01b031663543746b183836040518363ffffffff1660e01b81526004016114a1929190613563565b600060405180830381600087803b1580156114bb57600080fd5b505af11580156114cf573d6000803e3d6000fd5b5050600019600e5550505050565b816114e781611eb5565b6107228383612720565b836001600160a01b038116331461150b5761150b33611eb5565b61151785858585612732565b5050505050565b604051806060016040528060258152602001613e5d6025913981565b6000818152600b6020908152604080832054600d835281842054600c90935292205460609291908261156b57600080fd5b60006115768661276b565b604051631b9345fd60e01b81526004810188905260248101869052604481018590526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660648201526084810184905261163b9073af18644083151cf57f914cccc23c42a1892c218e90631b9345fd9060a401600060405180830381865af415801561160e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116369190810190613a11565b61286b565b604051633c4a25e960e21b815260048101879052602481018590526044810186905273af18644083151cf57f914cccc23c42a1892c218e9063f12897a490606401600060405180830381865af4158015611699573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116c19190810190613a11565b6040516020016116d393929190613a87565b60405160208183030381529060405290506116ed8161286b565b6040516020016116fd9190613ba5565b604051602081830303815290604052945050505050919050565b600881815481106110f457600080fd5b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461176f5760405162461bcd60e51b815260040161061c9061377a565b6000816064604051602401611785929190613563565b60408051601f198184030181529181526020820180516001600160e01b0316631c56030560e01b179052519091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906106a19084906137c7565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b60007f0000000000000000000000000000000000000000000000000000000000000000431161185b5760405162461bcd60e51b815260040161061c90613874565b600019600e541461187e5760405162461bcd60e51b815260040161061c906138a3565b6000831161189e5760405162461bcd60e51b815260040161061c906138d7565b600082116118be5760405162461bcd60e51b815260040161061c90613905565b6118c98360006120db565b600e819055506118de8383600e546000612313565b61190f600e54600f60006118f061207f565b6001600160a01b031681526020810191909152604001600020906124ab565b61192261191a61207f565b600e54612525565b61192a61207f565b6001600160a01b03167ffbb2077593b3594fd0ac359a2d898268191a74843aaf1ba3f517b5514a1b0711848460405161196d929190918252602082015260400190565b60405180910390a25050600e8054600019909155919050565b7f000000000000000000000000000000000000000000000000000000000000000043116119c55760405162461bcd60e51b815260040161061c90613874565b600019600e54146119e85760405162461bcd60e51b815260040161061c906139c0565b6119f56001600019613948565b600e55611a0061207f565b6001600160a01b0316611a1283611029565b6001600160a01b031614611a615760405162461bcd60e51b81526020600482015260166024820152752c22a7232a1d1024b731b7b93932b1ba1037bbb732b960511b604482015260640161061c565b6001600160a01b038116611ab05760405162461bcd60e51b815260206004820152601660248201527558454e46543a20496c6c6567616c206164647265737360501b604482015260640161061c565b6000828152600d60205260409081902054905163e90cdc8960e01b81526004810191909152730a252663dbcc0b073063d6420a40319e438cfa599063e90cdc8990602401602060405180830381865af4158015611b11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3591906139f4565b15611b7c5760405162461bcd60e51b815260206004820152601760248201527616115391950e88105b1c9958591e481c995919595b5959604a1b604482015260640161061c565b604051600090611bc090733d602d80600a3d3981f3363d3d373d3d3d363d7360601b903060601b906e5af43d82803e903d91602b57fd5bf360881b90602001613bea565b60408051601f198184030181529181526000858152600b6020529081205491925090611bed906001613c18565b9050600083604051602401611c029190613467565b60408051601f19818403018152918152602080830180516001600160e01b0390811663df0030ef60e01b1790915282516004815260248101909352908201805190911663928dd2a760e01b17905290915060015b83811015611dbd576040805160208082018490528183018a90528251808303840181526060808401855281519183019190912089518a8401206001600160f81b031960808601523090921b6001600160601b03191660818501526095840181905260b5808501929092528451808503909201825260d5909301909352825192810192909220855191926000928291849182918a0182855af1925082611d495760405162461bcd60e51b815260206004820152602360248201527f58454e46543a204572726f72207768696c6520636c61696d696e67207265776160448201526272647360e81b606482015260840161061c565b6000808751602089016000855af1925082611da65760405162461bcd60e51b815260206004820181905260248201527f58454e46543a204572726f72207768696c6520706f776572696e6720646f776e604482015260640161061c565b505050508080611db590613c2b565b915050611c56565b506000868152600d6020526040902080546001179055611ddb61207f565b6001600160a01b03167f7ae39cb5fb0bebb7775f35a0009e0c94f59c2e40c8967af20842619edac4694d8787604051611e279291909182526001600160a01b0316602082015260400190565b60405180910390a25050600019600e5550505050565b60006001600160e01b031982166380ac58cd60e01b1480611e6e57506001600160e01b03198216635b5e139f60e01b145b8061078257506301ffc9a760e01b6001600160e01b0319831614610782565b611e96816129bd565b611eb25760405162461bcd60e51b815260040161061c9061398e565b50565b6daaeb6d7670e522a718067333cd4e3b15611eb257604051633185c44d60e21b81526daaeb6d7670e522a718067333cd4e9063c617113490611efd9030908590600401613974565b602060405180830381865afa158015611f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3e91906139f4565b611eb25780604051633b79c77360e21b815260040161061c9190613467565b6000611f6882611029565b9050806001600160a01b0316836001600160a01b031603611fd55760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161061c565b806001600160a01b0316611fe761207f565b6001600160a01b0316148061200357506120038161059461207f565b6120755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161061c565b61072283836129da565b6000612089612a48565b905090565b61209961136c61207f565b6120b55760405162461bcd60e51b815260040161061c90613c44565b610722838383612a6a565b610722838383604051806020016040528060008152506114f1565b6000806120e783612c05565b9050806001036121a757606384116121115760405162461bcd60e51b815260040161061c90613c92565b61213f6301e133807f0000000000000000000000000000000000000000000000000000000000000000613c18565b421061218b5760405162461bcd60e51b815260206004820152601b60248201527a16115391950e881b1a5b5a5d1959081d1a5b5948195e1c1a5c9959602a1b604482015260640161061c565b6007805490600061219b83613c2b565b91905055915050610782565b60018111156122f757326121b961207f565b6001600160a01b0316146122215760405162461bcd60e51b815260206004820152602960248201527f58454e46543a206f6e6c7920454f4120616c6c6f77656420666f7220746869736044820152682063617465676f727960b81b606482015260840161061c565b606384116122415760405162461bcd60e51b815260040161061c90613c92565b6009818154811061225457612254613932565b9060005260206000200154600161226b9190613c18565b600a828154811061227e5761227e613932565b9060005260206000200154106122ce5760405162461bcd60e51b815260206004820152601560248201527416115391950e8818db185cdcc81cdbdb19081bdd5d605a1b604482015260640161061c565b600a81815481106122e1576122e1613932565b6000918252602082200180549161219b83613c2b565b6007805490600061230783613c2b565b90915550949350505050565b60405160009061235790733d602d80600a3d3981f3363d3d373d3d3d363d7360601b903060601b906e5af43d82803e903d91602b57fd5bf360881b90602001613bea565b604051602081830303815290604052905060008460405160240161237d91815260200190565b60408051601f198184030181529190526020810180516001600160e01b031662dda08b60e11b179052905060008060015b6123b9896001613c18565b811015612490576040805160208101839052908101889052600090606001604051602081830303815290604052805190602001209050808651602088016000f593506000808651602088016000885af19250826124585760405162461bcd60e51b815260206004820181905260248201527f58454e46543a204572726f72207768696c6520636c61696d696e672072616e6b604482015260640161061c565b8160010361247d5761246d848b8b8a8c612ca2565b6000898152600d60205260409020555b508061248881613c2b565b9150506123ae565b50505060009384525050600b60205250604090209190915550565b612504828054806020026020016040519081016040528092919081815260200182805480156124f957602002820191906000526020600020905b8154815260200190600101908083116124e5575b505050505082612e59565b600003612521578154600181018355600083815260209020018190555b5050565b612521828260405180602001604052806000815250612ea1565b60008061254b83611029565b9050806001600160a01b0316846001600160a01b03161480612572575061257281856117ec565b806125965750836001600160a01b031661258b8461081a565b6001600160a01b0316145b949350505050565b60006125f9838054806020026020016040519081016040528092919081815260200182805480156125ee57602002820191906000526020600020905b8154815260200190600101908083116125da575b505050505083612e59565b90508015610722578254839061261190600190613948565b8154811061262157612621613932565b90600052602060002001548360018361263a9190613948565b8154811061264a5761264a613932565b90600052602060002001819055508280548061266857612668613cc6565b60019003818190600052602060002001600090559055505050565b600061268e82611029565b905061269c81600084612ed4565b6126a76000836129da565b6001600160a01b03811660009081526004602052604081208054600192906126d0908490613948565b909155505060008281526003602052604080822080546001600160a01b0319169055518391906001600160a01b03841690600080516020613e3d833981519152908390a461252181600084612ff5565b61252161272b61207f565b8383613039565b61274361273d61207f565b8361253f565b61275f5760405162461bcd60e51b815260040161061c90613c44565b6108fb84848484613103565b6060816000036127925750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127bc57806127a681613c2b565b91506127b59050600a83613860565b9150612796565b6000816001600160401b038111156127d6576127d661360c565b6040519080825280601f01601f191660200182016040528015612800576020820181803683370190505b5090505b841561259657612815600183613948565b9150612822600a86613cdc565b61282d906030613c18565b60f81b81838151811061284257612842613932565b60200101906001600160f81b031916908160001a905350612864600a86613860565b9450612804565b6060815160000361288a57505060408051602081019091526000815290565b6000604051806060016040528060408152602001613dfd60409139905060006003845160026128b99190613c18565b6128c39190613860565b6128ce906004613833565b6001600160401b038111156128e5576128e561360c565b6040519080825280601f01601f19166020018201604052801561290f576020820181803683370190505b509050600182016020820185865187015b8082101561297b576003820191508151603f8160121c168501518453600184019350603f81600c1c168501518453600184019350603f8160061c168501518453600184019350603f8116850151845350600183019250612920565b505060038651066001811461299757600281146129aa576129b2565b603d6001830353603d60028303536129b2565b603d60018303535b509195945050505050565b6000908152600360205260409020546001600160a01b0316151590565b600081815260056020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612a0f82611029565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000612a5333610f29565b15612a65575060131936013560601c90565b503390565b826001600160a01b0316612a7d82611029565b6001600160a01b031614612ae15760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161061c565b6001600160a01b038216612b435760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161061c565b612b4e838383612ed4565b612b596000826129da565b6001600160a01b0383166000908152600460205260408120805460019290612b82908490613948565b90915550506001600160a01b0382166000908152600460205260408120805460019290612bb0908490613c18565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b038681169182179092559151849391871691600080516020613e3d83398151915291a4610722838383612ff5565b6008546000908190612c1990600190613948565b90505b8015612c995760088181548110612c3557612c35613932565b9060005260206000200154600003612c505750600092915050565b600160088281548110612c6557612c65613932565b9060005260206000200154612c7a9190613948565b831115612c875792915050565b80612c9181613cf0565b915050612c1c565b50600092915050565b600080612cb0836127111190565b90506000612cbe8787613136565b90508115612ce357612ccf85612c05565b612cda906007613c18565b60801760ff1690505b600085118015612cf1575081155b15612cfa575060485b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663df2823318d6040518263ffffffff1660e01b8152600401612d4c9190613467565b60c060405180830381865afa158015612d69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d8d9190613d07565b95509550955095505050730a252663dbcc0b073063d6420a40319e438cfa5963906029d98b868686868b60006040518863ffffffff1660e01b8152600401612e089796959493929190968752602087019590955260408601939093526060850191909152608084015260a0830152151560c082015260e00190565b602060405180830381865af4158015612e25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e49919061395b565b9c9b505050505050505050505050565b60015b82518111612c99578183612e71600184613948565b81518110612e8157612e81613932565b602002602001015103156107825780612e9981613c2b565b915050612e5c565b612eab8383613163565b612eb86000848484613297565b6107225760405162461bcd60e51b815260040161061c90613d5a565b6001600160a01b03831615610722576000818152600d602052604080822054905163125fb94760e11b81526004810191909152730a252663dbcc0b073063d6420a40319e438cfa59906324bf728e90602401602060405180830381865af4158015612f43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f67919061395b565b90506000428211612f8157612f7c8242613948565b612f8b565b612f8b4283613948565b905062093a8081116115175760405162461bcd60e51b815260206004820152602d60248201527f58454e46543a207472616e736665722070726f6869626974656420696e20626c60448201526c1858dadbdd5d081c195c9a5bd9609a1b606482015260840161061c565b6001600160a01b0383166000908152600f60205260409020613017908261259e565b6001600160a01b0382166000908152600f6020526040902061072290826124ab565b816001600160a01b0316836001600160a01b0316036130965760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b604482015260640161061c565b6001600160a01b03838116600081815260066020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61310e848484612a6a565b61311a84848484613297565b6108fb5760405162461bcd60e51b815260040161061c90613d5a565b60006007613144848461339f565b111561315257506007610782565b61315c838361339f565b9392505050565b6001600160a01b0382166131b95760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161061c565b6131c2816129bd565b1561320e5760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b604482015260640161061c565b61321a60008383612ed4565b6001600160a01b0382166000908152600460205260408120805460019290613243908490613c18565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b0386169081179091559051839290600080516020613e3d833981519152908290a461252160008383612ff5565b60006001600160a01b0384163b1561339457836001600160a01b031663150b7a026132c061207f565b8786866040518563ffffffff1660e01b81526004016132e29493929190613dac565b6020604051808303816000875af192505050801561331d575060408051601f3d908101601f1916820190925261331a91810190613ddf565b60015b61337a573d80801561334b576040519150601f19603f3d011682016040523d82523d6000602084013e613350565b606091505b5080516000036133725760405162461bcd60e51b815260040161061c90613d5a565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612596565b506001949350505050565b6000611d4c6133ae8385613833565b61315c9190613860565b6000602082840312156133ca57600080fd5b5035919050565b6001600160e01b031981168114611eb257600080fd5b6000602082840312156133f957600080fd5b813561315c816133d1565b60005b8381101561341f578181015183820152602001613407565b50506000910152565b60008151808452613440816020860160208601613404565b601f01601f19169290920160200192915050565b60208152600061315c6020830184613428565b6001600160a01b0391909116815260200190565b6001600160a01b0381168114611eb257600080fd5b600080604083850312156134a357600080fd5b82356134ae8161347b565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156134f4578351835292840192918401916001016134d8565b50909695505050505050565b60008060006060848603121561351557600080fd5b83356135208161347b565b925060208401356135308161347b565b929592945050506040919091013590565b6000806040838503121561355457600080fd5b50508035926020909101359150565b6001600160a01b03929092168252602082015260400190565b60008060006060848603121561359157600080fd5b505081359360208301359350604090920135919050565b6000602082840312156135ba57600080fd5b813561315c8161347b565b8015158114611eb257600080fd5b600080604083850312156135e657600080fd5b82356135f18161347b565b91506020830135613601816135c5565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561364a5761364a61360c565b604052919050565b60006001600160401b0382111561366b5761366b61360c565b50601f01601f191660200190565b6000806000806080858703121561368f57600080fd5b843561369a8161347b565b935060208501356136aa8161347b565b92506040850135915060608501356001600160401b038111156136cc57600080fd5b8501601f810187136136dd57600080fd5b80356136f06136eb82613652565b613622565b81815288602083850101111561370557600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b6000806040838503121561373a57600080fd5b82356137458161347b565b915060208301356136018161347b565b6000806040838503121561376857600080fd5b8235915060208301356136018161347b565b60208082526017908201527616115388141c9bde1e4e881d5b985d5d1a1bdc9a5e9959604a1b604082015260600190565b600081516137bd818560208601613404565b9290920192915050565b600082516137d9818460208701613404565b9190910192915050565b600181811c908216806137f757607f821691505b60208210810361381757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176107825761078261381d565b634e487b7160e01b600052601260045260246000fd5b60008261386f5761386f61384a565b500490565b60208082526015908201527416115391950e88139bdd081858dd1a5d99481e595d605a1b604082015260600190565b6020808252601a908201527916115391950e881c99595b9d1c985b98de4819195d1958dd195960321b604082015260600190565b60208082526014908201527316115391950e88125b1b1959d85b0818dbdd5b9d60621b604082015260600190565b60208082526013908201527258454e46543a20496c6c6567616c207465726d60681b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b818103818111156107825761078261381d565b60006020828403121561396d57600080fd5b5051919050565b6001600160a01b0392831681529116602082015260400190565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b6020808252601a908201527916115391950e881499595b9d1c985b98de4819195d1958dd195960321b604082015260600190565b600060208284031215613a0657600080fd5b815161315c816135c5565b600060208284031215613a2357600080fd5b81516001600160401b03811115613a3957600080fd5b8201601f81018413613a4a57600080fd5b8051613a586136eb82613652565b818152856020838501011115613a6d57600080fd5b613a7e826020830160208601613404565b95945050505050565b607b60f81b815275226e616d65223a202258454e20546f7272656e74202360501b60018201528351600090613ac3816017850160208901613404565b61088b60f21b60179184019182018190527f226465736372697074696f6e223a202258454e46543a2058454e2043727970746019830152721bc8135a5b9d1a5b99c8151bdc9c995b9d088b606a1b6039830152691134b6b0b3b2911d101160b11b604c8301527919185d184e9a5b5859d94bdcdd99cade1b5b0ed8985cd94d8d0b60321b60568301528551613b5f816070850160208a01613404565b60709201918201526d01130ba3a3934b13aba32b9911d160951b6072820152613b9b613b8e60808301866137ab565b607d60f81b815260010190565b9695505050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000815260008251613bdd81601d850160208701613404565b91909101601d0192915050565b6001600160601b031993841681529190921660148201526001600160881b0319909116602882015260370190565b808201808211156107825761078261381d565b600060018201613c3d57613c3d61381d565b5060010190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6020808252601a908201527916115391950e881d5b99195c881c995c481593554818dbdd5b9d60321b604082015260600190565b634e487b7160e01b600052603160045260246000fd5b600082613ceb57613ceb61384a565b500690565b600081613cff57613cff61381d565b506000190190565b60008060008060008060c08789031215613d2057600080fd5b8651613d2b8161347b565b6020880151604089015160608a015160808b015160a0909b0151939c929b509099909850965090945092505050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613b9b90830184613428565b600060208284031215613df157600080fd5b815161315c816133d156fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef404d724a61636b4c6576696e20406c62656c79616576206661697263727970746f2e6f7267a2646970667358221220b68169ee460b457f28ac6f0d9362a52c071cd56f3fbd60c0b5f3c587fd798f7964736f6c63430008110033000000000000000000000000{XENCrypto}{burnRates_}{tokenLimits_}{startBlockNumber_}{forwarder_}{royalty_Receiver_}00000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cecb8f27f4200f3a0000000000000000000000000000000000000000000000019d971e4fe8401e740000000000000000000000000000000000000000000000033b2e3c9fd0803ce800000000000000000000000000000000000000000000000813f3978f8940984400000000000000000000000000000000000000000000001027e72f1f128130880000000000000000000000000000000000000000000000204fce5e3e25026110000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000017700000000000000000000000000000000000000000000000000000000000000bb800000000000000000000000000000000000000000000000000000000000003e80000000000000000000000000000000000000000000000000000000000000064" +bytecode = "0x610140604052612711600755348015610016575f5ffd5b50604051614eb3380380614eb383398101604081905261003591610529565b604080518082018252600b81526a16115388151bdc9c995b9d60aa1b602080830191909152825180840190935260048352631611539560e21b908301529083733cc6cdda760b79bafa08df41ecfa224f810dceb660016daaeb6d7670e522a718067333cd4e3b156101bd57801561011457604051633e9f1edf60e11b81523060048201526001600160a01b03831660248201526daaeb6d7670e522a718067333cd4e90637d3e3dbe906044015b5f604051808303815f87803b1580156100f9575f5ffd5b505af115801561010b573d5f5f3e3d5ffd5b505050506101bd565b6001600160a01b038216156101635760405163a0af290360e01b81523060048201526001600160a01b03831660248201526daaeb6d7670e522a718067333cd4e9063a0af2903906044016100e2565b604051632210724360e11b81523060048201526daaeb6d7670e522a718067333cd4e90634420e486906024015f604051808303815f87803b1580156101a6575f5ffd5b505af11580156101b8573d5f5f3e3d5ffd5b505050505b50505f80546001600160a01b0319166001600160a01b039290921691909117905560016101ea838261064d565b5060026101f7828261064d565b5050506001600160a01b0386166102435760405162461bcd60e51b815260206004820152600b60248201526a626164206164647265737360a81b60448201526064015b60405180910390fd5b8351855114801561025457505f8551115b6102925760405162461bcd60e51b815260206004820152600f60248201526e0e0c2e4c2dae640dad2e6dac2e8c6d608b1b604482015260640161023a565b5f19600e553060e05233610100526001600160a01b038116156102b557806102b7565b335b6001600160a01b039081166101205260c08490524260a052861660805284516102e7906008906020880190610401565b5083516102fb906009906020870190610401565b5083516001600160401b0381111561031557610315610479565b60405190808252806020026020018201604052801561033e578160200160208202803683370190505b50805161035391600a91602090910190610401565b5060025b6008546103669060019061071b565b8110156103c557600961037a826001610734565b8154811061038a5761038a610747565b905f5260205f200154600161039f9190610734565b600a82815481106103b2576103b2610747565b5f91825260209091200155600101610357565b50600854600190600a906103da90839061071b565b815481106103ea576103ea610747565b905f5260205f20018190555050505050505061075b565b828054828255905f5260205f2090810192821561043a579160200282015b8281111561043a57825182559160200191906001019061041f565b5061044692915061044a565b5090565b5b80821115610446575f815560010161044b565b80516001600160a01b0381168114610474575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261049c575f5ffd5b81516001600160401b038111156104b5576104b5610479565b604051600582901b90603f8201601f191681016001600160401b03811182821017156104e3576104e3610479565b604052918252602081850181019290810186841115610500575f5ffd5b6020860192505b8383101561051f578251815260209283019201610507565b5095945050505050565b5f5f5f5f5f5f60c0878903121561053e575f5ffd5b6105478761045e565b60208801519096506001600160401b03811115610562575f5ffd5b61056e89828a0161048d565b604089015190965090506001600160401b0381111561058b575f5ffd5b61059789828a0161048d565b606089015190955093506105af90506080880161045e565b91506105bd60a0880161045e565b90509295509295509295565b600181811c908216806105dd57607f821691505b6020821081036105fb57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561064857805f5260205f20601f840160051c810160208510156106265750805b601f840160051c820191505b81811015610645575f8155600101610632565b50505b505050565b81516001600160401b0381111561066657610666610479565b61067a8161067484546105c9565b84610601565b6020601f8211600181146106ac575f83156106955750848201515b5f19600385901b1c1916600184901b178455610645565b5f84815260208120601f198516915b828110156106db57878501518255602094850194600190920191016106bb565b50848210156106f857868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561072e5761072e610707565b92915050565b8082018082111561072e5761072e610707565b634e487b7160e01b5f52603260045260245ffd5b60805160a05160c05160e05161010051610120516146a16108125f395f610aaf01525f818161055501526111d801525f81816106fc015281816114000152611b4101525f818161044801528181610b190152818161148101528181611c630152611e8501525f818161065901526128a501525f818161050b015281816107ea01528181610cf001528181610de901528181610f2b01528181611025015281816119a101528181611c34015261364001526146a15ff3fe608060405234801561000f575f5ffd5b50600436106102ee575f3560e01c806370a0823111610192578063a22cb465116100e8578063df0030ef11610093578063ecef92011161006e578063ecef9201146106b6578063ee8743d7146106c9578063f5878b9b146106de575f5ffd5b8063df0030ef14610641578063e3af6d0a14610654578063e985e9c51461067b575f5ffd5b8063bd333033116100c3578063bd333033146105fc578063c87b56dd1461061b578063d0d5f5b41461062e575f5ffd5b8063a22cb465146105ce578063b88d4fde146105e1578063ba3ec741146105f4575f5ffd5b8063928dd2a7116101485780639dc29fac116101235780639dc29fac14610592578063a126ad1e146105a5578063a1a53fa1146105af575f5ffd5b8063928dd2a71461057957806395d89b411461058157806398bdf6f514610589575f5ffd5b806374a1dff21161017857806374a1dff21461052d57806389776eb0146105405780638da5cb5b14610553575f5ffd5b806370a08231146104f357806371141a5814610506575f5ffd5b806342842e0e11610247578063543746b1116101fd5780635c41d2fe116101d85780635c41d2fe146104c25780636352211e146104d5578063700107af146104e8575f5ffd5b8063543746b11461048657806355ee08ba14610499578063572b6c05146104a1575f5ffd5b8063498a4c2d1161022d578063498a4c2d146104435780634d4b2be41461046a57806353b18de414610473575f5ffd5b806342842e0e14610411578063443aa53314610424575f5ffd5b8063095ea7b3116102a75780632a55205a116102825780632a55205a146103c157806341b169f3146103f357806341f43434146103fc575f5ffd5b8063095ea7b31461038657806319cba6b41461039957806323b872dd146103ae575f5ffd5b8063044db8ba116102d7578063044db8ba1461032f57806306fdde0314610346578063081812fc1461035b575f5ffd5b806301bb4116146102f257806301ffc9a714610307575b5f5ffd5b610305610300366004613e53565b6106f1565b005b61031a610315366004613e7f565b6108aa565b60405190151581526020015b60405180910390f35b6103386101f481565b604051908152602001610326565b61034e61093c565b6040516103269190613ec8565b61036e610369366004613e53565b6109cc565b6040516001600160a01b039091168152602001610326565b610305610394366004613eee565b6109f1565b6103a1610a05565b6040516103269190613f18565b6103056103bc366004613f5a565b610a82565b6103d46103cf366004613f98565b610aad565b604080516001600160a01b039093168352602083019190915201610326565b610338611d4c81565b61036e6daaeb6d7670e522a718067333cd4e81565b61030561041f366004613f5a565b610af1565b610338610432366004613e53565b600d6020525f908152604090205481565b6103387f000000000000000000000000000000000000000000000000000000000000000081565b61033861271181565b610338610481366004613fb8565b610b16565b610305610494366004613eee565b610fc8565b610338606381565b61031a6104af366004613fe1565b5f546001600160a01b0391821691161490565b6103056104d0366004613fe1565b6111cd565b61036e6104e3366004613e53565b6112cb565b6103386301e1338081565b610338610501366004613fe1565b61132f565b61036e7f000000000000000000000000000000000000000000000000000000000000000081565b61033861053b366004613e53565b6113c7565b61033861054e366004613e53565b6113e6565b7f000000000000000000000000000000000000000000000000000000000000000061036e565b6103056113f5565b61034e611470565b61033860075481565b6103056105a0366004613eee565b61147f565b61033862093a8081565b6103386105bd366004613e53565b600b6020525f908152604090205481565b6103056105dc366004614009565b6118c6565b6103056105ef3660046140ac565b6118da565b61034e611907565b61033861060a366004613e53565b600c6020525f908152604090205481565b61034e610629366004613e53565b611923565b61033861063c366004613e53565b611b27565b61030561064f366004613fe1565b611b36565b6103387f000000000000000000000000000000000000000000000000000000000000000081565b61031a610689366004614154565b6001600160a01b039182165f90815260066020908152604080832093909416825291909152205460ff1690565b6103386106c4366004613f98565b611c60565b61031a6106d7366004613e53565b6127111190565b6103056106ec366004614180565b611e83565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461076e5760405162461bcd60e51b815260206004820152601760248201527f58454e2050726f78793a20756e617574686f72697a656400000000000000000060448201526064015b60405180910390fd5b5f8160405160240161078291815260200190565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9ff054df00000000000000000000000000000000000000000000000000000000179052519091505f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906108169084906141ba565b5f604051808303815f865af19150503d805f811461084f576040519150601f19603f3d011682016040523d82523d5f602084013e610854565b606091505b50509050806108a55760405162461bcd60e51b815260206004820152600b60248201527f63616c6c206661696c65640000000000000000000000000000000000000000006044820152606401610765565b505050565b5f6001600160e01b0319821663543746b160e01b14806108f357506001600160e01b031982167f2a55205a00000000000000000000000000000000000000000000000000000000145b8061092757506001600160e01b031982167f572b6c0500000000000000000000000000000000000000000000000000000000145b80610936575061093682612460565b92915050565b60606001805461094b906141c5565b80601f0160208091040260200160405190810160405280929190818152602001828054610977906141c5565b80156109c25780601f10610999576101008083540402835291602001916109c2565b820191905f5260205f20905b8154815290600101906020018083116109a557829003601f168201915b5050505050905090565b5f6109d6826124fa565b505f908152600560205260409020546001600160a01b031690565b816109fb81612560565b6108a58383612649565b6060600f5f610a12612786565b6001600160a01b03166001600160a01b031681526020019081526020015f208054806020026020016040519081016040528092919081815260200182805480156109c257602002820191905f5260205f20905b815481526020019060010190808311610a65575050505050905090565b826001600160a01b0381163314610a9c57610a9c33612560565b610aa7848484612794565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000005f612710610ade6101f485614211565b610ae8919061423c565b90509250929050565b826001600160a01b0381163314610b0b57610b0b33612560565b610aa784848461281c565b5f7f00000000000000000000000000000000000000000000000000000000000000004311610b865760405162461bcd60e51b815260206004820152601560248201527f58454e46543a204e6f74206163746976652079657400000000000000000000006044820152606401610765565b5f19600e5414610bd85760405162461bcd60e51b815260206004820152601a60248201527f58454e46543a207265656e7472616e63792064657465637465640000000000006044820152606401610765565b5f8411610c275760405162461bcd60e51b815260206004820152601460248201527f58454e46543a20496c6c6567616c20636f756e740000000000000000000000006044820152606401610765565b5f8311610c765760405162461bcd60e51b815260206004820152601360248201527f58454e46543a20496c6c6567616c207465726d000000000000000000000000006044820152606401610765565b60016008600181548110610c8c57610c8c61424f565b905f5260205f200154610c9f9190614263565b8211610ced5760405162461bcd60e51b815260206004820152601d60248201527f58454e46543a206e6f7420656e6f756768206275726e20616d6f756e740000006044820152606401610765565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231610d25612786565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610d67573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d8b9190614276565b9050610d98600184614263565b8111610de65760405162461bcd60e51b815260206004820152601d60248201527f58454e46543a206e6f7420656e6f7567682058454e2062616c616e63650000006044820152606401610765565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dd62ed3e610e1e612786565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381865afa158015610e66573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e8a9190614276565b9050610e97600185614263565b8111610f0b5760405162461bcd60e51b815260206004820152602f60248201527f58454e46543a206e6f7420656e6f7567682058454e2062616c616e636520617060448201527f70726f76656420666f72206275726e00000000000000000000000000000000006064820152608401610765565b610f158685612836565b600e81905550610f298686600e5487612ae4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639dc29fac610f60612786565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018790526044015f604051808303815f87803b158015610fa5575f5ffd5b505af1158015610fb7573d5f5f3e3d5ffd5b5050600e5498975050505050505050565b5f19600e540361101a5760405162461bcd60e51b815260206004820152601d60248201527f58454e46543a20696c6c6567616c2063616c6c6261636b2073746174650000006044820152606401610765565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110925760405162461bcd60e51b815260206004820152601e60248201527f58454e46543a20696c6c6567616c2063616c6c6261636b2063616c6c657200006044820152606401610765565b600e546001600160a01b0383165f908152600f602052604090206110b591612cb5565b600e80545f908152600c60205260409020829055546110d5908390612d2b565b600e545f908152600b6020908152604080832054600d909252918290205491517f346ba94100000000000000000000000000000000000000000000000000000000815260048101929092526001600160a01b038416917ffbb2077593b3594fd0ac359a2d898268191a74843aaf1ba3f517b5514a1b0711919073{XENMath}9063346ba94190602401602060405180830381865af4158015611188573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ac9190614276565b6040805192835260208301919091520160405180910390a250505f19600e55565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112455760405162461bcd60e51b815260206004820152601660248201527f58454e46543a206e6f7420616e206465706c6f796572000000000000000000006044820152606401610765565b5f546001600160a01b03161561129d5760405162461bcd60e51b815260206004820152601f60248201527f58454e46543a20466f7277617264657220697320616c726561647920736574006044820152606401610765565b5f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b5f818152600360205260408120546001600160a01b0316806109365760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610765565b5f6001600160a01b0382166113ac5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e657200000000000000000000000000000000000000000000006064820152608401610765565b506001600160a01b03165f9081526004602052604090205490565b600981815481106113d6575f80fd5b5f91825260209091200154905081565b600a81815481106113d6575f80fd5b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461146d5760405162461bcd60e51b815260206004820152601760248201527f58454e2050726f78793a20756e617574686f72697a65640000000000000000006044820152606401610765565b5fff5b60606002805461094b906141c5565b7f000000000000000000000000000000000000000000000000000000000000000043116114ee5760405162461bcd60e51b815260206004820152601560248201527f58454e46543a204e6f74206163746976652079657400000000000000000000006044820152606401610765565b5f19600e54146115405760405162461bcd60e51b815260206004820152601a60248201527f58454e46543a205265656e7472616e63792064657465637465640000000000006044820152606401610765565b61154c60015f19614263565b600e55611557612786565b6040517f01ffc9a700000000000000000000000000000000000000000000000000000000815263543746b160e01b60048201526001600160a01b0391909116906301ffc9a790602401602060405180830381865afa1580156115bb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115df919061428d565b6116505760405162461bcd60e51b8152602060048201526024808201527f58454e4654206275726e3a206e6f74206120737570706f7274656420636f6e7460448201527f72616374000000000000000000000000000000000000000000000000000000006064820152608401610765565b6001600160a01b0382166116cc5760405162461bcd60e51b815260206004820152602160248201527f58454e4654206275726e3a20696c6c6567616c206f776e65722061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610765565b5f811161171b5760405162461bcd60e51b815260206004820152601b60248201527f58454e4654206275726e3a20696c6c6567616c20746f6b656e496400000000006044820152606401610765565b61172c611726612786565b82612d44565b61179d5760405162461bcd60e51b8152602060048201526024808201527f58454e4654206275726e3a206e6f7420616e20617070726f766564206f70657260448201527f61746f72000000000000000000000000000000000000000000000000000000006064820152608401610765565b816001600160a01b03166117b0826112cb565b6001600160a01b03161461182c5760405162461bcd60e51b815260206004820152602560248201527f58454e4654206275726e3a2075736572206973206e6f7420746f6b656e49642060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610765565b6001600160a01b0382165f908152600f6020526040902061184d9082612dc1565b61185681612e9c565b61185e612786565b60405163543746b160e01b81526001600160a01b03848116600483015260248201849052919091169063543746b1906044015f604051808303815f87803b1580156118a7575f5ffd5b505af11580156118b9573d5f5f3e3d5ffd5b50505f19600e5550505050565b816118d081612560565b6108a58383612f52565b836001600160a01b03811633146118f4576118f433612560565b61190085858585612f64565b5050505050565b6040518060600160405280602581526020016146476025913981565b5f818152600b6020908152604080832054600d835281842054600c909352922054606092919082611952575f5ffd5b5f61195c86612ff3565b6040517f1b9345fd0000000000000000000000000000000000000000000000000000000081526004810188905260248101869052604481018590526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016606482015260848101849052611a369073{XENCrypto}90631b9345fd9060a4015f60405180830381865af4158015611a0a573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611a3191908101906142a8565b613124565b6040517ff12897a400000000000000000000000000000000000000000000000000000000815260048101879052602481018590526044810186905273{XENCrypto}9063f12897a4906064015f60405180830381865af4158015611aaa573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611ad191908101906142a8565b604051602001611ae39392919061431d565b6040516020818303038152906040529050611afd81613124565b604051602001611b0d91906144c4565b604051602081830303815290604052945050505050919050565b600881815481106113d6575f80fd5b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611bae5760405162461bcd60e51b815260206004820152601760248201527f58454e2050726f78793a20756e617574686f72697a65640000000000000000006044820152606401610765565b6040516001600160a01b03821660248201526064604482018190525f910160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1c56030500000000000000000000000000000000000000000000000000000000179052519091505f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906108169084906141ba565b5f7f00000000000000000000000000000000000000000000000000000000000000004311611cd05760405162461bcd60e51b815260206004820152601560248201527f58454e46543a204e6f74206163746976652079657400000000000000000000006044820152606401610765565b5f19600e5414611d225760405162461bcd60e51b815260206004820152601a60248201527f58454e46543a207265656e7472616e63792064657465637465640000000000006044820152606401610765565b5f8311611d715760405162461bcd60e51b815260206004820152601460248201527f58454e46543a20496c6c6567616c20636f756e740000000000000000000000006044820152606401610765565b5f8211611dc05760405162461bcd60e51b815260206004820152601360248201527f58454e46543a20496c6c6567616c207465726d000000000000000000000000006044820152606401610765565b611dca835f612836565b600e81905550611dde8383600e545f612ae4565b611e0d600e54600f5f611def612786565b6001600160a01b0316815260208101919091526040015f2090612cb5565b611e20611e18612786565b600e54612d2b565b611e28612786565b6001600160a01b03167ffbb2077593b3594fd0ac359a2d898268191a74843aaf1ba3f517b5514a1b07118484604051611e6b929190918252602082015260400190565b60405180910390a25050600e80545f19909155919050565b7f00000000000000000000000000000000000000000000000000000000000000004311611ef25760405162461bcd60e51b815260206004820152601560248201527f58454e46543a204e6f74206163746976652079657400000000000000000000006044820152606401610765565b5f19600e5414611f445760405162461bcd60e51b815260206004820152601a60248201527f58454e46543a205265656e7472616e63792064657465637465640000000000006044820152606401610765565b611f5060015f19614263565b600e55611f5b612786565b6001600160a01b0316611f6d836112cb565b6001600160a01b031614611fc35760405162461bcd60e51b815260206004820152601660248201527f58454e46543a20496e636f7272656374206f776e6572000000000000000000006044820152606401610765565b6001600160a01b0381166120195760405162461bcd60e51b815260206004820152601660248201527f58454e46543a20496c6c6567616c2061646472657373000000000000000000006044820152606401610765565b5f828152600d6020526040908190205490517fe90cdc89000000000000000000000000000000000000000000000000000000008152600481019190915273{XENMath}9063e90cdc8990602401602060405180830381865af4158015612090573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120b4919061428d565b156121015760405162461bcd60e51b815260206004820152601760248201527f58454e46543a20416c72656164792072656465656d65640000000000000000006044820152606401610765565b6040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000060208201526bffffffffffffffffffffffff193060601b1660348201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060488201525f9060570160408051601f198184030181529181525f858152600b60205290812054919250906121999060016144f5565b6040516001600160a01b03851660248201529091505f9060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081167fdf0030ef00000000000000000000000000000000000000000000000000000000179091528251600481526024810190935290820180519091167f928dd2a70000000000000000000000000000000000000000000000000000000017905290915060015b838110156123e2576040805160208082018490528183018a90528251808303840181526060808401855281519183019190912089518a8401207fff0000000000000000000000000000000000000000000000000000000000000060808601523090921b6bffffffffffffffffffffffff191660818501526095840181905260b5808501929092528451808503909201825260d5909301909352825192810192909220855191925f928291849182918a0182855af19250826123775760405162461bcd60e51b815260206004820152602360248201527f58454e46543a204572726f72207768696c6520636c61696d696e67207265776160448201527f72647300000000000000000000000000000000000000000000000000000000006064820152608401610765565b5f5f8751602089015f855af19250826123d25760405162461bcd60e51b815260206004820181905260248201527f58454e46543a204572726f72207768696c6520706f776572696e6720646f776e6044820152606401610765565b50506001909201915061224e9050565b505f868152600d60205260409020805460011790556123ff612786565b6001600160a01b03167f7ae39cb5fb0bebb7775f35a0009e0c94f59c2e40c8967af20842619edac4694d878760405161244b9291909182526001600160a01b0316602082015260400190565b60405180910390a250505f19600e5550505050565b5f6001600160e01b031982167f80ac58cd0000000000000000000000000000000000000000000000000000000014806124c257506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061093657507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b0319831614610936565b5f818152600360205260409020546001600160a01b031661255d5760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610765565b50565b6daaeb6d7670e522a718067333cd4e3b1561255d576040517fc61711340000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03821660248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa1580156125e4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612608919061428d565b61255d576040517fede71dcc0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401610765565b5f612653826112cb565b9050806001600160a01b0316836001600160a01b0316036126dc5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610765565b806001600160a01b03166126ee612786565b6001600160a01b0316148061270a575061270a81610689612786565b61277c5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610765565b6108a58383613273565b5f61278f6132ed565b905090565b61279f611726612786565b6128115760405162461bcd60e51b815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f7665640000000000000000000000000000000000006064820152608401610765565b6108a583838361332f565b6108a583838360405180602001604052805f8152506118da565b5f5f61284183613516565b905080600103612932576063841161289b5760405162461bcd60e51b815260206004820152601a60248201527f58454e46543a20756e6465722072657120564d5520636f756e740000000000006044820152606401610765565b6128c96301e133807f00000000000000000000000000000000000000000000000000000000000000006144f5565b42106129175760405162461bcd60e51b815260206004820152601b60248201527f58454e46543a206c696d697465642074696d65206578706972656400000000006044820152606401610765565b60078054905f61292683614508565b91905055915050610936565b6001811115612ac95732612944612786565b6001600160a01b0316146129c05760405162461bcd60e51b815260206004820152602960248201527f58454e46543a206f6e6c7920454f4120616c6c6f77656420666f72207468697360448201527f2063617465676f727900000000000000000000000000000000000000000000006064820152608401610765565b60638411612a105760405162461bcd60e51b815260206004820152601a60248201527f58454e46543a20756e6465722072657120564d5520636f756e740000000000006044820152606401610765565b60098181548110612a2357612a2361424f565b905f5260205f2001546001612a3891906144f5565b600a8281548110612a4b57612a4b61424f565b905f5260205f20015410612aa15760405162461bcd60e51b815260206004820152601560248201527f58454e46543a20636c61737320736f6c64206f757400000000000000000000006044820152606401610765565b600a8181548110612ab457612ab461424f565b5f918252602082200180549161292683614508565b60078054905f612ad883614508565b90915550949350505050565b604080517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000060208201523060601b6bffffffffffffffffffffffff191660348201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060488201528151603781830301815260578201909252607b81018590525f90609b0160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01bb41160000000000000000000000000000000000000000000000000000000017905290505f8060015b612bd38960016144f5565b811015612c9b5760408051602081018390529081018890525f90606001604051602081830303815290604052805190602001209050808651602088015ff593505f5f8651602088015f885af1925082612c6e5760405162461bcd60e51b815260206004820181905260248201527f58454e46543a204572726f72207768696c6520636c61696d696e672072616e6b6044820152606401610765565b81600103612c9257612c83848b8b8a8c6135ab565b5f898152600d60205260409020555b50600101612bc8565b5050505f9384525050600b60205250604090209190915550565b612d0c82805480602002602001604051908101604052809291908181526020018280548015612d0157602002820191905f5260205f20905b815481526020019060010190808311612ced575b505050505082613772565b5f03612d275781546001810183555f83815260209020018190555b5050565b612d27828260405180602001604052805f8152506137ba565b5f5f612d4f836112cb565b9050806001600160a01b0316846001600160a01b03161480612d9557506001600160a01b038082165f9081526006602090815260408083209388168352929052205460ff165b80612db95750836001600160a01b0316612dae846109cc565b6001600160a01b0316145b949350505050565b5f612e1983805480602002602001604051908101604052809291908181526020018280548015612e0e57602002820191905f5260205f20905b815481526020019060010190808311612dfa575b505050505083613772565b905080156108a55782548390612e3190600190614263565b81548110612e4157612e4161424f565b905f5260205f20015483600183612e589190614263565b81548110612e6857612e6861424f565b905f5260205f20018190555082805480612e8457612e84614520565b600190038181905f5260205f20015f90559055505050565b5f612ea6826112cb565b9050612eb3815f84613842565b612ebd5f83613273565b6001600160a01b0381165f908152600460205260408120805460019290612ee5908490614263565b90915550505f82815260036020526040808220805473ffffffffffffffffffffffffffffffffffffffff19169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a4612d27815f84613988565b612d27612f5d612786565b83836139ca565b612f75612f6f612786565b83612d44565b612fe75760405162461bcd60e51b815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f7665640000000000000000000000000000000000006064820152608401610765565b610aa784848484613ab5565b6060815f0361303557505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b815f5b811561305e578061304881614508565b91506130579050600a8361423c565b9150613038565b5f8167ffffffffffffffff81111561307857613078614040565b6040519080825280601f01601f1916602001820160405280156130a2576020820181803683370190505b5090505b8415612db9576130b7600183614263565b91506130c4600a86614534565b6130cf9060306144f5565b60f81b8183815181106130e4576130e461424f565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535061311d600a8661423c565b94506130a6565b606081515f0361314157505060408051602081019091525f815290565b5f6040518060600160405280604081526020016146076040913990505f60038451600261316e91906144f5565b613178919061423c565b613183906004614211565b67ffffffffffffffff81111561319b5761319b614040565b6040519080825280601f01601f1916602001820160405280156131c5576020820181803683370190505b509050600182016020820185865187015b80821015613231576003820191508151603f8160121c168501518453600184019350603f81600c1c168501518453600184019350603f8160061c168501518453600184019350603f81168501518453506001830192506131d6565b505060038651066001811461324d576002811461326057613268565b603d6001830353603d6002830353613268565b603d60018303535b509195945050505050565b5f818152600560205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03841690811790915581906132b4826112cb565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b5f80546001600160a01b0316330361332a57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90565b503390565b826001600160a01b0316613342826112cb565b6001600160a01b0316146133be5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610765565b6001600160a01b0382166134395760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610765565b613444838383613842565b61344e5f82613273565b6001600160a01b0383165f908152600460205260408120805460019290613476908490614263565b90915550506001600160a01b0382165f9081526004602052604081208054600192906134a39084906144f5565b90915550505f81815260036020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a46108a5838383613988565b6008545f90819061352990600190614263565b90505b80156135a357600881815481106135455761354561424f565b905f5260205f2001545f0361355c57505f92915050565b6001600882815481106135715761357161424f565b905f5260205f2001546135849190614263565b8311156135915792915050565b8061359b81614547565b91505061352c565b505f92915050565b5f5f6135b8836127111190565b90505f6135c58787613b3e565b905081156135ea576135d685613516565b6135e19060076144f5565b60801760ff1690505b5f851180156135f7575081155b15613600575060485b6040517fdf2823310000000000000000000000000000000000000000000000000000000081526001600160a01b0389811660048301525f918291829182917f0000000000000000000000000000000000000000000000000000000000000000169063df2823319060240160c060405180830381865afa158015613685573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136a9919061455c565b9550955095509550505073{XENMath}63906029d98b868686868b5f6040518863ffffffff1660e01b81526004016137239796959493929190968752602087019590955260408601939093526060850191909152608084015260a0830152151560c082015260e00190565b602060405180830381865af415801561373e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137629190614276565b9c9b505050505050505050505050565b60015b825181116135a357818361378a600184614263565b8151811061379a5761379a61424f565b6020026020010151031561093657806137b281614508565b915050613775565b6137c48383613b6a565b6137d05f848484613cc8565b6108a55760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610765565b6001600160a01b038316156108a5575f818152600d60205260408082205490517f24bf728e000000000000000000000000000000000000000000000000000000008152600481019190915273{XENMath}906324bf728e90602401602060405180830381865af41580156138c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138eb9190614276565b90505f428211613904576138ff8242614263565b61390e565b61390e4283614263565b905062093a8081116119005760405162461bcd60e51b815260206004820152602d60248201527f58454e46543a207472616e736665722070726f6869626974656420696e20626c60448201527f61636b6f757420706572696f64000000000000000000000000000000000000006064820152608401610765565b6001600160a01b0383165f908152600f602052604090206139a99082612dc1565b6001600160a01b0382165f908152600f602052604090206108a59082612cb5565b816001600160a01b0316836001600160a01b031603613a2b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610765565b6001600160a01b038381165f8181526006602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b613ac084848461332f565b613acc84848484613cc8565b610aa75760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610765565b5f6007613b4b8484613e3b565b1115613b5957506007610936565b613b638383613e3b565b9392505050565b6001600160a01b038216613bc05760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610765565b5f818152600360205260409020546001600160a01b031615613c245760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610765565b613c2f5f8383613842565b6001600160a01b0382165f908152600460205260408120805460019290613c579084906144f5565b90915550505f81815260036020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4612d275f8383613988565b5f6001600160a01b0384163b15613e3057836001600160a01b031663150b7a02613cf0612786565b8786866040518563ffffffff1660e01b8152600401613d1294939291906145ab565b6020604051808303815f875af1925050508015613d4c575060408051601f3d908101601f19168201909252613d49918101906145eb565b60015b613dfd573d808015613d79576040519150601f19603f3d011682016040523d82523d5f602084013e613d7e565b606091505b5080515f03613df55760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610765565b805181602001fd5b6001600160e01b0319167f150b7a0200000000000000000000000000000000000000000000000000000000149050612db9565b506001949350505050565b5f611d4c613e498385614211565b613b63919061423c565b5f60208284031215613e63575f5ffd5b5035919050565b6001600160e01b03198116811461255d575f5ffd5b5f60208284031215613e8f575f5ffd5b8135613b6381613e6a565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f613b636020830184613e9a565b6001600160a01b038116811461255d575f5ffd5b5f5f60408385031215613eff575f5ffd5b8235613f0a81613eda565b946020939093013593505050565b602080825282518282018190525f918401906040840190835b81811015613f4f578351835260209384019390920191600101613f31565b509095945050505050565b5f5f5f60608486031215613f6c575f5ffd5b8335613f7781613eda565b92506020840135613f8781613eda565b929592945050506040919091013590565b5f5f60408385031215613fa9575f5ffd5b50508035926020909101359150565b5f5f5f60608486031215613fca575f5ffd5b505081359360208301359350604090920135919050565b5f60208284031215613ff1575f5ffd5b8135613b6381613eda565b801515811461255d575f5ffd5b5f5f6040838503121561401a575f5ffd5b823561402581613eda565b9150602083013561403581613ffc565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561407d5761407d614040565b604052919050565b5f67ffffffffffffffff82111561409e5761409e614040565b50601f01601f191660200190565b5f5f5f5f608085870312156140bf575f5ffd5b84356140ca81613eda565b935060208501356140da81613eda565b925060408501359150606085013567ffffffffffffffff8111156140fc575f5ffd5b8501601f8101871361410c575f5ffd5b803561411f61411a82614085565b614054565b818152886020838501011115614133575f5ffd5b816020840160208301375f6020838301015280935050505092959194509250565b5f5f60408385031215614165575f5ffd5b823561417081613eda565b9150602083013561403581613eda565b5f5f60408385031215614191575f5ffd5b82359150602083013561403581613eda565b5f81518060208401855e5f93019283525090919050565b5f613b6382846141a3565b600181811c908216806141d957607f821691505b6020821081036141f757634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610936576109366141fd565b634e487b7160e01b5f52601260045260245ffd5b5f8261424a5761424a614228565b500490565b634e487b7160e01b5f52603260045260245ffd5b81810381811115610936576109366141fd565b5f60208284031215614286575f5ffd5b5051919050565b5f6020828403121561429d575f5ffd5b8151613b6381613ffc565b5f602082840312156142b8575f5ffd5b815167ffffffffffffffff8111156142ce575f5ffd5b8201601f810184136142de575f5ffd5b80516142ec61411a82614085565b818152856020838501011115614300575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b7f7b0000000000000000000000000000000000000000000000000000000000000081527f226e616d65223a202258454e20546f7272656e7420230000000000000000000060018201525f61437460178301866141a3565b7f222c00000000000000000000000000000000000000000000000000000000000081527f226465736372697074696f6e223a202258454e46543a2058454e20437279707460028201527f6f204d696e74696e6720546f7272656e74222c0000000000000000000000000060228201527f22696d616765223a20220000000000000000000000000000000000000000000060358201527f646174613a696d6167652f7376672b786d6c3b6261736536342c000000000000603f82015261443c60598201866141a3565b90507f222c00000000000000000000000000000000000000000000000000000000000081527f2261747472696275746573223a20000000000000000000000000000000000000600282015261449460108201856141a3565b7f7d0000000000000000000000000000000000000000000000000000000000000081526001019695505050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f613b63601d8301846141a3565b80820180821115610936576109366141fd565b5f60018201614519576145196141fd565b5060010190565b634e487b7160e01b5f52603160045260245ffd5b5f8261454257614542614228565b500690565b5f81614555576145556141fd565b505f190190565b5f5f5f5f5f5f60c08789031215614571575f5ffd5b865161457c81613eda565b6020880151604089015160608a015160808b015160a0909b0151939c929b509099909850965090945092505050565b6001600160a01b03851681526001600160a01b0384166020820152826040820152608060608201525f6145e16080830184613e9a565b9695505050505050565b5f602082840312156145fb575f5ffd5b8151613b6381613e6a56fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f404d724a61636b4c6576696e20406c62656c79616576206661697263727970746f2e6f7267a26469706673582212202baefc6dde6908f88d0cc461c7e7407d03a707a225386f7cd3b306fee3096f9f64736f6c634300081b0033000000000000000000000000{XENCrypto}{burnRates_}{tokenLimits_}{startBlockNumber_}{forwarder_}{royalty_Receiver_}00000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cecb8f27f4200f3a0000000000000000000000000000000000000000000000019d971e4fe8401e740000000000000000000000000000000000000000000000033b2e3c9fd0803ce800000000000000000000000000000000000000000000000813f3978f8940984400000000000000000000000000000000000000000000001027e72f1f128130880000000000000000000000000000000000000000000000204fce5e3e25026110000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000017700000000000000000000000000000000000000000000000000000000000000bb800000000000000000000000000000000000000000000000000000000000003e80000000000000000000000000000000000000000000000000000000000000064" + # deploy 128 contracts doing XEN. Note that term is just the number of days until a user can call claimMintReward(), however our test script doesn't call it as it's not the primary driver of state growth. [[spam]] # [spam.tx] -# kind = "bulk_claim_rank" -# to = "{XENTorrent}" +# kind = "claim_rank" +# to = "{XENCrypto}" # from_pool = "admin" -# signature = "bulkClaimRank(uint256 count, uint256 term)" -# args = ["128", "1"] +# signature = "claimRank(uint256 term) external" +# args = ["1"] [spam.tx] -kind = "claim_rank" -to = "{XENCrypto}" +kind = "bulk_claim_rank" +to = "{XENTorrent}" from_pool = "admin" -signature = "claimRank(uint256 term) external" -args = ["1"] \ No newline at end of file +signature = "bulkClaimRank(uint256 count, uint256 term) public" +args = ["128", "1"] \ No newline at end of file