diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..44a7c6c --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,51 @@ +# Simple workflow for deploying static content to GitHub Pages +name: Deploy static content to Pages + +on: + # Runs on pushes targeting the default branch + push: + branches: ['main'] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets the GITHUB_TOKEN permissions to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow one concurrent deployment +concurrency: + group: 'pages' + cancel-in-progress: true + +jobs: + # Single deploy job since we're just deploying + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Set up Node + uses: actions/setup-node@v3 + with: + node-version: 18 + cache: 'npm' + - name: Install dependencies + run: npm install + - name: Build + run: npm run build + - name: Setup Pages + uses: actions/configure-pages@v3 + - name: Upload artifact + uses: actions/upload-pages-artifact@v2 + with: + # Upload dist repository + path: './dist' + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v2 diff --git a/index.html b/index.html index 33502a8..de99352 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ - + Cipher Bomb diff --git a/public/icon.png b/public/icon.png new file mode 100644 index 0000000..1a03acd Binary files /dev/null and b/public/icon.png differ diff --git a/public/vite.svg b/public/vite.svg deleted file mode 100644 index e7b8dfb..0000000 --- a/public/vite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/abi/cipherbomb.json b/src/abi/cipherbomb.json index 0f6729f..2ec4cac 100644 --- a/src/abi/cipherbomb.json +++ b/src/abi/cipherbomb.json @@ -576,8 +576,8 @@ "type": "function" } ], - "bytecode": "0x6101606040523480156200001257600080fd5b506040518060400160405280601381526020017f417574686f72697a6174696f6e20746f6b656e00000000000000000000000000815250604051806040016040528060018152602001603160f81b81525081816200007f620000796200015060201b60201c565b62000154565b6200008c826001620001a4565b610120526200009d816002620001a4565b61014052815160208084019190912060e052815190820120610100524660a0526200012b60e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c05250506003805460ff191690556200014a620001dd565b620005fb565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602083511015620001c457620001bc8362000260565b9050620001d7565b81620001d1848262000476565b5060ff90505b92915050565b60038054600a80546201000062ffffff199182161790915516620101001790556200020b60046000620003a2565b6003805463ff00000019169055620002356200022f6000546001600160a01b031690565b620002ac565b6040517ff0571e7ef816e3575e546f9e78033cc0535251179852a1efe493e98b7a672f8090600090a1565b600080829050601f8151111562000297578260405163305a27a960e01b81526004016200028e919062000542565b60405180910390fd5b8051620002a48262000592565b179392505050565b80600160005b60035460ff6301000000909104811690821610156200031957826001600160a01b031660048260ff1660068110620002ee57620002ee620005b7565b01546001600160a01b0316036200030457600091505b806200031081620005cd565b915050620002b2565b50806200032557600080fd5b60035483906004906301000000900460ff16600681106200034a576200034a620005b7565b0180546001600160a01b0319166001600160a01b0392909216919091179055600380546301000000900460ff1690806200038483620005cd565b91906101000a81548160ff021916908360ff16021790555050505050565b50620003b3906006810190620003b6565b50565b5b80821115620003cd5760008155600101620003b7565b5090565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620003fc57607f821691505b6020821081036200041d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200047157600081815260208120601f850160051c810160208610156200044c5750805b601f850160051c820191505b818110156200046d5782815560010162000458565b5050505b505050565b81516001600160401b03811115620004925762000492620003d1565b620004aa81620004a38454620003e7565b8462000423565b602080601f831160018114620004e25760008415620004c95750858301515b600019600386901b1c1916600185901b1785556200046d565b600085815260208120601f198616915b828110156200051357888601518255948401946001909101908401620004f2565b5085821015620005325787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208083528351808285015260005b81811015620005715785810183015185820160400152820162000553565b506000604082860101526040601f19601f8301168501019250505092915050565b805160208083015191908110156200041d5760001960209190910360031b1b16919050565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff8103620005f257634e487b7160e01b600052601160045260246000fd5b60010192915050565b60805160a05160c05160e05161010051610120516101405161389f6200065660003960006115480152600061151d0152600061271e015260006126f6015260006126510152600061267b015260006126a5015261389f6000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c806384b0196e11610104578063be9a6555116100a2578063e2e78fb111610071578063e2e78fb1146103bc578063f2fde38b146103d6578063f71d96cb146103e9578063fcfff16f146103fc57600080fd5b8063be9a65551461038c578063c47f002714610394578063cdb34cc9146103a7578063d66d9e19146103b457600080fd5b806396c55175116100de57806396c5517514610349578063b0df9e531461035c578063b688a36314610371578063be075e151461037957600080fd5b806384b0196e1461030157806385f07bbe1461031c5780638da5cb5b1461032457600080fd5b8063553df021116101715780636f4bda171161014b5780636f4bda17146102cb578063715018a6146102df57806383b2b626146102e7578063847fde93146102ef57600080fd5b8063553df021146102a15780636094ef6d146102ab5780636e8c2caf146102be57600080fd5b806326cd716d116101ad57806326cd716d146102365780633cca779b146102565780634411b3eb14610278578063535b047e1461028e57600080fd5b806301984892146101d4578063160808b9146101fd57806320b5039014610223575b600080fd5b6101e76101e2366004613289565b610404565b6040516101f49190613302565b60405180910390f35b600a5461021190600160b81b900460ff1681565b60405160ff90911681526020016101f4565b6101e7610231366004613357565b61049e565b610249610244366004613357565b6106fb565b6040516101f491906133a3565b60035461026890610100900460ff1681565b60405190151581526020016101f4565b610280600681565b6040519081526020016101f4565b6003546102689062010000900460ff1681565b6102a96109b2565b005b6102a96102b9366004613289565b610b73565b6003546102689060ff1681565b600354610211906301000000900460ff1681565b6102a961122b565b6102a961123f565b600a5461021190610100900460ff1681565b61030961150f565b6040516101f497969594939291906133f0565b610280600481565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016101f4565b6102a9610357366004613289565b611598565b610364611645565b6040516101f49190613486565b6102a96117bc565b600a546102689062010000900460ff1681565b6102a96118b5565b6102a96103a23660046134cd565b611a20565b600a546102119060ff1681565b6102a9611a7a565b600a5461033190630100000090046001600160a01b031681565b6102a96103e4366004613289565b611b18565b6103316103f736600461350f565b611ba5565b6102a9611bc5565b6012602052600090815260409020805461041d90613528565b80601f016020809104026020016040519081016040528092919081815260200182805461044990613528565b80156104965780601f1061046b57610100808354040283529160200191610496565b820191906000526020600020905b81548152906001019060200180831161047957829003601f168201915b505050505081565b600354606090610100900460ff161580156104bb575060035460ff165b6105065760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064015b60405180910390fd5b336000805b60035460ff63010000009091048116908216101561056a57826001600160a01b031660048260ff166006811061054357610543613562565b01546001600160a01b03160361055857600191505b806105628161358e565b91505061050b565b50806105b85760405162461bcd60e51b815260206004820152601960248201527f5468697320706c6179657220646f65736e27742065786973740000000000000060448201526064016104fd565b8585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080517f051d137ae0e1fae6e3b6559fed4442b35a85a9a39789838ad5c9ea05e7da2dce6020820152908101879052909350610644925060600190505b60405160208183030381529060405280519060200120611c43565b905060006106528284611c76565b90506001600160a01b03811633146106d25760405162461bcd60e51b815260206004820152603160248201527f454950373132207369676e657220616e64207472616e73616374696f6e20736960448201527f676e657220646f206e6f74206d6174636800000000000000000000000000000060648201526084016104fd565b336000818152601360205260409020546106ec908c611c9a565b9b9a5050505050505050505050565b61070361323f565b600354610100900460ff1615801561071d575060035460ff165b6107635760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b336000805b60035460ff6301000000909104811690821610156107c757826001600160a01b031660048260ff16600681106107a0576107a0613562565b01546001600160a01b0316036107b557600191505b806107bf8161358e565b915050610768565b50806108155760405162461bcd60e51b815260206004820152601960248201527f5468697320706c6179657220646f65736e27742065786973740000000000000060448201526064016104fd565b8585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080517f051d137ae0e1fae6e3b6559fed4442b35a85a9a39789838ad5c9ea05e7da2dce602082015290810187905290935061088a92506060019050610629565b905060006108988284611c76565b90506001600160a01b03811633146109185760405162461bcd60e51b815260206004820152603160248201527f454950373132207369676e657220616e64207472616e73616374696f6e20736960448201527f676e657220646f206e6f74206d6174636800000000000000000000000000000060648201526084016104fd565b33600081815260146020526040812060010154610935908d611c9a565b6001600160a01b0383166000908152601460205260408120549192509061095c908e611c9a565b6001600160a01b03841660009081526014602052604081206002015491925090610986908f611c9a565b60408051606081018252948552602085019390935291830191909152509b9a5050505050505050505050565b600354610100900460ff161580156109cc575060035460ff165b610a125760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b600a5462010000900460ff16610a6a5760405162461bcd60e51b815260206004820152601560248201527f4e6f206e65656420746f206465616c206361726473000000000000000000000060448201526064016104fd565b600a5462010000900460ff16610ac25760405162461bcd60e51b815260206004820152601e60248201527f5468657265206973206e6f206e65656420746f206465616c206361726473000060448201526064016104fd565b600a54600090610ae690610ae190600160b81b900460ff1660016135ad565b611cad565b905060005b8151811015610b6f5760018251610b0291906135c6565b8103610b2d57818181518110610b1a57610b1a613562565b6020026020010151601181905550610b5d565b818181518110610b3f57610b3f613562565b6020026020010151600b8260068110610b5a57610b5a613562565b01555b80610b67816135d9565b915050610aeb565b5050565b600354610100900460ff16158015610b8d575060035460ff165b610bd35760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b600354600a54630100000090910460ff90811661010090920416108015610c035750600a5462010000900460ff16155b610c4f5760405162461bcd60e51b815260206004820152601260248201527f4e65656420746f206465616c206361726473000000000000000000000000000060448201526064016104fd565b600a543390630100000090046001600160a01b03168114610cb25760405162461bcd60e51b815260206004820152601360248201527f49742773206e6f7420796f7572207475726e210000000000000000000000000060448201526064016104fd565b6001600160a01b038216600090815260146020526040812060030154610ce191610cdc9190611e68565b611e8b565b610cea57600080fd5b6000610cfe610cf7611e9e565b6005611eaf565b6001600160a01b03841660009081526014602052604081206003015491925090610d5b90610d2d908490611ed2565b6001600160a01b0386166000908152601460205260409020600301548490610d56908290611f04565b611f10565b6001600160a01b03851660009081526014602052604081206001015491925090610db590610d899083611e68565b6001600160a01b038716600090815260146020526040902060010154610db0908590611ed2565b611f25565b6001600160a01b03861660009081526014602052604081205491925090610e0890610de1906001611f39565b6001600160a01b038816600090815260146020526040902060010154610db0908690611f5c565b9050610e6282610e41601460008a6001600160a01b03166001600160a01b03168152602001908152602001600020600101546001611f8e565b6001600160a01b038916600090815260146020526040902060010154611f10565b6001600160a01b038716600090815260146020526040902060018082019290925554610eb1918391610e9391611f8e565b6001600160a01b038916600090815260146020526040902054611f10565b6001600160a01b038716600090815260146020526040902055610efe610ed78284611fb1565b6001600160a01b038816600090815260146020526040902060020154610d56816001611f8e565b6001600160a01b0387166000908152601460205260409020600281019190915560030154610f2d906001611f8e565b6001600160a01b038716600090815260146020526040812060030191909155610f5a60025b60ff16611fc0565b9050610f7083610f6a6000610f52565b83611f10565b9050610f8082610f6a6001610f52565b600a805491925061010090910460ff16906001610f9c8361358e565b91906101000a81548160ff021916908360ff160217905550506000610fc082611fcd565b905060001960ff82160161102e577f95fb52f15fa9d8267b16e5d9961650d3fa62add7f9f5bee09c1c5b0f6dafde74604051611014906020808252600490820152633137b6b160e11b604082015260600190565b60405180910390a1611024611fd8565b5050505050505050565b60ff81166110b457600a8054600160b81b900460ff1690601761105083613608565b91906101000a81548160ff021916908360ff16021790555050600a60179054906101000a900460ff1660ff166000036110b4576040517f34c3cf60e34f02711f998799056fda338f934c6d952eb04dbee6616bce67d34d90600090a1611024611fd8565b600354600a54630100000090910460ff90811661010090920416036111b857600a805460ff169060006110e68361358e565b82546101009290920a60ff818102199093169183160217909155600a5416600403905061116c577f95fb52f15fa9d8267b16e5d9961650d3fa62add7f9f5bee09c1c5b0f6dafde746040516110149060208082526005908201527f6361726473000000000000000000000000000000000000000000000000000000604082015260600190565b600a5460405160ff90911681527fc10f7f17f63e8d93f47783cd5e4fb4ca75a5ead0404e4ef93fd6c497817ac5249060200160405180910390a1600a805462ffff001916620100001790555b60405160ff821681527f6e7963ce51f1ffc1517edcaee8433eb8ed64d0308ec21ebf72878e2af351c47c9060200160405180910390a15050600a80546001600160a01b03881663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909116179055505050505050565b611233611fea565b61123d6000612044565b565b600354610100900460ff16158015611259575060035460ff165b61129f5760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b600a5462010000900460ff166112f75760405162461bcd60e51b815260206004820152601560248201527f4e6f206e65656420746f206465616c206361726473000000000000000000000060448201526064016104fd565b60006113036001612094565b905060005b60035460ff63010000009091048116908216101561148a57600061132c6000611fc0565b905060005b600a5460ff600160b81b9091048116908216101561138d5761137982611374611371600b8560ff166006811061136957611369613562565b015487611f39565b90565b6120b6565b9150806113858161358e565b915050611331565b50600061139f61137160115485611f39565b905060006113c06113b1610f526120c2565b6113bb85856120b6565b611f04565b905060006113d76113d184866120b6565b836120b6565b90506040518060800160405280848152602001858152602001838152602001828152506014600060048860ff166006811061141457611414613562565b01546001600160a01b03168152602080820192909252604090810160002083518155918301516001830155820151600282015560609091015160039091015561147186610db061146487876120b6565b61146c6120c2565b6120d6565b95505050505080806114829061358e565b915050611308565b5061149481611e8b565b600a8054620100009215830262ff00001990911617908190550460ff16156114e2576040517f80da169e279fcbd7c5ad74cb7b48ae525264894f304b8f37ba31cdafc1ad516990600090a150565b6040517f041c1546c78d93bfc6a0f8d0453f6b6915e9510fc2ee719ece4c5f9288e869c790600090a15b50565b6000606080828080836115437f000000000000000000000000000000000000000000000000000000000000000060016120f9565b61156e7f000000000000000000000000000000000000000000000000000000000000000060026120f9565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b600354610100900460ff1680156115b2575060035460ff16155b6115f55760405162461bcd60e51b81526020600482015260146024820152732a34329033b0b6b29034b9903737ba1037b832b760611b60448201526064016104fd565b6115fd611fea565b611606816121a4565b6040516001600160a01b03821681527fc410a9fa377483ea13d470944175eba08264a469dff89ac963c0fd62105c423f9060200160405180910390a150565b600354606090610100900460ff16158015611662575060035460ff165b6116a85760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b6003546000906301000000900460ff1667ffffffffffffffff8111156116d0576116d0613625565b6040519080825280602002602001820160405280156116f9578160200160208202803683370190505b50905060005b60035460ff6301000000909104811690821610156117b657600060048260ff166006811061172f5761172f613562565b01546001600160a01b0316600081815260146020526040902060030154909150156117a3576001600160a01b03811660009081526014602052604090206003015461177990611fcd565b838360ff168151811061178e5761178e613562565b602002602001019060ff16908160ff16815250505b50806117ae8161358e565b9150506116ff565b50905090565b600354610100900460ff1680156117d6575060035460ff16155b6118195760405162461bcd60e51b81526020600482015260146024820152732a34329033b0b6b29034b9903737ba1037b832b760611b60448201526064016104fd565b6003546006630100000090910460ff16106118765760405162461bcd60e51b815260206004820152601f60248201527f5468652067616d652068617320656e6f75676820706c6179657273202838290060448201526064016104fd565b61187f336123c1565b6040513381527f31e760aa525306aba638a784082a013b6a1cc0a9a1789f3f22281c0453b10b1f906020015b60405180910390a1565b600354610100900460ff1680156118cf575060035460ff16155b6119125760405162461bcd60e51b81526020600482015260146024820152732a34329033b0b6b29034b9903737ba1037b832b760611b60448201526064016104fd565b6003546004630100000090910460ff1610156119705760405162461bcd60e51b815260206004820152601a60248201527f4e6f7420656e6f75676820706c6179657220746f20737461727400000000000060448201526064016104fd565b6003805461ffff191660011790819055600a80546004547fffffffffffffffff000000000000000000000000000000000000000000ffffff909116600160b81b63010000009485900460ff160276ffffffffffffffffffffffffffffffffffffffff0000001916176001600160a01b03909116929092029190911790556119f56124a9565b6040517f4cf2e2dcdeacb2322843921968cb0e6a97a686594cb0a4f29abb65a7ed65195290600090a1565b336000908152601260205260409020611a3a828483613689565b507f12112454f2a4b714dfd461924e3bf382cab83997982fd38506febcd6166b2dd0338383604051611a6e9392919061374a565b60405180910390a15050565b600354610100900460ff168015611a94575060035460ff16155b611ad75760405162461bcd60e51b81526020600482015260146024820152732a34329033b0b6b29034b9903737ba1037b832b760611b60448201526064016104fd565b611adf611fea565b611ae8336121a4565b6040513381527f282b6298c0318f5d7d7f2483a6823972bdbe9d2798bcfe461159151be7d7b969906020016118ab565b611b20611fea565b6001600160a01b038116611b9c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104fd565b61150c81612044565b60048160068110611bb557600080fd5b01546001600160a01b0316905081565b60038054600a80546201000062ffffff19918216179091551662010100179055611bf160046000613266565b6003805463ff00000019169055611c18611c136000546001600160a01b031690565b6123c1565b6040517ff0571e7ef816e3575e546f9e78033cc0535251179852a1efe493e98b7a672f8090600090a1565b6000611c70611c50612644565b8360405161190160f01b8152600281019290925260228201526042902090565b92915050565b6000806000611c85858561276f565b91509150611c92816127b4565b509392505050565b6060611ca683836128fe565b9392505050565b606060008260ff1667ffffffffffffffff811115611ccd57611ccd613625565b604051908082528060200260200182016040528015611cf6578160200160208202803683370190505b50905060008060038560ff1610611d2c57611d0f61296d565b915060068560ff1610611d2757611d24611e9e565b90505b611d37565b611d34611e9e565b90505b60005b8560ff16811015611e5e57600060038760ff1610611db25760068210611d86576000611d676005846135c6565b611d72906003613789565b9050611d7e8482611eaf565b915050611dda565b6000611d938360016137a0565b611d9e906003613789565b9050611d7e611dad8683612979565b61299d565b6000611dbf8360016137a0565b611dca906003613789565b9050611dd68482611eaf565b9150505b60076000611df083611deb84611fc0565b6129aa565b90506000611e26611e0e8360038054906101000a900460ff166129da565b83610d568560038054906101000a900460ff16611f8e565b905080888681518110611e3b57611e3b613562565b602002602001018181525050505050508080611e56906135d9565b915050611d3a565b5091949350505050565b600082611e7c57611e796000611fc0565b92505b611ca6838360ff1660016129fd565b6000611e9682612a97565b151592915050565b6000611eaa6000612afc565b905090565b600082611ec357611ec06000611fc0565b92505b611ca6838360ff166001612b31565b600082611ee657611ee36000611fc0565b92505b81611ef857611ef56000611fc0565b91505b611ca683836000612b85565b6000611ca68383612bd9565b6000611f1d848484612c0b565b949350505050565b6000611ca6611f3484846129aa565b612d6f565b600082611f4d57611f4a6000611fc0565b92505b611ca6838360ff166001612d7c565b600082611f7057611f6d6000611fc0565b92505b81611f8257611f7f6000611fc0565b91505b611ca683836000612d7c565b600082611fa257611f9f6000611fc0565b92505b611ca6838360ff166001612dd0565b6000611ca6611f348484612e24565b6000611c70826000612e54565b6000611c7082612a97565b6003805460ff1916905561123d611bc5565b6000546001600160a01b0316331461123d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104fd565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600081156120a957611c70611f346001611fc0565b611c70611f346000611fc0565b6000611ca68383612ecd565b600a54600090611eaa9060ff1660056137b3565b6000826120ea576120e76000611fc0565b92505b611ca6838360ff166001612eff565b606060ff83146121135761210c83612f53565b9050611c70565b81805461211f90613528565b80601f016020809104026020016040519081016040528092919081815260200182805461214b90613528565b80156121985780601f1061216d57610100808354040283529160200191612198565b820191906000526020600020905b81548152906001019060200180831161217b57829003601f168201915b50505050509050611c70565b806000805b60035460ff63010000009091048116908216101561220857826001600160a01b031660048260ff16600681106121e1576121e1613562565b01546001600160a01b0316036121f657600191505b806122008161358e565b9150506121a9565b50806122565760405162461bcd60e51b815260206004820152601960248201527f5468697320706c6179657220646f65736e27742065786973740000000000000060448201526064016104fd565b6000805b600681101561238857846001600160a01b03166004826006811061228057612280613562565b01546001600160a01b03160361231557600481600681106122a3576122a3613562565b0180546001600160a01b031916905560046122bf8260016137a0565b600681106122cf576122cf613562565b01546001600160a01b0316600482600681106122ed576122ed613562565b0180546001600160a01b0319166001600160a01b039290921691909117905560019150612376565b81156123765760046123288260016137a0565b6006811061233857612338613562565b01546001600160a01b03166004826006811061235657612356613562565b0180546001600160a01b0319166001600160a01b03929092169190911790555b6123816001826137a0565b905061225a565b50600380546301000000900460ff1690806123a283613608565b91906101000a81548160ff021916908360ff1602179055505050505050565b80600160005b60035460ff63010000009091048116908216101561242657826001600160a01b031660048260ff16600681106123ff576123ff613562565b01546001600160a01b03160361241457600091505b8061241e8161358e565b9150506123c7565b508061243157600080fd5b60035483906004906301000000900460ff166006811061245357612453613562565b0180546001600160a01b0319166001600160a01b0392909216919091179055600380546301000000900460ff16908061248b8361358e565b91906101000a81548160ff021916908360ff16021790555050505050565b60035462010000900460ff166125015760405162461bcd60e51b815260206004820152601560248201527f4e6f206e65656420746f206465616c206361726473000000000000000000000060448201526064016104fd565b6002600061250e82611cad565b9050600460038054906101000a900460ff1660ff16111561258357600061256c610cdc8360008151811061254457612544613562565b60200260200101518460018151811061255f5761255f613562565b6020026020010151611f5c565b905080156125815761257c6124a9565b505050565b505b60005b60035460ff630100000090910481169082161015612633576000805b60028160ff1610156125e8576125d4848260ff16815181106125c6576125c6613562565b602002602001015184612f92565b9150806125e08161358e565b9150506125a2565b50806013600060048560ff166006811061260457612604613562565b01546001600160a01b03168152602081019190915260400160002055508061262b8161358e565b915050612586565b50506003805462ff00001916905550565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561269d57507f000000000000000000000000000000000000000000000000000000000000000046145b156126c757507f000000000000000000000000000000000000000000000000000000000000000090565b611eaa604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60008082516041036127a55760208301516040840151606085015160001a61279987828585612fb5565b945094505050506127ad565b506000905060025b9250929050565b60008160048111156127c8576127c86135f2565b036127d05750565b60018160048111156127e4576127e46135f2565b036128315760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016104fd565b6002816004811115612845576128456135f2565b036128925760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016104fd565b60038160048111156128a6576128a66135f2565b0361150c5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016104fd565b60405163d6ad57cd60e01b81526004810183905260248101829052606090605d9063d6ad57cd90604401600060405180830381865afa158015612945573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ca691908101906137cc565b6000611eaa6001612afc565b60008261298d5761298a6000613079565b92505b611ca6838361ffff166001612b31565b6000611c70826000613086565b6000826129be576129bb6000611fc0565b92505b816129d0576129cd6000611fc0565b91505b611ca683836130c2565b6000826129ee576129eb6000611fc0565b92505b611ca6838360ff166001612b85565b6000808215612a115750600160f81b612a15565b5060005b604051631f31e28560e11b815260048101869052602481018590526001600160f81b031982166044820152605d90633e63c50a906064015b602060405180830381865afa158015612a6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8e9190613879565b95945050505050565b6040516301693b9160e61b815260048101829052600090605d90635a4ee440906024015b602060405180830381865afa158015612ad8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c709190613879565b60405163480694a760e11b81526001600160f81b031960f883901b166004820152600090605d9063900d294e90602401612abb565b6000808215612b455750600160f81b612b49565b5060005b604051633bb860cf60e21b815260048101869052602481018590526001600160f81b031982166044820152605d9063eee1833c90606401612a4d565b6000808215612b995750600160f81b612b9d565b5060005b604051639675211f60e01b815260048101869052602481018590526001600160f81b031982166044820152605d90639675211f90606401612a4d565b600082612bed57612bea6000611fc0565b92505b81612bff57612bfc6000611fc0565b91505b611ca683836000612dd0565b604051638c14cc2160e01b81526004810183905260248101829052600060448201819052908190605d90638c14cc2190606401602060405180830381865afa158015612c5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c7f9190613879565b60405163816d57d360e01b81526004810187905260248101829052600060448201819052919250605d9063816d57d390606401602060405180830381865afa158015612ccf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf39190613879565b60405163f953e42760e01b8152600481018290526024810186905260006044820152909150605d9063f953e42790606401602060405180830381865afa158015612d41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d659190613879565b9695505050505050565b6000611c70826000612f92565b6000808215612d905750600160f81b612d94565b5060005b604051630d7c62eb60e31b815260048101869052602481018590526001600160f81b031982166044820152605d90636be3175890606401612a4d565b6000808215612de45750600160f81b612de8565b5060005b604051638c14cc2160e01b815260048101869052602481018590526001600160f81b031982166044820152605d90638c14cc2190606401612a4d565b600082612e3857612e356000611fc0565b92505b81612e4a57612e476000611fc0565b91505b611ca68383613137565b604051631ce2e8d760e31b8152600481018390526001600160f81b031960f883901b166024820152600090605d9063e71746b8906044015b602060405180830381865afa158015612ea9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca69190613879565b600082612ee157612ede6000611fc0565b92505b81612ef357612ef06000611fc0565b91505b611ca68383600061316f565b6000808215612f135750600160f81b612f17565b5060005b6040516334a6d7b960e11b815260048101869052602481018590526001600160f81b031982166044820152605d9063694daf7290606401612a4d565b60606000612f60836131c3565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600082612fa657612fa36000611fc0565b92505b611ca6838360ff1660016131eb565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612fec5750600090506003613070565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613040573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661306957600060019250925050613070565b9150600090505b94509492505050565b6000611c70826001612e54565b60405163025f346960e51b8152600481018390526001600160f81b031960f883901b166024820152600090605d90634be68d2090604401612e8c565b604051630ccd46b160e31b81526004810183905260248101829052600060448201819052908190605d9063666a3588906064015b602060405180830381865afa158015613113573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1d9190613879565b604051633b1015f760e21b81526004810183905260248101829052600060448201819052908190605d9063ec4057dc906064016130f6565b60008082156131835750600160f81b613187565b5060005b60405163f953e42760e01b815260048101869052602481018590526001600160f81b031982166044820152605d9063f953e42790606401612a4d565b600060ff8216601f811115611c7057604051632cd44ac360e21b815260040160405180910390fd5b60008082156131ff5750600160f81b613203565b5060005b604051631927108160e01b815260048101869052602481018590526001600160f81b031982166044820152605d90631927108190606401612a4d565b60405180606001604052806003905b606081526020019060019003908161324e5790505090565b5061150c9060068101905b808211156132855760008155600101613271565b5090565b60006020828403121561329b57600080fd5b81356001600160a01b0381168114611ca657600080fd5b60005b838110156132cd5781810151838201526020016132b5565b50506000910152565b600081518084526132ee8160208601602086016132b2565b601f01601f19169290920160200192915050565b602081526000611ca660208301846132d6565b60008083601f84011261332757600080fd5b50813567ffffffffffffffff81111561333f57600080fd5b6020830191508360208285010111156127ad57600080fd5b60008060006040848603121561336c57600080fd5b83359250602084013567ffffffffffffffff81111561338a57600080fd5b61339686828701613315565b9497909650939450505050565b60208082526000906080830183820185845b60038110156133e457601f198785030183526133d28483516132d6565b935091840191908401906001016133b5565b50919695505050505050565b60ff60f81b881681526000602060e08184015261341060e084018a6132d6565b8381036040850152613422818a6132d6565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101561347457835183529284019291840191600101613458565b50909c9b505050505050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156134c157835160ff16835292840192918401916001016134a2565b50909695505050505050565b600080602083850312156134e057600080fd5b823567ffffffffffffffff8111156134f757600080fd5b61350385828601613315565b90969095509350505050565b60006020828403121561352157600080fd5b5035919050565b600181811c9082168061353c57607f821691505b60208210810361355c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff81036135a4576135a4613578565b60010192915050565b60ff8181168382160190811115611c7057611c70613578565b81810381811115611c7057611c70613578565b6000600182016135eb576135eb613578565b5060010190565b634e487b7160e01b600052602160045260246000fd5b600060ff82168061361b5761361b613578565b6000190192915050565b634e487b7160e01b600052604160045260246000fd5b601f82111561257c57600081815260208120601f850160051c810160208610156136625750805b601f850160051c820191505b818110156136815782815560010161366e565b505050505050565b67ffffffffffffffff8311156136a1576136a1613625565b6136b5836136af8354613528565b8361363b565b6000601f8411600181146136e957600085156136d15750838201355b600019600387901b1c1916600186901b178355613743565b600083815260209020601f19861690835b8281101561371a57868501358255602094850194600190920191016136fa565b50868210156137375760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b6001600160a01b038416815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b8082028115828204841417611c7057611c70613578565b80820180821115611c7057611c70613578565b60ff8281168282160390811115611c7057611c70613578565b6000602082840312156137de57600080fd5b815167ffffffffffffffff808211156137f657600080fd5b818401915084601f83011261380a57600080fd5b81518181111561381c5761381c613625565b604051601f8201601f19908116603f0116810190838211818310171561384457613844613625565b8160405282815287602084870101111561385d57600080fd5b61386e8360208301602088016132b2565b979650505050505050565b60006020828403121561388b57600080fd5b505191905056fea164736f6c6343000813000a", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c806384b0196e11610104578063be9a6555116100a2578063e2e78fb111610071578063e2e78fb1146103bc578063f2fde38b146103d6578063f71d96cb146103e9578063fcfff16f146103fc57600080fd5b8063be9a65551461038c578063c47f002714610394578063cdb34cc9146103a7578063d66d9e19146103b457600080fd5b806396c55175116100de57806396c5517514610349578063b0df9e531461035c578063b688a36314610371578063be075e151461037957600080fd5b806384b0196e1461030157806385f07bbe1461031c5780638da5cb5b1461032457600080fd5b8063553df021116101715780636f4bda171161014b5780636f4bda17146102cb578063715018a6146102df57806383b2b626146102e7578063847fde93146102ef57600080fd5b8063553df021146102a15780636094ef6d146102ab5780636e8c2caf146102be57600080fd5b806326cd716d116101ad57806326cd716d146102365780633cca779b146102565780634411b3eb14610278578063535b047e1461028e57600080fd5b806301984892146101d4578063160808b9146101fd57806320b5039014610223575b600080fd5b6101e76101e2366004613289565b610404565b6040516101f49190613302565b60405180910390f35b600a5461021190600160b81b900460ff1681565b60405160ff90911681526020016101f4565b6101e7610231366004613357565b61049e565b610249610244366004613357565b6106fb565b6040516101f491906133a3565b60035461026890610100900460ff1681565b60405190151581526020016101f4565b610280600681565b6040519081526020016101f4565b6003546102689062010000900460ff1681565b6102a96109b2565b005b6102a96102b9366004613289565b610b73565b6003546102689060ff1681565b600354610211906301000000900460ff1681565b6102a961122b565b6102a961123f565b600a5461021190610100900460ff1681565b61030961150f565b6040516101f497969594939291906133f0565b610280600481565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016101f4565b6102a9610357366004613289565b611598565b610364611645565b6040516101f49190613486565b6102a96117bc565b600a546102689062010000900460ff1681565b6102a96118b5565b6102a96103a23660046134cd565b611a20565b600a546102119060ff1681565b6102a9611a7a565b600a5461033190630100000090046001600160a01b031681565b6102a96103e4366004613289565b611b18565b6103316103f736600461350f565b611ba5565b6102a9611bc5565b6012602052600090815260409020805461041d90613528565b80601f016020809104026020016040519081016040528092919081815260200182805461044990613528565b80156104965780601f1061046b57610100808354040283529160200191610496565b820191906000526020600020905b81548152906001019060200180831161047957829003601f168201915b505050505081565b600354606090610100900460ff161580156104bb575060035460ff165b6105065760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064015b60405180910390fd5b336000805b60035460ff63010000009091048116908216101561056a57826001600160a01b031660048260ff166006811061054357610543613562565b01546001600160a01b03160361055857600191505b806105628161358e565b91505061050b565b50806105b85760405162461bcd60e51b815260206004820152601960248201527f5468697320706c6179657220646f65736e27742065786973740000000000000060448201526064016104fd565b8585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080517f051d137ae0e1fae6e3b6559fed4442b35a85a9a39789838ad5c9ea05e7da2dce6020820152908101879052909350610644925060600190505b60405160208183030381529060405280519060200120611c43565b905060006106528284611c76565b90506001600160a01b03811633146106d25760405162461bcd60e51b815260206004820152603160248201527f454950373132207369676e657220616e64207472616e73616374696f6e20736960448201527f676e657220646f206e6f74206d6174636800000000000000000000000000000060648201526084016104fd565b336000818152601360205260409020546106ec908c611c9a565b9b9a5050505050505050505050565b61070361323f565b600354610100900460ff1615801561071d575060035460ff165b6107635760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b336000805b60035460ff6301000000909104811690821610156107c757826001600160a01b031660048260ff16600681106107a0576107a0613562565b01546001600160a01b0316036107b557600191505b806107bf8161358e565b915050610768565b50806108155760405162461bcd60e51b815260206004820152601960248201527f5468697320706c6179657220646f65736e27742065786973740000000000000060448201526064016104fd565b8585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080517f051d137ae0e1fae6e3b6559fed4442b35a85a9a39789838ad5c9ea05e7da2dce602082015290810187905290935061088a92506060019050610629565b905060006108988284611c76565b90506001600160a01b03811633146109185760405162461bcd60e51b815260206004820152603160248201527f454950373132207369676e657220616e64207472616e73616374696f6e20736960448201527f676e657220646f206e6f74206d6174636800000000000000000000000000000060648201526084016104fd565b33600081815260146020526040812060010154610935908d611c9a565b6001600160a01b0383166000908152601460205260408120549192509061095c908e611c9a565b6001600160a01b03841660009081526014602052604081206002015491925090610986908f611c9a565b60408051606081018252948552602085019390935291830191909152509b9a5050505050505050505050565b600354610100900460ff161580156109cc575060035460ff165b610a125760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b600a5462010000900460ff16610a6a5760405162461bcd60e51b815260206004820152601560248201527f4e6f206e65656420746f206465616c206361726473000000000000000000000060448201526064016104fd565b600a5462010000900460ff16610ac25760405162461bcd60e51b815260206004820152601e60248201527f5468657265206973206e6f206e65656420746f206465616c206361726473000060448201526064016104fd565b600a54600090610ae690610ae190600160b81b900460ff1660016135ad565b611cad565b905060005b8151811015610b6f5760018251610b0291906135c6565b8103610b2d57818181518110610b1a57610b1a613562565b6020026020010151601181905550610b5d565b818181518110610b3f57610b3f613562565b6020026020010151600b8260068110610b5a57610b5a613562565b01555b80610b67816135d9565b915050610aeb565b5050565b600354610100900460ff16158015610b8d575060035460ff165b610bd35760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b600354600a54630100000090910460ff90811661010090920416108015610c035750600a5462010000900460ff16155b610c4f5760405162461bcd60e51b815260206004820152601260248201527f4e65656420746f206465616c206361726473000000000000000000000000000060448201526064016104fd565b600a543390630100000090046001600160a01b03168114610cb25760405162461bcd60e51b815260206004820152601360248201527f49742773206e6f7420796f7572207475726e210000000000000000000000000060448201526064016104fd565b6001600160a01b038216600090815260146020526040812060030154610ce191610cdc9190611e68565b611e8b565b610cea57600080fd5b6000610cfe610cf7611e9e565b6005611eaf565b6001600160a01b03841660009081526014602052604081206003015491925090610d5b90610d2d908490611ed2565b6001600160a01b0386166000908152601460205260409020600301548490610d56908290611f04565b611f10565b6001600160a01b03851660009081526014602052604081206001015491925090610db590610d899083611e68565b6001600160a01b038716600090815260146020526040902060010154610db0908590611ed2565b611f25565b6001600160a01b03861660009081526014602052604081205491925090610e0890610de1906001611f39565b6001600160a01b038816600090815260146020526040902060010154610db0908690611f5c565b9050610e6282610e41601460008a6001600160a01b03166001600160a01b03168152602001908152602001600020600101546001611f8e565b6001600160a01b038916600090815260146020526040902060010154611f10565b6001600160a01b038716600090815260146020526040902060018082019290925554610eb1918391610e9391611f8e565b6001600160a01b038916600090815260146020526040902054611f10565b6001600160a01b038716600090815260146020526040902055610efe610ed78284611fb1565b6001600160a01b038816600090815260146020526040902060020154610d56816001611f8e565b6001600160a01b0387166000908152601460205260409020600281019190915560030154610f2d906001611f8e565b6001600160a01b038716600090815260146020526040812060030191909155610f5a60025b60ff16611fc0565b9050610f7083610f6a6000610f52565b83611f10565b9050610f8082610f6a6001610f52565b600a805491925061010090910460ff16906001610f9c8361358e565b91906101000a81548160ff021916908360ff160217905550506000610fc082611fcd565b905060001960ff82160161102e577f95fb52f15fa9d8267b16e5d9961650d3fa62add7f9f5bee09c1c5b0f6dafde74604051611014906020808252600490820152633137b6b160e11b604082015260600190565b60405180910390a1611024611fd8565b5050505050505050565b60ff81166110b457600a8054600160b81b900460ff1690601761105083613608565b91906101000a81548160ff021916908360ff16021790555050600a60179054906101000a900460ff1660ff166000036110b4576040517f34c3cf60e34f02711f998799056fda338f934c6d952eb04dbee6616bce67d34d90600090a1611024611fd8565b600354600a54630100000090910460ff90811661010090920416036111b857600a805460ff169060006110e68361358e565b82546101009290920a60ff818102199093169183160217909155600a5416600403905061116c577f95fb52f15fa9d8267b16e5d9961650d3fa62add7f9f5bee09c1c5b0f6dafde746040516110149060208082526005908201527f6361726473000000000000000000000000000000000000000000000000000000604082015260600190565b600a5460405160ff90911681527fc10f7f17f63e8d93f47783cd5e4fb4ca75a5ead0404e4ef93fd6c497817ac5249060200160405180910390a1600a805462ffff001916620100001790555b60405160ff821681527f6e7963ce51f1ffc1517edcaee8433eb8ed64d0308ec21ebf72878e2af351c47c9060200160405180910390a15050600a80546001600160a01b03881663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909116179055505050505050565b611233611fea565b61123d6000612044565b565b600354610100900460ff16158015611259575060035460ff165b61129f5760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b600a5462010000900460ff166112f75760405162461bcd60e51b815260206004820152601560248201527f4e6f206e65656420746f206465616c206361726473000000000000000000000060448201526064016104fd565b60006113036001612094565b905060005b60035460ff63010000009091048116908216101561148a57600061132c6000611fc0565b905060005b600a5460ff600160b81b9091048116908216101561138d5761137982611374611371600b8560ff166006811061136957611369613562565b015487611f39565b90565b6120b6565b9150806113858161358e565b915050611331565b50600061139f61137160115485611f39565b905060006113c06113b1610f526120c2565b6113bb85856120b6565b611f04565b905060006113d76113d184866120b6565b836120b6565b90506040518060800160405280848152602001858152602001838152602001828152506014600060048860ff166006811061141457611414613562565b01546001600160a01b03168152602080820192909252604090810160002083518155918301516001830155820151600282015560609091015160039091015561147186610db061146487876120b6565b61146c6120c2565b6120d6565b95505050505080806114829061358e565b915050611308565b5061149481611e8b565b600a8054620100009215830262ff00001990911617908190550460ff16156114e2576040517f80da169e279fcbd7c5ad74cb7b48ae525264894f304b8f37ba31cdafc1ad516990600090a150565b6040517f041c1546c78d93bfc6a0f8d0453f6b6915e9510fc2ee719ece4c5f9288e869c790600090a15b50565b6000606080828080836115437f000000000000000000000000000000000000000000000000000000000000000060016120f9565b61156e7f000000000000000000000000000000000000000000000000000000000000000060026120f9565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b600354610100900460ff1680156115b2575060035460ff16155b6115f55760405162461bcd60e51b81526020600482015260146024820152732a34329033b0b6b29034b9903737ba1037b832b760611b60448201526064016104fd565b6115fd611fea565b611606816121a4565b6040516001600160a01b03821681527fc410a9fa377483ea13d470944175eba08264a469dff89ac963c0fd62105c423f9060200160405180910390a150565b600354606090610100900460ff16158015611662575060035460ff165b6116a85760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b6003546000906301000000900460ff1667ffffffffffffffff8111156116d0576116d0613625565b6040519080825280602002602001820160405280156116f9578160200160208202803683370190505b50905060005b60035460ff6301000000909104811690821610156117b657600060048260ff166006811061172f5761172f613562565b01546001600160a01b0316600081815260146020526040902060030154909150156117a3576001600160a01b03811660009081526014602052604090206003015461177990611fcd565b838360ff168151811061178e5761178e613562565b602002602001019060ff16908160ff16815250505b50806117ae8161358e565b9150506116ff565b50905090565b600354610100900460ff1680156117d6575060035460ff16155b6118195760405162461bcd60e51b81526020600482015260146024820152732a34329033b0b6b29034b9903737ba1037b832b760611b60448201526064016104fd565b6003546006630100000090910460ff16106118765760405162461bcd60e51b815260206004820152601f60248201527f5468652067616d652068617320656e6f75676820706c6179657273202838290060448201526064016104fd565b61187f336123c1565b6040513381527f31e760aa525306aba638a784082a013b6a1cc0a9a1789f3f22281c0453b10b1f906020015b60405180910390a1565b600354610100900460ff1680156118cf575060035460ff16155b6119125760405162461bcd60e51b81526020600482015260146024820152732a34329033b0b6b29034b9903737ba1037b832b760611b60448201526064016104fd565b6003546004630100000090910460ff1610156119705760405162461bcd60e51b815260206004820152601a60248201527f4e6f7420656e6f75676820706c6179657220746f20737461727400000000000060448201526064016104fd565b6003805461ffff191660011790819055600a80546004547fffffffffffffffff000000000000000000000000000000000000000000ffffff909116600160b81b63010000009485900460ff160276ffffffffffffffffffffffffffffffffffffffff0000001916176001600160a01b03909116929092029190911790556119f56124a9565b6040517f4cf2e2dcdeacb2322843921968cb0e6a97a686594cb0a4f29abb65a7ed65195290600090a1565b336000908152601260205260409020611a3a828483613689565b507f12112454f2a4b714dfd461924e3bf382cab83997982fd38506febcd6166b2dd0338383604051611a6e9392919061374a565b60405180910390a15050565b600354610100900460ff168015611a94575060035460ff16155b611ad75760405162461bcd60e51b81526020600482015260146024820152732a34329033b0b6b29034b9903737ba1037b832b760611b60448201526064016104fd565b611adf611fea565b611ae8336121a4565b6040513381527f282b6298c0318f5d7d7f2483a6823972bdbe9d2798bcfe461159151be7d7b969906020016118ab565b611b20611fea565b6001600160a01b038116611b9c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104fd565b61150c81612044565b60048160068110611bb557600080fd5b01546001600160a01b0316905081565b60038054600a80546201000062ffffff19918216179091551662010100179055611bf160046000613266565b6003805463ff00000019169055611c18611c136000546001600160a01b031690565b6123c1565b6040517ff0571e7ef816e3575e546f9e78033cc0535251179852a1efe493e98b7a672f8090600090a1565b6000611c70611c50612644565b8360405161190160f01b8152600281019290925260228201526042902090565b92915050565b6000806000611c85858561276f565b91509150611c92816127b4565b509392505050565b6060611ca683836128fe565b9392505050565b606060008260ff1667ffffffffffffffff811115611ccd57611ccd613625565b604051908082528060200260200182016040528015611cf6578160200160208202803683370190505b50905060008060038560ff1610611d2c57611d0f61296d565b915060068560ff1610611d2757611d24611e9e565b90505b611d37565b611d34611e9e565b90505b60005b8560ff16811015611e5e57600060038760ff1610611db25760068210611d86576000611d676005846135c6565b611d72906003613789565b9050611d7e8482611eaf565b915050611dda565b6000611d938360016137a0565b611d9e906003613789565b9050611d7e611dad8683612979565b61299d565b6000611dbf8360016137a0565b611dca906003613789565b9050611dd68482611eaf565b9150505b60076000611df083611deb84611fc0565b6129aa565b90506000611e26611e0e8360038054906101000a900460ff166129da565b83610d568560038054906101000a900460ff16611f8e565b905080888681518110611e3b57611e3b613562565b602002602001018181525050505050508080611e56906135d9565b915050611d3a565b5091949350505050565b600082611e7c57611e796000611fc0565b92505b611ca6838360ff1660016129fd565b6000611e9682612a97565b151592915050565b6000611eaa6000612afc565b905090565b600082611ec357611ec06000611fc0565b92505b611ca6838360ff166001612b31565b600082611ee657611ee36000611fc0565b92505b81611ef857611ef56000611fc0565b91505b611ca683836000612b85565b6000611ca68383612bd9565b6000611f1d848484612c0b565b949350505050565b6000611ca6611f3484846129aa565b612d6f565b600082611f4d57611f4a6000611fc0565b92505b611ca6838360ff166001612d7c565b600082611f7057611f6d6000611fc0565b92505b81611f8257611f7f6000611fc0565b91505b611ca683836000612d7c565b600082611fa257611f9f6000611fc0565b92505b611ca6838360ff166001612dd0565b6000611ca6611f348484612e24565b6000611c70826000612e54565b6000611c7082612a97565b6003805460ff1916905561123d611bc5565b6000546001600160a01b0316331461123d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104fd565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600081156120a957611c70611f346001611fc0565b611c70611f346000611fc0565b6000611ca68383612ecd565b600a54600090611eaa9060ff1660056137b3565b6000826120ea576120e76000611fc0565b92505b611ca6838360ff166001612eff565b606060ff83146121135761210c83612f53565b9050611c70565b81805461211f90613528565b80601f016020809104026020016040519081016040528092919081815260200182805461214b90613528565b80156121985780601f1061216d57610100808354040283529160200191612198565b820191906000526020600020905b81548152906001019060200180831161217b57829003601f168201915b50505050509050611c70565b806000805b60035460ff63010000009091048116908216101561220857826001600160a01b031660048260ff16600681106121e1576121e1613562565b01546001600160a01b0316036121f657600191505b806122008161358e565b9150506121a9565b50806122565760405162461bcd60e51b815260206004820152601960248201527f5468697320706c6179657220646f65736e27742065786973740000000000000060448201526064016104fd565b6000805b600681101561238857846001600160a01b03166004826006811061228057612280613562565b01546001600160a01b03160361231557600481600681106122a3576122a3613562565b0180546001600160a01b031916905560046122bf8260016137a0565b600681106122cf576122cf613562565b01546001600160a01b0316600482600681106122ed576122ed613562565b0180546001600160a01b0319166001600160a01b039290921691909117905560019150612376565b81156123765760046123288260016137a0565b6006811061233857612338613562565b01546001600160a01b03166004826006811061235657612356613562565b0180546001600160a01b0319166001600160a01b03929092169190911790555b6123816001826137a0565b905061225a565b50600380546301000000900460ff1690806123a283613608565b91906101000a81548160ff021916908360ff1602179055505050505050565b80600160005b60035460ff63010000009091048116908216101561242657826001600160a01b031660048260ff16600681106123ff576123ff613562565b01546001600160a01b03160361241457600091505b8061241e8161358e565b9150506123c7565b508061243157600080fd5b60035483906004906301000000900460ff166006811061245357612453613562565b0180546001600160a01b0319166001600160a01b0392909216919091179055600380546301000000900460ff16908061248b8361358e565b91906101000a81548160ff021916908360ff16021790555050505050565b60035462010000900460ff166125015760405162461bcd60e51b815260206004820152601560248201527f4e6f206e65656420746f206465616c206361726473000000000000000000000060448201526064016104fd565b6002600061250e82611cad565b9050600460038054906101000a900460ff1660ff16111561258357600061256c610cdc8360008151811061254457612544613562565b60200260200101518460018151811061255f5761255f613562565b6020026020010151611f5c565b905080156125815761257c6124a9565b505050565b505b60005b60035460ff630100000090910481169082161015612633576000805b60028160ff1610156125e8576125d4848260ff16815181106125c6576125c6613562565b602002602001015184612f92565b9150806125e08161358e565b9150506125a2565b50806013600060048560ff166006811061260457612604613562565b01546001600160a01b03168152602081019190915260400160002055508061262b8161358e565b915050612586565b50506003805462ff00001916905550565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561269d57507f000000000000000000000000000000000000000000000000000000000000000046145b156126c757507f000000000000000000000000000000000000000000000000000000000000000090565b611eaa604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60008082516041036127a55760208301516040840151606085015160001a61279987828585612fb5565b945094505050506127ad565b506000905060025b9250929050565b60008160048111156127c8576127c86135f2565b036127d05750565b60018160048111156127e4576127e46135f2565b036128315760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016104fd565b6002816004811115612845576128456135f2565b036128925760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016104fd565b60038160048111156128a6576128a66135f2565b0361150c5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016104fd565b60405163d6ad57cd60e01b81526004810183905260248101829052606090605d9063d6ad57cd90604401600060405180830381865afa158015612945573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ca691908101906137cc565b6000611eaa6001612afc565b60008261298d5761298a6000613079565b92505b611ca6838361ffff166001612b31565b6000611c70826000613086565b6000826129be576129bb6000611fc0565b92505b816129d0576129cd6000611fc0565b91505b611ca683836130c2565b6000826129ee576129eb6000611fc0565b92505b611ca6838360ff166001612b85565b6000808215612a115750600160f81b612a15565b5060005b604051631f31e28560e11b815260048101869052602481018590526001600160f81b031982166044820152605d90633e63c50a906064015b602060405180830381865afa158015612a6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8e9190613879565b95945050505050565b6040516301693b9160e61b815260048101829052600090605d90635a4ee440906024015b602060405180830381865afa158015612ad8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c709190613879565b60405163480694a760e11b81526001600160f81b031960f883901b166004820152600090605d9063900d294e90602401612abb565b6000808215612b455750600160f81b612b49565b5060005b604051633bb860cf60e21b815260048101869052602481018590526001600160f81b031982166044820152605d9063eee1833c90606401612a4d565b6000808215612b995750600160f81b612b9d565b5060005b604051639675211f60e01b815260048101869052602481018590526001600160f81b031982166044820152605d90639675211f90606401612a4d565b600082612bed57612bea6000611fc0565b92505b81612bff57612bfc6000611fc0565b91505b611ca683836000612dd0565b604051638c14cc2160e01b81526004810183905260248101829052600060448201819052908190605d90638c14cc2190606401602060405180830381865afa158015612c5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c7f9190613879565b60405163816d57d360e01b81526004810187905260248101829052600060448201819052919250605d9063816d57d390606401602060405180830381865afa158015612ccf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf39190613879565b60405163f953e42760e01b8152600481018290526024810186905260006044820152909150605d9063f953e42790606401602060405180830381865afa158015612d41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d659190613879565b9695505050505050565b6000611c70826000612f92565b6000808215612d905750600160f81b612d94565b5060005b604051630d7c62eb60e31b815260048101869052602481018590526001600160f81b031982166044820152605d90636be3175890606401612a4d565b6000808215612de45750600160f81b612de8565b5060005b604051638c14cc2160e01b815260048101869052602481018590526001600160f81b031982166044820152605d90638c14cc2190606401612a4d565b600082612e3857612e356000611fc0565b92505b81612e4a57612e476000611fc0565b91505b611ca68383613137565b604051631ce2e8d760e31b8152600481018390526001600160f81b031960f883901b166024820152600090605d9063e71746b8906044015b602060405180830381865afa158015612ea9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca69190613879565b600082612ee157612ede6000611fc0565b92505b81612ef357612ef06000611fc0565b91505b611ca68383600061316f565b6000808215612f135750600160f81b612f17565b5060005b6040516334a6d7b960e11b815260048101869052602481018590526001600160f81b031982166044820152605d9063694daf7290606401612a4d565b60606000612f60836131c3565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600082612fa657612fa36000611fc0565b92505b611ca6838360ff1660016131eb565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612fec5750600090506003613070565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613040573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661306957600060019250925050613070565b9150600090505b94509492505050565b6000611c70826001612e54565b60405163025f346960e51b8152600481018390526001600160f81b031960f883901b166024820152600090605d90634be68d2090604401612e8c565b604051630ccd46b160e31b81526004810183905260248101829052600060448201819052908190605d9063666a3588906064015b602060405180830381865afa158015613113573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1d9190613879565b604051633b1015f760e21b81526004810183905260248101829052600060448201819052908190605d9063ec4057dc906064016130f6565b60008082156131835750600160f81b613187565b5060005b60405163f953e42760e01b815260048101869052602481018590526001600160f81b031982166044820152605d9063f953e42790606401612a4d565b600060ff8216601f811115611c7057604051632cd44ac360e21b815260040160405180910390fd5b60008082156131ff5750600160f81b613203565b5060005b604051631927108160e01b815260048101869052602481018590526001600160f81b031982166044820152605d90631927108190606401612a4d565b60405180606001604052806003905b606081526020019060019003908161324e5790505090565b5061150c9060068101905b808211156132855760008155600101613271565b5090565b60006020828403121561329b57600080fd5b81356001600160a01b0381168114611ca657600080fd5b60005b838110156132cd5781810151838201526020016132b5565b50506000910152565b600081518084526132ee8160208601602086016132b2565b601f01601f19169290920160200192915050565b602081526000611ca660208301846132d6565b60008083601f84011261332757600080fd5b50813567ffffffffffffffff81111561333f57600080fd5b6020830191508360208285010111156127ad57600080fd5b60008060006040848603121561336c57600080fd5b83359250602084013567ffffffffffffffff81111561338a57600080fd5b61339686828701613315565b9497909650939450505050565b60208082526000906080830183820185845b60038110156133e457601f198785030183526133d28483516132d6565b935091840191908401906001016133b5565b50919695505050505050565b60ff60f81b881681526000602060e08184015261341060e084018a6132d6565b8381036040850152613422818a6132d6565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101561347457835183529284019291840191600101613458565b50909c9b505050505050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156134c157835160ff16835292840192918401916001016134a2565b50909695505050505050565b600080602083850312156134e057600080fd5b823567ffffffffffffffff8111156134f757600080fd5b61350385828601613315565b90969095509350505050565b60006020828403121561352157600080fd5b5035919050565b600181811c9082168061353c57607f821691505b60208210810361355c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff81036135a4576135a4613578565b60010192915050565b60ff8181168382160190811115611c7057611c70613578565b81810381811115611c7057611c70613578565b6000600182016135eb576135eb613578565b5060010190565b634e487b7160e01b600052602160045260246000fd5b600060ff82168061361b5761361b613578565b6000190192915050565b634e487b7160e01b600052604160045260246000fd5b601f82111561257c57600081815260208120601f850160051c810160208610156136625750805b601f850160051c820191505b818110156136815782815560010161366e565b505050505050565b67ffffffffffffffff8311156136a1576136a1613625565b6136b5836136af8354613528565b8361363b565b6000601f8411600181146136e957600085156136d15750838201355b600019600387901b1c1916600186901b178355613743565b600083815260209020601f19861690835b8281101561371a57868501358255602094850194600190920191016136fa565b50868210156137375760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b6001600160a01b038416815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b8082028115828204841417611c7057611c70613578565b80820180821115611c7057611c70613578565b60ff8281168282160390811115611c7057611c70613578565b6000602082840312156137de57600080fd5b815167ffffffffffffffff808211156137f657600080fd5b818401915084601f83011261380a57600080fd5b81518181111561381c5761381c613625565b604051601f8201601f19908116603f0116810190838211818310171561384457613844613625565b8160405282815287602084870101111561385d57600080fd5b61386e8360208301602088016132b2565b979650505050505050565b60006020828403121561388b57600080fd5b505191905056fea164736f6c6343000813000a", + "bytecode": "0x6101606040523480156200001257600080fd5b506040518060400160405280601381526020017f417574686f72697a6174696f6e20746f6b656e00000000000000000000000000815250604051806040016040528060018152602001603160f81b81525081816200007f620000796200015060201b60201c565b62000154565b6200008c826001620001a4565b610120526200009d816002620001a4565b61014052815160208084019190912060e052815190820120610100524660a0526200012b60e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c05250506003805460ff191690556200014a620001dd565b620005fb565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602083511015620001c457620001bc8362000260565b9050620001d7565b81620001d1848262000476565b5060ff90505b92915050565b60038054600a80546201000062ffffff199182161790915516620101001790556200020b60046000620003a2565b6003805463ff00000019169055620002356200022f6000546001600160a01b031690565b620002ac565b6040517ff0571e7ef816e3575e546f9e78033cc0535251179852a1efe493e98b7a672f8090600090a1565b600080829050601f8151111562000297578260405163305a27a960e01b81526004016200028e919062000542565b60405180910390fd5b8051620002a48262000592565b179392505050565b80600160005b60035460ff6301000000909104811690821610156200031957826001600160a01b031660048260ff1660068110620002ee57620002ee620005b7565b01546001600160a01b0316036200030457600091505b806200031081620005cd565b915050620002b2565b50806200032557600080fd5b60035483906004906301000000900460ff16600681106200034a576200034a620005b7565b0180546001600160a01b0319166001600160a01b0392909216919091179055600380546301000000900460ff1690806200038483620005cd565b91906101000a81548160ff021916908360ff16021790555050505050565b50620003b3906006810190620003b6565b50565b5b80821115620003cd5760008155600101620003b7565b5090565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620003fc57607f821691505b6020821081036200041d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200047157600081815260208120601f850160051c810160208610156200044c5750805b601f850160051c820191505b818110156200046d5782815560010162000458565b5050505b505050565b81516001600160401b03811115620004925762000492620003d1565b620004aa81620004a38454620003e7565b8462000423565b602080601f831160018114620004e25760008415620004c95750858301515b600019600386901b1c1916600185901b1785556200046d565b600085815260208120601f198616915b828110156200051357888601518255948401946001909101908401620004f2565b5085821015620005325787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208083528351808285015260005b81811015620005715785810183015185820160400152820162000553565b506000604082860101526040601f19601f8301168501019250505092915050565b805160208083015191908110156200041d5760001960209190910360031b1b16919050565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff8103620005f257634e487b7160e01b600052601160045260246000fd5b60010192915050565b60805160a05160c05160e05161010051610120516101405161388e6200065660003960006115590152600061152e0152600061273001526000612708015260006126630152600061268d015260006126b7015261388e6000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c806384b0196e11610104578063be9a6555116100a2578063e2e78fb111610071578063e2e78fb1146103bc578063f2fde38b146103d6578063f71d96cb146103e9578063fcfff16f146103fc57600080fd5b8063be9a65551461038c578063c47f002714610394578063cdb34cc9146103a7578063d66d9e19146103b457600080fd5b806396c55175116100de57806396c5517514610349578063b0df9e531461035c578063b688a36314610371578063be075e151461037957600080fd5b806384b0196e1461030157806385f07bbe1461031c5780638da5cb5b1461032457600080fd5b8063553df021116101715780636f4bda171161014b5780636f4bda17146102cb578063715018a6146102df57806383b2b626146102e7578063847fde93146102ef57600080fd5b8063553df021146102a15780636094ef6d146102ab5780636e8c2caf146102be57600080fd5b806326cd716d116101ad57806326cd716d146102365780633cca779b146102565780634411b3eb14610278578063535b047e1461028e57600080fd5b806301984892146101d4578063160808b9146101fd57806320b5039014610223575b600080fd5b6101e76101e2366004613278565b610404565b6040516101f491906132f1565b60405180910390f35b600a5461021190600160b81b900460ff1681565b60405160ff90911681526020016101f4565b6101e7610231366004613346565b61049e565b610249610244366004613346565b6106fb565b6040516101f49190613392565b60035461026890610100900460ff1681565b60405190151581526020016101f4565b610280600681565b6040519081526020016101f4565b6003546102689062010000900460ff1681565b6102a96109b2565b005b6102a96102b9366004613278565b610b73565b6003546102689060ff1681565b600354610211906301000000900460ff1681565b6102a9611234565b6102a9611248565b600a5461021190610100900460ff1681565b610309611520565b6040516101f497969594939291906133df565b610280600481565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016101f4565b6102a9610357366004613278565b6115a9565b610364611656565b6040516101f49190613475565b6102a96117a6565b600a546102689062010000900460ff1681565b6102a961189f565b6102a96103a23660046134bc565b611a0a565b600a546102119060ff1681565b6102a9611a64565b600a5461033190630100000090046001600160a01b031681565b6102a96103e4366004613278565b611b02565b6103316103f73660046134fe565b611b8f565b6102a9611baf565b6012602052600090815260409020805461041d90613517565b80601f016020809104026020016040519081016040528092919081815260200182805461044990613517565b80156104965780601f1061046b57610100808354040283529160200191610496565b820191906000526020600020905b81548152906001019060200180831161047957829003601f168201915b505050505081565b600354606090610100900460ff161580156104bb575060035460ff165b6105065760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064015b60405180910390fd5b336000805b60035460ff63010000009091048116908216101561056a57826001600160a01b031660048260ff166006811061054357610543613551565b01546001600160a01b03160361055857600191505b806105628161357d565b91505061050b565b50806105b85760405162461bcd60e51b815260206004820152601960248201527f5468697320706c6179657220646f65736e27742065786973740000000000000060448201526064016104fd565b8585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080517f051d137ae0e1fae6e3b6559fed4442b35a85a9a39789838ad5c9ea05e7da2dce6020820152908101879052909350610644925060600190505b60405160208183030381529060405280519060200120611c2d565b905060006106528284611c60565b90506001600160a01b03811633146106d25760405162461bcd60e51b815260206004820152603160248201527f454950373132207369676e657220616e64207472616e73616374696f6e20736960448201527f676e657220646f206e6f74206d6174636800000000000000000000000000000060648201526084016104fd565b336000818152601360205260409020546106ec908c611c84565b9b9a5050505050505050505050565b61070361322e565b600354610100900460ff1615801561071d575060035460ff165b6107635760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b336000805b60035460ff6301000000909104811690821610156107c757826001600160a01b031660048260ff16600681106107a0576107a0613551565b01546001600160a01b0316036107b557600191505b806107bf8161357d565b915050610768565b50806108155760405162461bcd60e51b815260206004820152601960248201527f5468697320706c6179657220646f65736e27742065786973740000000000000060448201526064016104fd565b8585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080517f051d137ae0e1fae6e3b6559fed4442b35a85a9a39789838ad5c9ea05e7da2dce602082015290810187905290935061088a92506060019050610629565b905060006108988284611c60565b90506001600160a01b03811633146109185760405162461bcd60e51b815260206004820152603160248201527f454950373132207369676e657220616e64207472616e73616374696f6e20736960448201527f676e657220646f206e6f74206d6174636800000000000000000000000000000060648201526084016104fd565b33600081815260146020526040812060010154610935908d611c84565b6001600160a01b0383166000908152601460205260408120549192509061095c908e611c84565b6001600160a01b03841660009081526014602052604081206002015491925090610986908f611c84565b60408051606081018252948552602085019390935291830191909152509b9a5050505050505050505050565b600354610100900460ff161580156109cc575060035460ff165b610a125760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b600a5462010000900460ff16610a6a5760405162461bcd60e51b815260206004820152601560248201527f4e6f206e65656420746f206465616c206361726473000000000000000000000060448201526064016104fd565b600a5462010000900460ff16610ac25760405162461bcd60e51b815260206004820152601e60248201527f5468657265206973206e6f206e65656420746f206465616c206361726473000060448201526064016104fd565b600a54600090610ae690610ae190600160b81b900460ff16600161359c565b611c97565b905060005b8151811015610b6f5760018251610b0291906135b5565b8103610b2d57818181518110610b1a57610b1a613551565b6020026020010151601181905550610b5d565b818181518110610b3f57610b3f613551565b6020026020010151600b8260068110610b5a57610b5a613551565b01555b80610b67816135c8565b915050610aeb565b5050565b600354610100900460ff16158015610b8d575060035460ff165b610bd35760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b600354600a54630100000090910460ff90811661010090920416108015610c035750600a5462010000900460ff16155b610c4f5760405162461bcd60e51b815260206004820152601260248201527f4e65656420746f206465616c206361726473000000000000000000000000000060448201526064016104fd565b600a543390630100000090046001600160a01b03168114610cb25760405162461bcd60e51b815260206004820152601360248201527f49742773206e6f7420796f7572207475726e210000000000000000000000000060448201526064016104fd565b6001600160a01b03821660009081526014602052604090206003015460ff16610cda57600080fd5b6000610cee610ce7611e52565b6005611e63565b6001600160a01b03841660009081526014602052604081206003015491925090610d5190610d2090849060ff16611e86565b6001600160a01b0386166000908152601460205260409020600301548490610d4c90829060ff16611ea9565b611ecc565b6001600160a01b03851660009081526014602052604081206001015491925090610dab90610d7f9083611ee1565b6001600160a01b038716600090815260146020526040902060010154610da6908590611f04565b611f36565b6001600160a01b03861660009081526014602052604081205491925090610dfe90610dd7906001611f4a565b6001600160a01b038816600090815260146020526040902060010154610da6908690611f6d565b9050610e5882610e37601460008a6001600160a01b03166001600160a01b03168152602001908152602001600020600101546001611ea9565b6001600160a01b038916600090815260146020526040902060010154611ecc565b6001600160a01b038716600090815260146020526040902060018082019290925554610ea7918391610e8991611ea9565b6001600160a01b038916600090815260146020526040902054611ecc565b6001600160a01b038716600090815260146020526040902055610ef4610ecd8284611f9f565b6001600160a01b038816600090815260146020526040902060020154610d4c816001611ea9565b6001600160a01b0387166000908152601460205260409020600281019190915560030154610f279060019060ff166135e1565b6001600160a01b0387166000908152601460205260408120600301805460ff191660ff9390931692909217909155610f6360025b60ff16611fae565b9050610f7983610f736000610f5b565b83611ecc565b9050610f8982610f736001610f5b565b600a805491925061010090910460ff16906001610fa58361357d565b91906101000a81548160ff021916908360ff160217905550506000610fc982611fbb565b905060001960ff821601611037577f95fb52f15fa9d8267b16e5d9961650d3fa62add7f9f5bee09c1c5b0f6dafde7460405161101d906020808252600490820152633137b6b160e11b604082015260600190565b60405180910390a161102d611fc6565b5050505050505050565b60ff81166110bd57600a8054600160b81b900460ff1690601761105983613610565b91906101000a81548160ff021916908360ff16021790555050600a60179054906101000a900460ff1660ff166000036110bd576040517f34c3cf60e34f02711f998799056fda338f934c6d952eb04dbee6616bce67d34d90600090a161102d611fc6565b600354600a54630100000090910460ff90811661010090920416036111c157600a805460ff169060006110ef8361357d565b82546101009290920a60ff818102199093169183160217909155600a54166004039050611175577f95fb52f15fa9d8267b16e5d9961650d3fa62add7f9f5bee09c1c5b0f6dafde7460405161101d9060208082526005908201527f6361726473000000000000000000000000000000000000000000000000000000604082015260600190565b600a5460405160ff90911681527fc10f7f17f63e8d93f47783cd5e4fb4ca75a5ead0404e4ef93fd6c497817ac5249060200160405180910390a1600a805462ffff001916620100001790555b60405160ff821681527f6e7963ce51f1ffc1517edcaee8433eb8ed64d0308ec21ebf72878e2af351c47c9060200160405180910390a15050600a80546001600160a01b03881663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909116179055505050505050565b61123c611fd8565b6112466000612032565b565b600354610100900460ff16158015611262575060035460ff165b6112a85760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b600a5462010000900460ff166113005760405162461bcd60e51b815260206004820152601560248201527f4e6f206e65656420746f206465616c206361726473000000000000000000000060448201526064016104fd565b600061130c6001612082565b905060005b60035460ff63010000009091048116908216101561149b5760006113356000611fae565b905060005b600a5460ff600160b81b90910481169082161015611396576113828261137d61137a600b8560ff166006811061137257611372613551565b015487611f4a565b90565b6120a4565b91508061138e8161357d565b91505061133a565b5060006113a861137a60115485611f4a565b905060006113c96113ba610f5b6120b0565b6113c485856120a4565b6120c4565b905060006113d56120b0565b905060405180608001604052808481526020018581526020018381526020018260ff168152506014600060048860ff166006811061141557611415613551565b01546001600160a01b0316815260208082019290925260409081016000208351815591830151600183015582015160028201556060909101516003909101805460ff191660ff90921691909117905561148286610da661147587876120a4565b61147d6120b0565b6120d0565b95505050505080806114939061357d565b915050611311565b506114a5816120f3565b600a8054620100009215830262ff00001990911617908190550460ff16156114f3576040517f80da169e279fcbd7c5ad74cb7b48ae525264894f304b8f37ba31cdafc1ad516990600090a150565b6040517f041c1546c78d93bfc6a0f8d0453f6b6915e9510fc2ee719ece4c5f9288e869c790600090a15b50565b6000606080828080836115547f00000000000000000000000000000000000000000000000000000000000000006001612106565b61157f7f00000000000000000000000000000000000000000000000000000000000000006002612106565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b600354610100900460ff1680156115c3575060035460ff16155b6116065760405162461bcd60e51b81526020600482015260146024820152732a34329033b0b6b29034b9903737ba1037b832b760611b60448201526064016104fd565b61160e611fd8565b611617816121b1565b6040516001600160a01b03821681527fc410a9fa377483ea13d470944175eba08264a469dff89ac963c0fd62105c423f9060200160405180910390a150565b600354606090610100900460ff16158015611673575060035460ff165b6116b95760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b6003546000906301000000900460ff1667ffffffffffffffff8111156116e1576116e161362d565b60405190808252806020026020018201604052801561170a578160200160208202803683370190505b50905060005b60035460ff6301000000909104811690821610156117a057600060048260ff166006811061174057611740613551565b01546001600160a01b0316600081815260146020526040902060030154845191925060ff908116918591851690811061177b5761177b613551565b60ff9092166020928302919091019091015250806117988161357d565b915050611710565b50905090565b600354610100900460ff1680156117c0575060035460ff16155b6118035760405162461bcd60e51b81526020600482015260146024820152732a34329033b0b6b29034b9903737ba1037b832b760611b60448201526064016104fd565b6003546006630100000090910460ff16106118605760405162461bcd60e51b815260206004820152601f60248201527f5468652067616d652068617320656e6f75676820706c6179657273202838290060448201526064016104fd565b611869336123ce565b6040513381527f31e760aa525306aba638a784082a013b6a1cc0a9a1789f3f22281c0453b10b1f906020015b60405180910390a1565b600354610100900460ff1680156118b9575060035460ff16155b6118fc5760405162461bcd60e51b81526020600482015260146024820152732a34329033b0b6b29034b9903737ba1037b832b760611b60448201526064016104fd565b6003546004630100000090910460ff16101561195a5760405162461bcd60e51b815260206004820152601a60248201527f4e6f7420656e6f75676820706c6179657220746f20737461727400000000000060448201526064016104fd565b6003805461ffff191660011790819055600a80546004547fffffffffffffffff000000000000000000000000000000000000000000ffffff909116600160b81b63010000009485900460ff160276ffffffffffffffffffffffffffffffffffffffff0000001916176001600160a01b03909116929092029190911790556119df6124b6565b6040517f4cf2e2dcdeacb2322843921968cb0e6a97a686594cb0a4f29abb65a7ed65195290600090a1565b336000908152601260205260409020611a24828483613691565b507f12112454f2a4b714dfd461924e3bf382cab83997982fd38506febcd6166b2dd0338383604051611a5893929190613752565b60405180910390a15050565b600354610100900460ff168015611a7e575060035460ff16155b611ac15760405162461bcd60e51b81526020600482015260146024820152732a34329033b0b6b29034b9903737ba1037b832b760611b60448201526064016104fd565b611ac9611fd8565b611ad2336121b1565b6040513381527f282b6298c0318f5d7d7f2483a6823972bdbe9d2798bcfe461159151be7d7b96990602001611895565b611b0a611fd8565b6001600160a01b038116611b865760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104fd565b61151d81612032565b60048160068110611b9f57600080fd5b01546001600160a01b0316905081565b60038054600a80546201000062ffffff19918216179091551662010100179055611bdb60046000613255565b6003805463ff00000019169055611c02611bfd6000546001600160a01b031690565b6123ce565b6040517ff0571e7ef816e3575e546f9e78033cc0535251179852a1efe493e98b7a672f8090600090a1565b6000611c5a611c3a612656565b8360405161190160f01b8152600281019290925260228201526042902090565b92915050565b6000806000611c6f8585612781565b91509150611c7c816127c6565b509392505050565b6060611c908383612910565b9392505050565b606060008260ff1667ffffffffffffffff811115611cb757611cb761362d565b604051908082528060200260200182016040528015611ce0578160200160208202803683370190505b50905060008060038560ff1610611d1657611cf961297f565b915060068560ff1610611d1157611d0e611e52565b90505b611d21565b611d1e611e52565b90505b60005b8560ff16811015611e4857600060038760ff1610611d9c5760068210611d70576000611d516005846135b5565b611d5c906003613791565b9050611d688482611e63565b915050611dc4565b6000611d7d8360016137a8565b611d88906003613791565b9050611d68611d97868361298b565b6129af565b6000611da98360016137a8565b611db4906003613791565b9050611dc08482611e63565b9150505b60076000611dda83611dd584611fae565b6129bc565b90506000611e10611df88360038054906101000a900460ff16611e86565b83610d4c8560038054906101000a900460ff16611ea9565b905080888681518110611e2557611e25613551565b602002602001018181525050505050508080611e40906135c8565b915050611d24565b5091949350505050565b6000611e5e60006129ec565b905090565b600082611e7757611e746000611fae565b92505b611c90838360ff166001612a5e565b600082611e9a57611e976000611fae565b92505b611c90838360ff166001612af8565b600082611ebd57611eba6000611fae565b92505b611c90838360ff166001612b4c565b6000611ed9848484612ba0565b949350505050565b600082611ef557611ef26000611fae565b92505b611c90838360ff166001612d04565b600082611f1857611f156000611fae565b92505b81611f2a57611f276000611fae565b91505b611c9083836000612af8565b6000611c90611f4584846129bc565b612d58565b600082611f5e57611f5b6000611fae565b92505b611c90838360ff166001612d65565b600082611f8157611f7e6000611fae565b92505b81611f9357611f906000611fae565b91505b611c9083836000612d65565b6000611c90611f458484612db9565b6000611c5a826000612de9565b6000611c5a82612e62565b6003805460ff19169055611246611baf565b6000546001600160a01b031633146112465760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104fd565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000811561209757611c5a611f456001611fae565b611c5a611f456000611fae565b6000611c908383612e8a565b600a54600090611e5e9060ff1660056135e1565b6000611c908383612ebc565b6000826120e4576120e16000611fae565b92505b611c90838360ff166001612eee565b60006120fe82612e62565b151592915050565b606060ff83146121205761211983612f42565b9050611c5a565b81805461212c90613517565b80601f016020809104026020016040519081016040528092919081815260200182805461215890613517565b80156121a55780601f1061217a576101008083540402835291602001916121a5565b820191906000526020600020905b81548152906001019060200180831161218857829003601f168201915b50505050509050611c5a565b806000805b60035460ff63010000009091048116908216101561221557826001600160a01b031660048260ff16600681106121ee576121ee613551565b01546001600160a01b03160361220357600191505b8061220d8161357d565b9150506121b6565b50806122635760405162461bcd60e51b815260206004820152601960248201527f5468697320706c6179657220646f65736e27742065786973740000000000000060448201526064016104fd565b6000805b600681101561239557846001600160a01b03166004826006811061228d5761228d613551565b01546001600160a01b03160361232257600481600681106122b0576122b0613551565b0180546001600160a01b031916905560046122cc8260016137a8565b600681106122dc576122dc613551565b01546001600160a01b0316600482600681106122fa576122fa613551565b0180546001600160a01b0319166001600160a01b039290921691909117905560019150612383565b81156123835760046123358260016137a8565b6006811061234557612345613551565b01546001600160a01b03166004826006811061236357612363613551565b0180546001600160a01b0319166001600160a01b03929092169190911790555b61238e6001826137a8565b9050612267565b50600380546301000000900460ff1690806123af83613610565b91906101000a81548160ff021916908360ff1602179055505050505050565b80600160005b60035460ff63010000009091048116908216101561243357826001600160a01b031660048260ff166006811061240c5761240c613551565b01546001600160a01b03160361242157600091505b8061242b8161357d565b9150506123d4565b508061243e57600080fd5b60035483906004906301000000900460ff166006811061246057612460613551565b0180546001600160a01b0319166001600160a01b0392909216919091179055600380546301000000900460ff1690806124988361357d565b91906101000a81548160ff021916908360ff16021790555050505050565b60035462010000900460ff1661250e5760405162461bcd60e51b815260206004820152601560248201527f4e6f206e65656420746f206465616c206361726473000000000000000000000060448201526064016104fd565b6002600061251b82611c97565b9050600460038054906101000a900460ff1660ff16111561259557600061257e6125798360008151811061255157612551613551565b60200260200101518460018151811061256c5761256c613551565b6020026020010151611f6d565b6120f3565b905080156125935761258e6124b6565b505050565b505b60005b60035460ff630100000090910481169082161015612645576000805b60028160ff1610156125fa576125e6848260ff16815181106125d8576125d8613551565b602002602001015184612f81565b9150806125f28161357d565b9150506125b4565b50806013600060048560ff166006811061261657612616613551565b01546001600160a01b03168152602081019190915260400160002055508061263d8161357d565b915050612598565b50506003805462ff00001916905550565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156126af57507f000000000000000000000000000000000000000000000000000000000000000046145b156126d957507f000000000000000000000000000000000000000000000000000000000000000090565b611e5e604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60008082516041036127b75760208301516040840151606085015160001a6127ab87828585612fa4565b945094505050506127bf565b506000905060025b9250929050565b60008160048111156127da576127da6135fa565b036127e25750565b60018160048111156127f6576127f66135fa565b036128435760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016104fd565b6002816004811115612857576128576135fa565b036128a45760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016104fd565b60038160048111156128b8576128b86135fa565b0361151d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016104fd565b60405163d6ad57cd60e01b81526004810183905260248101829052606090605d9063d6ad57cd90604401600060405180830381865afa158015612957573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c9091908101906137bb565b6000611e5e60016129ec565b60008261299f5761299c6000613068565b92505b611c90838361ffff166001612a5e565b6000611c5a826000613075565b6000826129d0576129cd6000611fae565b92505b816129e2576129df6000611fae565b91505b611c9083836130b1565b60405163480694a760e11b81526001600160f81b031960f883901b166004820152600090605d9063900d294e906024015b602060405180830381865afa158015612a3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190613868565b6000808215612a725750600160f81b612a76565b5060005b604051633bb860cf60e21b815260048101869052602481018590526001600160f81b031982166044820152605d9063eee1833c906064015b602060405180830381865afa158015612acb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aef9190613868565b95945050505050565b6000808215612b0c5750600160f81b612b10565b5060005b604051639675211f60e01b815260048101869052602481018590526001600160f81b031982166044820152605d90639675211f90606401612aae565b6000808215612b605750600160f81b612b64565b5060005b604051638c14cc2160e01b815260048101869052602481018590526001600160f81b031982166044820152605d90638c14cc2190606401612aae565b604051638c14cc2160e01b81526004810183905260248101829052600060448201819052908190605d90638c14cc2190606401602060405180830381865afa158015612bf0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c149190613868565b60405163816d57d360e01b81526004810187905260248101829052600060448201819052919250605d9063816d57d390606401602060405180830381865afa158015612c64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c889190613868565b60405163f953e42760e01b8152600481018290526024810186905260006044820152909150605d9063f953e42790606401602060405180830381865afa158015612cd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cfa9190613868565b9695505050505050565b6000808215612d185750600160f81b612d1c565b5060005b604051631f31e28560e11b815260048101869052602481018590526001600160f81b031982166044820152605d90633e63c50a90606401612aae565b6000611c5a826000612f81565b6000808215612d795750600160f81b612d7d565b5060005b604051630d7c62eb60e31b815260048101869052602481018590526001600160f81b031982166044820152605d90636be3175890606401612aae565b600082612dcd57612dca6000611fae565b92505b81612ddf57612ddc6000611fae565b91505b611c908383613126565b604051631ce2e8d760e31b8152600481018390526001600160f81b031960f883901b166024820152600090605d9063e71746b8906044015b602060405180830381865afa158015612e3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c909190613868565b6040516301693b9160e61b815260048101829052600090605d90635a4ee44090602401612a1d565b600082612e9e57612e9b6000611fae565b92505b81612eb057612ead6000611fae565b91505b611c908383600061315e565b600082612ed057612ecd6000611fae565b92505b81612ee257612edf6000611fae565b91505b611c9083836000612b4c565b6000808215612f025750600160f81b612f06565b5060005b6040516334a6d7b960e11b815260048101869052602481018590526001600160f81b031982166044820152605d9063694daf7290606401612aae565b60606000612f4f836131b2565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600082612f9557612f926000611fae565b92505b611c90838360ff1660016131da565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612fdb575060009050600361305f565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561302f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166130585760006001925092505061305f565b9150600090505b94509492505050565b6000611c5a826001612de9565b60405163025f346960e51b8152600481018390526001600160f81b031960f883901b166024820152600090605d90634be68d2090604401612e21565b604051630ccd46b160e31b81526004810183905260248101829052600060448201819052908190605d9063666a3588906064015b602060405180830381865afa158015613102573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed99190613868565b604051633b1015f760e21b81526004810183905260248101829052600060448201819052908190605d9063ec4057dc906064016130e5565b60008082156131725750600160f81b613176565b5060005b60405163f953e42760e01b815260048101869052602481018590526001600160f81b031982166044820152605d9063f953e42790606401612aae565b600060ff8216601f811115611c5a57604051632cd44ac360e21b815260040160405180910390fd5b60008082156131ee5750600160f81b6131f2565b5060005b604051631927108160e01b815260048101869052602481018590526001600160f81b031982166044820152605d90631927108190606401612aae565b60405180606001604052806003905b606081526020019060019003908161323d5790505090565b5061151d9060068101905b808211156132745760008155600101613260565b5090565b60006020828403121561328a57600080fd5b81356001600160a01b0381168114611c9057600080fd5b60005b838110156132bc5781810151838201526020016132a4565b50506000910152565b600081518084526132dd8160208601602086016132a1565b601f01601f19169290920160200192915050565b602081526000611c9060208301846132c5565b60008083601f84011261331657600080fd5b50813567ffffffffffffffff81111561332e57600080fd5b6020830191508360208285010111156127bf57600080fd5b60008060006040848603121561335b57600080fd5b83359250602084013567ffffffffffffffff81111561337957600080fd5b61338586828701613304565b9497909650939450505050565b60208082526000906080830183820185845b60038110156133d357601f198785030183526133c18483516132c5565b935091840191908401906001016133a4565b50919695505050505050565b60ff60f81b881681526000602060e0818401526133ff60e084018a6132c5565b8381036040850152613411818a6132c5565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101561346357835183529284019291840191600101613447565b50909c9b505050505050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156134b057835160ff1683529284019291840191600101613491565b50909695505050505050565b600080602083850312156134cf57600080fd5b823567ffffffffffffffff8111156134e657600080fd5b6134f285828601613304565b90969095509350505050565b60006020828403121561351057600080fd5b5035919050565b600181811c9082168061352b57607f821691505b60208210810361354b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff810361359357613593613567565b60010192915050565b60ff8181168382160190811115611c5a57611c5a613567565b81810381811115611c5a57611c5a613567565b6000600182016135da576135da613567565b5060010190565b60ff8281168282160390811115611c5a57611c5a613567565b634e487b7160e01b600052602160045260246000fd5b600060ff82168061362357613623613567565b6000190192915050565b634e487b7160e01b600052604160045260246000fd5b601f82111561258e57600081815260208120601f850160051c8101602086101561366a5750805b601f850160051c820191505b8181101561368957828155600101613676565b505050505050565b67ffffffffffffffff8311156136a9576136a961362d565b6136bd836136b78354613517565b83613643565b6000601f8411600181146136f157600085156136d95750838201355b600019600387901b1c1916600186901b17835561374b565b600083815260209020601f19861690835b828110156137225786850135825560209485019460019092019101613702565b508682101561373f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b6001600160a01b038416815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b8082028115828204841417611c5a57611c5a613567565b80820180821115611c5a57611c5a613567565b6000602082840312156137cd57600080fd5b815167ffffffffffffffff808211156137e557600080fd5b818401915084601f8301126137f957600080fd5b81518181111561380b5761380b61362d565b604051601f8201601f19908116603f011681019083821181831017156138335761383361362d565b8160405282815287602084870101111561384c57600080fd5b61385d8360208301602088016132a1565b979650505050505050565b60006020828403121561387a57600080fd5b505191905056fea164736f6c6343000813000a", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c806384b0196e11610104578063be9a6555116100a2578063e2e78fb111610071578063e2e78fb1146103bc578063f2fde38b146103d6578063f71d96cb146103e9578063fcfff16f146103fc57600080fd5b8063be9a65551461038c578063c47f002714610394578063cdb34cc9146103a7578063d66d9e19146103b457600080fd5b806396c55175116100de57806396c5517514610349578063b0df9e531461035c578063b688a36314610371578063be075e151461037957600080fd5b806384b0196e1461030157806385f07bbe1461031c5780638da5cb5b1461032457600080fd5b8063553df021116101715780636f4bda171161014b5780636f4bda17146102cb578063715018a6146102df57806383b2b626146102e7578063847fde93146102ef57600080fd5b8063553df021146102a15780636094ef6d146102ab5780636e8c2caf146102be57600080fd5b806326cd716d116101ad57806326cd716d146102365780633cca779b146102565780634411b3eb14610278578063535b047e1461028e57600080fd5b806301984892146101d4578063160808b9146101fd57806320b5039014610223575b600080fd5b6101e76101e2366004613278565b610404565b6040516101f491906132f1565b60405180910390f35b600a5461021190600160b81b900460ff1681565b60405160ff90911681526020016101f4565b6101e7610231366004613346565b61049e565b610249610244366004613346565b6106fb565b6040516101f49190613392565b60035461026890610100900460ff1681565b60405190151581526020016101f4565b610280600681565b6040519081526020016101f4565b6003546102689062010000900460ff1681565b6102a96109b2565b005b6102a96102b9366004613278565b610b73565b6003546102689060ff1681565b600354610211906301000000900460ff1681565b6102a9611234565b6102a9611248565b600a5461021190610100900460ff1681565b610309611520565b6040516101f497969594939291906133df565b610280600481565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016101f4565b6102a9610357366004613278565b6115a9565b610364611656565b6040516101f49190613475565b6102a96117a6565b600a546102689062010000900460ff1681565b6102a961189f565b6102a96103a23660046134bc565b611a0a565b600a546102119060ff1681565b6102a9611a64565b600a5461033190630100000090046001600160a01b031681565b6102a96103e4366004613278565b611b02565b6103316103f73660046134fe565b611b8f565b6102a9611baf565b6012602052600090815260409020805461041d90613517565b80601f016020809104026020016040519081016040528092919081815260200182805461044990613517565b80156104965780601f1061046b57610100808354040283529160200191610496565b820191906000526020600020905b81548152906001019060200180831161047957829003601f168201915b505050505081565b600354606090610100900460ff161580156104bb575060035460ff165b6105065760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064015b60405180910390fd5b336000805b60035460ff63010000009091048116908216101561056a57826001600160a01b031660048260ff166006811061054357610543613551565b01546001600160a01b03160361055857600191505b806105628161357d565b91505061050b565b50806105b85760405162461bcd60e51b815260206004820152601960248201527f5468697320706c6179657220646f65736e27742065786973740000000000000060448201526064016104fd565b8585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080517f051d137ae0e1fae6e3b6559fed4442b35a85a9a39789838ad5c9ea05e7da2dce6020820152908101879052909350610644925060600190505b60405160208183030381529060405280519060200120611c2d565b905060006106528284611c60565b90506001600160a01b03811633146106d25760405162461bcd60e51b815260206004820152603160248201527f454950373132207369676e657220616e64207472616e73616374696f6e20736960448201527f676e657220646f206e6f74206d6174636800000000000000000000000000000060648201526084016104fd565b336000818152601360205260409020546106ec908c611c84565b9b9a5050505050505050505050565b61070361322e565b600354610100900460ff1615801561071d575060035460ff165b6107635760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b336000805b60035460ff6301000000909104811690821610156107c757826001600160a01b031660048260ff16600681106107a0576107a0613551565b01546001600160a01b0316036107b557600191505b806107bf8161357d565b915050610768565b50806108155760405162461bcd60e51b815260206004820152601960248201527f5468697320706c6179657220646f65736e27742065786973740000000000000060448201526064016104fd565b8585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080517f051d137ae0e1fae6e3b6559fed4442b35a85a9a39789838ad5c9ea05e7da2dce602082015290810187905290935061088a92506060019050610629565b905060006108988284611c60565b90506001600160a01b03811633146109185760405162461bcd60e51b815260206004820152603160248201527f454950373132207369676e657220616e64207472616e73616374696f6e20736960448201527f676e657220646f206e6f74206d6174636800000000000000000000000000000060648201526084016104fd565b33600081815260146020526040812060010154610935908d611c84565b6001600160a01b0383166000908152601460205260408120549192509061095c908e611c84565b6001600160a01b03841660009081526014602052604081206002015491925090610986908f611c84565b60408051606081018252948552602085019390935291830191909152509b9a5050505050505050505050565b600354610100900460ff161580156109cc575060035460ff165b610a125760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b600a5462010000900460ff16610a6a5760405162461bcd60e51b815260206004820152601560248201527f4e6f206e65656420746f206465616c206361726473000000000000000000000060448201526064016104fd565b600a5462010000900460ff16610ac25760405162461bcd60e51b815260206004820152601e60248201527f5468657265206973206e6f206e65656420746f206465616c206361726473000060448201526064016104fd565b600a54600090610ae690610ae190600160b81b900460ff16600161359c565b611c97565b905060005b8151811015610b6f5760018251610b0291906135b5565b8103610b2d57818181518110610b1a57610b1a613551565b6020026020010151601181905550610b5d565b818181518110610b3f57610b3f613551565b6020026020010151600b8260068110610b5a57610b5a613551565b01555b80610b67816135c8565b915050610aeb565b5050565b600354610100900460ff16158015610b8d575060035460ff165b610bd35760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b600354600a54630100000090910460ff90811661010090920416108015610c035750600a5462010000900460ff16155b610c4f5760405162461bcd60e51b815260206004820152601260248201527f4e65656420746f206465616c206361726473000000000000000000000000000060448201526064016104fd565b600a543390630100000090046001600160a01b03168114610cb25760405162461bcd60e51b815260206004820152601360248201527f49742773206e6f7420796f7572207475726e210000000000000000000000000060448201526064016104fd565b6001600160a01b03821660009081526014602052604090206003015460ff16610cda57600080fd5b6000610cee610ce7611e52565b6005611e63565b6001600160a01b03841660009081526014602052604081206003015491925090610d5190610d2090849060ff16611e86565b6001600160a01b0386166000908152601460205260409020600301548490610d4c90829060ff16611ea9565b611ecc565b6001600160a01b03851660009081526014602052604081206001015491925090610dab90610d7f9083611ee1565b6001600160a01b038716600090815260146020526040902060010154610da6908590611f04565b611f36565b6001600160a01b03861660009081526014602052604081205491925090610dfe90610dd7906001611f4a565b6001600160a01b038816600090815260146020526040902060010154610da6908690611f6d565b9050610e5882610e37601460008a6001600160a01b03166001600160a01b03168152602001908152602001600020600101546001611ea9565b6001600160a01b038916600090815260146020526040902060010154611ecc565b6001600160a01b038716600090815260146020526040902060018082019290925554610ea7918391610e8991611ea9565b6001600160a01b038916600090815260146020526040902054611ecc565b6001600160a01b038716600090815260146020526040902055610ef4610ecd8284611f9f565b6001600160a01b038816600090815260146020526040902060020154610d4c816001611ea9565b6001600160a01b0387166000908152601460205260409020600281019190915560030154610f279060019060ff166135e1565b6001600160a01b0387166000908152601460205260408120600301805460ff191660ff9390931692909217909155610f6360025b60ff16611fae565b9050610f7983610f736000610f5b565b83611ecc565b9050610f8982610f736001610f5b565b600a805491925061010090910460ff16906001610fa58361357d565b91906101000a81548160ff021916908360ff160217905550506000610fc982611fbb565b905060001960ff821601611037577f95fb52f15fa9d8267b16e5d9961650d3fa62add7f9f5bee09c1c5b0f6dafde7460405161101d906020808252600490820152633137b6b160e11b604082015260600190565b60405180910390a161102d611fc6565b5050505050505050565b60ff81166110bd57600a8054600160b81b900460ff1690601761105983613610565b91906101000a81548160ff021916908360ff16021790555050600a60179054906101000a900460ff1660ff166000036110bd576040517f34c3cf60e34f02711f998799056fda338f934c6d952eb04dbee6616bce67d34d90600090a161102d611fc6565b600354600a54630100000090910460ff90811661010090920416036111c157600a805460ff169060006110ef8361357d565b82546101009290920a60ff818102199093169183160217909155600a54166004039050611175577f95fb52f15fa9d8267b16e5d9961650d3fa62add7f9f5bee09c1c5b0f6dafde7460405161101d9060208082526005908201527f6361726473000000000000000000000000000000000000000000000000000000604082015260600190565b600a5460405160ff90911681527fc10f7f17f63e8d93f47783cd5e4fb4ca75a5ead0404e4ef93fd6c497817ac5249060200160405180910390a1600a805462ffff001916620100001790555b60405160ff821681527f6e7963ce51f1ffc1517edcaee8433eb8ed64d0308ec21ebf72878e2af351c47c9060200160405180910390a15050600a80546001600160a01b03881663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909116179055505050505050565b61123c611fd8565b6112466000612032565b565b600354610100900460ff16158015611262575060035460ff165b6112a85760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b600a5462010000900460ff166113005760405162461bcd60e51b815260206004820152601560248201527f4e6f206e65656420746f206465616c206361726473000000000000000000000060448201526064016104fd565b600061130c6001612082565b905060005b60035460ff63010000009091048116908216101561149b5760006113356000611fae565b905060005b600a5460ff600160b81b90910481169082161015611396576113828261137d61137a600b8560ff166006811061137257611372613551565b015487611f4a565b90565b6120a4565b91508061138e8161357d565b91505061133a565b5060006113a861137a60115485611f4a565b905060006113c96113ba610f5b6120b0565b6113c485856120a4565b6120c4565b905060006113d56120b0565b905060405180608001604052808481526020018581526020018381526020018260ff168152506014600060048860ff166006811061141557611415613551565b01546001600160a01b0316815260208082019290925260409081016000208351815591830151600183015582015160028201556060909101516003909101805460ff191660ff90921691909117905561148286610da661147587876120a4565b61147d6120b0565b6120d0565b95505050505080806114939061357d565b915050611311565b506114a5816120f3565b600a8054620100009215830262ff00001990911617908190550460ff16156114f3576040517f80da169e279fcbd7c5ad74cb7b48ae525264894f304b8f37ba31cdafc1ad516990600090a150565b6040517f041c1546c78d93bfc6a0f8d0453f6b6915e9510fc2ee719ece4c5f9288e869c790600090a15b50565b6000606080828080836115547f00000000000000000000000000000000000000000000000000000000000000006001612106565b61157f7f00000000000000000000000000000000000000000000000000000000000000006002612106565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b600354610100900460ff1680156115c3575060035460ff16155b6116065760405162461bcd60e51b81526020600482015260146024820152732a34329033b0b6b29034b9903737ba1037b832b760611b60448201526064016104fd565b61160e611fd8565b611617816121b1565b6040516001600160a01b03821681527fc410a9fa377483ea13d470944175eba08264a469dff89ac963c0fd62105c423f9060200160405180910390a150565b600354606090610100900460ff16158015611673575060035460ff165b6116b95760405162461bcd60e51b81526020600482015260176024820152765468652067616d65206973206e6f742072756e6e696e6760481b60448201526064016104fd565b6003546000906301000000900460ff1667ffffffffffffffff8111156116e1576116e161362d565b60405190808252806020026020018201604052801561170a578160200160208202803683370190505b50905060005b60035460ff6301000000909104811690821610156117a057600060048260ff166006811061174057611740613551565b01546001600160a01b0316600081815260146020526040902060030154845191925060ff908116918591851690811061177b5761177b613551565b60ff9092166020928302919091019091015250806117988161357d565b915050611710565b50905090565b600354610100900460ff1680156117c0575060035460ff16155b6118035760405162461bcd60e51b81526020600482015260146024820152732a34329033b0b6b29034b9903737ba1037b832b760611b60448201526064016104fd565b6003546006630100000090910460ff16106118605760405162461bcd60e51b815260206004820152601f60248201527f5468652067616d652068617320656e6f75676820706c6179657273202838290060448201526064016104fd565b611869336123ce565b6040513381527f31e760aa525306aba638a784082a013b6a1cc0a9a1789f3f22281c0453b10b1f906020015b60405180910390a1565b600354610100900460ff1680156118b9575060035460ff16155b6118fc5760405162461bcd60e51b81526020600482015260146024820152732a34329033b0b6b29034b9903737ba1037b832b760611b60448201526064016104fd565b6003546004630100000090910460ff16101561195a5760405162461bcd60e51b815260206004820152601a60248201527f4e6f7420656e6f75676820706c6179657220746f20737461727400000000000060448201526064016104fd565b6003805461ffff191660011790819055600a80546004547fffffffffffffffff000000000000000000000000000000000000000000ffffff909116600160b81b63010000009485900460ff160276ffffffffffffffffffffffffffffffffffffffff0000001916176001600160a01b03909116929092029190911790556119df6124b6565b6040517f4cf2e2dcdeacb2322843921968cb0e6a97a686594cb0a4f29abb65a7ed65195290600090a1565b336000908152601260205260409020611a24828483613691565b507f12112454f2a4b714dfd461924e3bf382cab83997982fd38506febcd6166b2dd0338383604051611a5893929190613752565b60405180910390a15050565b600354610100900460ff168015611a7e575060035460ff16155b611ac15760405162461bcd60e51b81526020600482015260146024820152732a34329033b0b6b29034b9903737ba1037b832b760611b60448201526064016104fd565b611ac9611fd8565b611ad2336121b1565b6040513381527f282b6298c0318f5d7d7f2483a6823972bdbe9d2798bcfe461159151be7d7b96990602001611895565b611b0a611fd8565b6001600160a01b038116611b865760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104fd565b61151d81612032565b60048160068110611b9f57600080fd5b01546001600160a01b0316905081565b60038054600a80546201000062ffffff19918216179091551662010100179055611bdb60046000613255565b6003805463ff00000019169055611c02611bfd6000546001600160a01b031690565b6123ce565b6040517ff0571e7ef816e3575e546f9e78033cc0535251179852a1efe493e98b7a672f8090600090a1565b6000611c5a611c3a612656565b8360405161190160f01b8152600281019290925260228201526042902090565b92915050565b6000806000611c6f8585612781565b91509150611c7c816127c6565b509392505050565b6060611c908383612910565b9392505050565b606060008260ff1667ffffffffffffffff811115611cb757611cb761362d565b604051908082528060200260200182016040528015611ce0578160200160208202803683370190505b50905060008060038560ff1610611d1657611cf961297f565b915060068560ff1610611d1157611d0e611e52565b90505b611d21565b611d1e611e52565b90505b60005b8560ff16811015611e4857600060038760ff1610611d9c5760068210611d70576000611d516005846135b5565b611d5c906003613791565b9050611d688482611e63565b915050611dc4565b6000611d7d8360016137a8565b611d88906003613791565b9050611d68611d97868361298b565b6129af565b6000611da98360016137a8565b611db4906003613791565b9050611dc08482611e63565b9150505b60076000611dda83611dd584611fae565b6129bc565b90506000611e10611df88360038054906101000a900460ff16611e86565b83610d4c8560038054906101000a900460ff16611ea9565b905080888681518110611e2557611e25613551565b602002602001018181525050505050508080611e40906135c8565b915050611d24565b5091949350505050565b6000611e5e60006129ec565b905090565b600082611e7757611e746000611fae565b92505b611c90838360ff166001612a5e565b600082611e9a57611e976000611fae565b92505b611c90838360ff166001612af8565b600082611ebd57611eba6000611fae565b92505b611c90838360ff166001612b4c565b6000611ed9848484612ba0565b949350505050565b600082611ef557611ef26000611fae565b92505b611c90838360ff166001612d04565b600082611f1857611f156000611fae565b92505b81611f2a57611f276000611fae565b91505b611c9083836000612af8565b6000611c90611f4584846129bc565b612d58565b600082611f5e57611f5b6000611fae565b92505b611c90838360ff166001612d65565b600082611f8157611f7e6000611fae565b92505b81611f9357611f906000611fae565b91505b611c9083836000612d65565b6000611c90611f458484612db9565b6000611c5a826000612de9565b6000611c5a82612e62565b6003805460ff19169055611246611baf565b6000546001600160a01b031633146112465760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104fd565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000811561209757611c5a611f456001611fae565b611c5a611f456000611fae565b6000611c908383612e8a565b600a54600090611e5e9060ff1660056135e1565b6000611c908383612ebc565b6000826120e4576120e16000611fae565b92505b611c90838360ff166001612eee565b60006120fe82612e62565b151592915050565b606060ff83146121205761211983612f42565b9050611c5a565b81805461212c90613517565b80601f016020809104026020016040519081016040528092919081815260200182805461215890613517565b80156121a55780601f1061217a576101008083540402835291602001916121a5565b820191906000526020600020905b81548152906001019060200180831161218857829003601f168201915b50505050509050611c5a565b806000805b60035460ff63010000009091048116908216101561221557826001600160a01b031660048260ff16600681106121ee576121ee613551565b01546001600160a01b03160361220357600191505b8061220d8161357d565b9150506121b6565b50806122635760405162461bcd60e51b815260206004820152601960248201527f5468697320706c6179657220646f65736e27742065786973740000000000000060448201526064016104fd565b6000805b600681101561239557846001600160a01b03166004826006811061228d5761228d613551565b01546001600160a01b03160361232257600481600681106122b0576122b0613551565b0180546001600160a01b031916905560046122cc8260016137a8565b600681106122dc576122dc613551565b01546001600160a01b0316600482600681106122fa576122fa613551565b0180546001600160a01b0319166001600160a01b039290921691909117905560019150612383565b81156123835760046123358260016137a8565b6006811061234557612345613551565b01546001600160a01b03166004826006811061236357612363613551565b0180546001600160a01b0319166001600160a01b03929092169190911790555b61238e6001826137a8565b9050612267565b50600380546301000000900460ff1690806123af83613610565b91906101000a81548160ff021916908360ff1602179055505050505050565b80600160005b60035460ff63010000009091048116908216101561243357826001600160a01b031660048260ff166006811061240c5761240c613551565b01546001600160a01b03160361242157600091505b8061242b8161357d565b9150506123d4565b508061243e57600080fd5b60035483906004906301000000900460ff166006811061246057612460613551565b0180546001600160a01b0319166001600160a01b0392909216919091179055600380546301000000900460ff1690806124988361357d565b91906101000a81548160ff021916908360ff16021790555050505050565b60035462010000900460ff1661250e5760405162461bcd60e51b815260206004820152601560248201527f4e6f206e65656420746f206465616c206361726473000000000000000000000060448201526064016104fd565b6002600061251b82611c97565b9050600460038054906101000a900460ff1660ff16111561259557600061257e6125798360008151811061255157612551613551565b60200260200101518460018151811061256c5761256c613551565b6020026020010151611f6d565b6120f3565b905080156125935761258e6124b6565b505050565b505b60005b60035460ff630100000090910481169082161015612645576000805b60028160ff1610156125fa576125e6848260ff16815181106125d8576125d8613551565b602002602001015184612f81565b9150806125f28161357d565b9150506125b4565b50806013600060048560ff166006811061261657612616613551565b01546001600160a01b03168152602081019190915260400160002055508061263d8161357d565b915050612598565b50506003805462ff00001916905550565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156126af57507f000000000000000000000000000000000000000000000000000000000000000046145b156126d957507f000000000000000000000000000000000000000000000000000000000000000090565b611e5e604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60008082516041036127b75760208301516040840151606085015160001a6127ab87828585612fa4565b945094505050506127bf565b506000905060025b9250929050565b60008160048111156127da576127da6135fa565b036127e25750565b60018160048111156127f6576127f66135fa565b036128435760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016104fd565b6002816004811115612857576128576135fa565b036128a45760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016104fd565b60038160048111156128b8576128b86135fa565b0361151d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016104fd565b60405163d6ad57cd60e01b81526004810183905260248101829052606090605d9063d6ad57cd90604401600060405180830381865afa158015612957573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c9091908101906137bb565b6000611e5e60016129ec565b60008261299f5761299c6000613068565b92505b611c90838361ffff166001612a5e565b6000611c5a826000613075565b6000826129d0576129cd6000611fae565b92505b816129e2576129df6000611fae565b91505b611c9083836130b1565b60405163480694a760e11b81526001600160f81b031960f883901b166004820152600090605d9063900d294e906024015b602060405180830381865afa158015612a3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190613868565b6000808215612a725750600160f81b612a76565b5060005b604051633bb860cf60e21b815260048101869052602481018590526001600160f81b031982166044820152605d9063eee1833c906064015b602060405180830381865afa158015612acb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aef9190613868565b95945050505050565b6000808215612b0c5750600160f81b612b10565b5060005b604051639675211f60e01b815260048101869052602481018590526001600160f81b031982166044820152605d90639675211f90606401612aae565b6000808215612b605750600160f81b612b64565b5060005b604051638c14cc2160e01b815260048101869052602481018590526001600160f81b031982166044820152605d90638c14cc2190606401612aae565b604051638c14cc2160e01b81526004810183905260248101829052600060448201819052908190605d90638c14cc2190606401602060405180830381865afa158015612bf0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c149190613868565b60405163816d57d360e01b81526004810187905260248101829052600060448201819052919250605d9063816d57d390606401602060405180830381865afa158015612c64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c889190613868565b60405163f953e42760e01b8152600481018290526024810186905260006044820152909150605d9063f953e42790606401602060405180830381865afa158015612cd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cfa9190613868565b9695505050505050565b6000808215612d185750600160f81b612d1c565b5060005b604051631f31e28560e11b815260048101869052602481018590526001600160f81b031982166044820152605d90633e63c50a90606401612aae565b6000611c5a826000612f81565b6000808215612d795750600160f81b612d7d565b5060005b604051630d7c62eb60e31b815260048101869052602481018590526001600160f81b031982166044820152605d90636be3175890606401612aae565b600082612dcd57612dca6000611fae565b92505b81612ddf57612ddc6000611fae565b91505b611c908383613126565b604051631ce2e8d760e31b8152600481018390526001600160f81b031960f883901b166024820152600090605d9063e71746b8906044015b602060405180830381865afa158015612e3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c909190613868565b6040516301693b9160e61b815260048101829052600090605d90635a4ee44090602401612a1d565b600082612e9e57612e9b6000611fae565b92505b81612eb057612ead6000611fae565b91505b611c908383600061315e565b600082612ed057612ecd6000611fae565b92505b81612ee257612edf6000611fae565b91505b611c9083836000612b4c565b6000808215612f025750600160f81b612f06565b5060005b6040516334a6d7b960e11b815260048101869052602481018590526001600160f81b031982166044820152605d9063694daf7290606401612aae565b60606000612f4f836131b2565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600082612f9557612f926000611fae565b92505b611c90838360ff1660016131da565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612fdb575060009050600361305f565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561302f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166130585760006001925092505061305f565b9150600090505b94509492505050565b6000611c5a826001612de9565b60405163025f346960e51b8152600481018390526001600160f81b031960f883901b166024820152600090605d90634be68d2090604401612e21565b604051630ccd46b160e31b81526004810183905260248101829052600060448201819052908190605d9063666a3588906064015b602060405180830381865afa158015613102573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed99190613868565b604051633b1015f760e21b81526004810183905260248101829052600060448201819052908190605d9063ec4057dc906064016130e5565b60008082156131725750600160f81b613176565b5060005b60405163f953e42760e01b815260048101869052602481018590526001600160f81b031982166044820152605d9063f953e42790606401612aae565b600060ff8216601f811115611c5a57604051632cd44ac360e21b815260040160405180910390fd5b60008082156131ee5750600160f81b6131f2565b5060005b604051631927108160e01b815260048101869052602481018590526001600160f81b031982166044820152605d90631927108190606401612aae565b60405180606001604052806003905b606081526020019060019003908161323d5790505090565b5061151d9060068101905b808211156132745760008155600101613260565b5090565b60006020828403121561328a57600080fd5b81356001600160a01b0381168114611c9057600080fd5b60005b838110156132bc5781810151838201526020016132a4565b50506000910152565b600081518084526132dd8160208601602086016132a1565b601f01601f19169290920160200192915050565b602081526000611c9060208301846132c5565b60008083601f84011261331657600080fd5b50813567ffffffffffffffff81111561332e57600080fd5b6020830191508360208285010111156127bf57600080fd5b60008060006040848603121561335b57600080fd5b83359250602084013567ffffffffffffffff81111561337957600080fd5b61338586828701613304565b9497909650939450505050565b60208082526000906080830183820185845b60038110156133d357601f198785030183526133c18483516132c5565b935091840191908401906001016133a4565b50919695505050505050565b60ff60f81b881681526000602060e0818401526133ff60e084018a6132c5565b8381036040850152613411818a6132c5565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101561346357835183529284019291840191600101613447565b50909c9b505050505050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156134b057835160ff1683529284019291840191600101613491565b50909695505050505050565b600080602083850312156134cf57600080fd5b823567ffffffffffffffff8111156134e657600080fd5b6134f285828601613304565b90969095509350505050565b60006020828403121561351057600080fd5b5035919050565b600181811c9082168061352b57607f821691505b60208210810361354b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff810361359357613593613567565b60010192915050565b60ff8181168382160190811115611c5a57611c5a613567565b81810381811115611c5a57611c5a613567565b6000600182016135da576135da613567565b5060010190565b60ff8281168282160390811115611c5a57611c5a613567565b634e487b7160e01b600052602160045260246000fd5b600060ff82168061362357613623613567565b6000190192915050565b634e487b7160e01b600052604160045260246000fd5b601f82111561258e57600081815260208120601f850160051c8101602086101561366a5750805b601f850160051c820191505b8181101561368957828155600101613676565b505050505050565b67ffffffffffffffff8311156136a9576136a961362d565b6136bd836136b78354613517565b83613643565b6000601f8411600181146136f157600085156136d95750838201355b600019600387901b1c1916600186901b17835561374b565b600083815260209020601f19861690835b828110156137225786850135825560209485019460019092019101613702565b508682101561373f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b6001600160a01b038416815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b8082028115828204841417611c5a57611c5a613567565b80820180821115611c5a57611c5a613567565b6000602082840312156137cd57600080fd5b815167ffffffffffffffff808211156137e557600080fd5b818401915084601f8301126137f957600080fd5b81518181111561380b5761380b61362d565b604051601f8201601f19908116603f011681019083821181831017156138335761383361362d565b8160405282815287602084870101111561384c57600080fd5b61385d8360208301602088016132a1565b979650505050505050565b60006020828403121561387a57600080fd5b505191905056fea164736f6c6343000813000a", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/main.tsx b/src/main.tsx index 4b38401..da9d0a2 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -1,15 +1,15 @@ import { isAddress } from 'ethers'; import React from 'react'; import ReactDOM from 'react-dom/client'; -import { RouterProvider, createBrowserRouter, redirect } from 'react-router-dom'; +import { RouterProvider, createHashRouter, redirect } from 'react-router-dom'; import App from './App'; import { Game, JoinGame } from './modules/game'; -import { Home } from './modules/home'; +import { Home, Rules } from './modules/home'; import './index.css'; -const router = createBrowserRouter([ +const router = createHashRouter([ { path: '/', element: ( @@ -18,6 +18,14 @@ const router = createBrowserRouter([ ), }, + { + path: 'rules', + element: ( + + {(account, provider) => } + + ), + }, { path: 'join', element: ( @@ -30,7 +38,7 @@ const router = createBrowserRouter([ path: 'game/:contractAddress', loader: ({ params }) => { if (!params.contractAddress || !isAddress(params.contractAddress)) { - return redirect('/') as Response; + return redirect('/'); } return null; }, diff --git a/src/modules/game/components/WaitingRoom/WaitingRoom.tsx b/src/modules/game/components/WaitingRoom/WaitingRoom.tsx index 8af6b9a..2eb03cc 100644 --- a/src/modules/game/components/WaitingRoom/WaitingRoom.tsx +++ b/src/modules/game/components/WaitingRoom/WaitingRoom.tsx @@ -52,7 +52,7 @@ export const WaitingRoom = ({ contract, account, players, currentName = '' }: Wa }; const joinGame = async () => { - const startTx = await contract.start(); + const startTx = await contract.join(); setGameLoading(true); await startTx.wait(); setGameLoading(false); diff --git a/src/modules/home/components/Home/Home.tsx b/src/modules/home/components/Home/Home.tsx index 7dbf937..d57dd2f 100644 --- a/src/modules/home/components/Home/Home.tsx +++ b/src/modules/home/components/Home/Home.tsx @@ -40,6 +40,11 @@ export const Home = ({ account, provider }: HomeProps) => { Join a room +
+ + Rules + +
); diff --git a/src/modules/home/components/Rules/Rules.tsx b/src/modules/home/components/Rules/Rules.tsx new file mode 100644 index 0000000..eeaeb19 --- /dev/null +++ b/src/modules/home/components/Rules/Rules.tsx @@ -0,0 +1,45 @@ +import { BrowserProvider } from 'ethers'; + +import { Back, Subtitle, Title } from '../../../common-ui'; + +type RulesProps = { + account: string; + provider: BrowserProvider; +}; + +export const Rules = (_: RulesProps) => { + return ( +
+ + Story +

+ In the shadows of the digital realm, a formidable hacker known as Natalya Encryptova has assembled a team called + the Red Cipher to concoct a nefarious plan and unleash chaos upon the world. Natalya has infiltrated the core + servers of a highly secure data center, planting a malevolent program that will encrypt all available data and + demand a ransom for its release. As the countdown to encryption begins, a group of elite hackers, led by + CrunchCracker and known as the Decryptors, races against time to prevent the impending catastrophe. +

+

+ The game begins with players secretly discovering whether they belong to the Decryptors or the Red Cipher, and + they must navigate the intricate web of alliances and deceptions within the hacker community. As the turns + unfold, players choose a vulnerability in the encryption algorithm to exploit, attempting to detonate or defuse + the bomb according to which team you belong. The Decryptors wins if they defuse the bomb, while the Red Cipher + wins if they detonate the bomb. +

+ Rules + Role +

+ The Decryptors members are represented by the Role cards with a blue background. The objective of these members + is defusing the bomb. +

+

+ Members of the Red Cipher are represented by the role cards with a red background. The purpose of these members + is to detonate the bomb. +

+ Card +

Terminal: no effect

+

Vulnerability: founding a vulnerability brings you close to victory if you are part of the Decryptors.

+

Bomb: triggering the bomb encrypts the digital world and hands victory to the Red Cipher

+
+ ); +}; diff --git a/src/modules/home/components/Rules/index.ts b/src/modules/home/components/Rules/index.ts new file mode 100644 index 0000000..2a4b0ef --- /dev/null +++ b/src/modules/home/components/Rules/index.ts @@ -0,0 +1 @@ +export * from './Rules'; diff --git a/src/modules/home/index.ts b/src/modules/home/index.ts index eceab89..00b9cf2 100644 --- a/src/modules/home/index.ts +++ b/src/modules/home/index.ts @@ -1 +1,2 @@ export * from './components/Home'; +export * from './components/Rules';