From e16bb4968f1786a49166d81f0a38273688e41972 Mon Sep 17 00:00:00 2001 From: Ladd Hoffman Date: Sun, 21 Apr 2024 10:28:44 -0500 Subject: [PATCH] use PPM rather than percent for weights --- backend/contract-addresses.json | 16 ++-- backend/contractArtifacts/DAO.json | 10 +-- backend/contractArtifacts/Onboarding.json | 6 +- backend/contractArtifacts/Proposals.json | 4 +- backend/contractArtifacts/Work1.json | 6 +- backend/src/import-from-ss.js | 24 +++--- ethereum/contract-addresses.json | 16 ++-- ethereum/contracts/Onboarding.sol | 4 +- ethereum/contracts/Proposals.sol | 4 +- ethereum/contracts/WorkContract.sol | 2 +- ethereum/contracts/core/Forum.sol | 40 +++++----- ethereum/contracts/core/ValidationPools.sol | 2 +- ethereum/test/Forum.js | 74 +++++++++---------- ethereum/test/Onboarding.js | 6 +- ethereum/test/Proposals.js | 6 +- ethereum/test/ValidationPools.js | 4 +- ethereum/test/Work1.js | 4 +- frontend/contract-addresses.json | 16 ++-- frontend/contractArtifacts/DAO.json | 10 +-- frontend/contractArtifacts/Onboarding.json | 6 +- frontend/contractArtifacts/Proposals.json | 4 +- frontend/contractArtifacts/Work1.json | 6 +- frontend/src/App.jsx | 4 +- .../src/components/posts/AddPostModal.jsx | 2 +- .../src/components/posts/ViewPostModal.jsx | 8 +- .../ProposePriceChangeModal.jsx | 2 +- 26 files changed, 147 insertions(+), 139 deletions(-) diff --git a/backend/contract-addresses.json b/backend/contract-addresses.json index a829e34..ea0f25e 100644 --- a/backend/contract-addresses.json +++ b/backend/contract-addresses.json @@ -1,14 +1,14 @@ { "localhost": { - "DAO": "0xE799A82AEB525D35c671eAEb6AE6858E02a1EB24", - "Work1": "0x358A07B26F4c556140872ecdB69c58e8807E7178", - "Onboarding": "0x63472674239ffb70618Fae043610917f2d9B781C", - "Proposals": "0x38AE4ABD47B10f6660CD70Cc8FF3401341E13d9e" + "DAO": "0x4C767e62c92b58B2308E02ba5Cc4A3BD246060ac", + "Work1": "0x39B7522Ee1A5B13aE5580C40114239D4cE0e7D29", + "Onboarding": "0xC0Bb36820Ba891DE4ed6D60f75066805361dbeB8", + "Proposals": "0x268A0A6bB80282542e0Be0864Cfa1c2206c5491F" }, "sepolia": { - "DAO": "0x8e9D6cb0097CE2E283Cdd5762F288d2D394eB713", - "Work1": "0xFC95d5d09e71f0C83F59765107eAa79125b01624", - "Onboarding": "0x32f5A03687406A5c66878349A7de667d0b5C2922", - "Proposals": "0x8273062d41a828ac67ae5837547d2Dd19f8CDc27" + "DAO": "0x8e5bd58B2ca8910C5F9be8de847d6883B15c60d2", + "Work1": "0x1708A144F284C1a9615C25b674E4a08992CE93e4", + "Onboarding": "0xb21D4c986715A1adb5e87F752842613648C20a7B", + "Proposals": "0x930c47293F206780E8F166338bDaFF3520306032" } } \ No newline at end of file diff --git a/backend/contractArtifacts/DAO.json b/backend/contractArtifacts/DAO.json index 0ab0a38..c871b1f 100644 --- a/backend/contractArtifacts/DAO.json +++ b/backend/contractArtifacts/DAO.json @@ -196,7 +196,7 @@ "components": [ { "internalType": "uint256", - "name": "weightPercent", + "name": "weightPPM", "type": "uint256" }, { @@ -218,7 +218,7 @@ "components": [ { "internalType": "int256", - "name": "weightPercent", + "name": "weightPPM", "type": "int256" }, { @@ -378,7 +378,7 @@ "components": [ { "internalType": "uint256", - "name": "weightPercent", + "name": "weightPPM", "type": "uint256" }, { @@ -820,8 +820,8 @@ "type": "function" } ], - "bytecode": "0x60806040526003600c556040518060400160405280600160ff168152602001600a60ff16815250600f90600262000038929190620000df565b503480156200004657600080fd5b506040518060400160405280600a81526020017f52657075746174696f6e000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f52455000000000000000000000000000000000000000000000000000000000008152508160039081620000c49190620003c2565b508060049081620000d69190620003c2565b505050620004a9565b826002810192821562000116579160200282015b8281111562000115578251829060ff16905591602001919060010190620000f3565b5b50905062000125919062000129565b5090565b5b80821115620001445760008160009055506001016200012a565b5090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620001ca57607f821691505b602082108103620001e057620001df62000182565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200024a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200020b565b6200025686836200020b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620002a36200029d62000297846200026e565b62000278565b6200026e565b9050919050565b6000819050919050565b620002bf8362000282565b620002d7620002ce82620002aa565b84845462000218565b825550505050565b600090565b620002ee620002df565b620002fb818484620002b4565b505050565b5b81811015620003235762000317600082620002e4565b60018101905062000301565b5050565b601f82111562000372576200033c81620001e6565b6200034784620001fb565b8101602085101562000357578190505b6200036f6200036685620001fb565b83018262000300565b50505b505050565b600082821c905092915050565b6000620003976000198460080262000377565b1980831691505092915050565b6000620003b2838362000384565b9150826002028217905092915050565b620003cd8262000148565b67ffffffffffffffff811115620003e957620003e862000153565b5b620003f58254620001b1565b6200040282828562000327565b600060209050601f8311600181146200043a576000841562000425578287015190505b620004318582620003a4565b865550620004a1565b601f1984166200044a86620001e6565b60005b8281101562000474578489015182556001820191506020850194506020810190506200044d565b8683101562000494578489015162000490601f89168262000384565b8355505b6001600288020188555050505b505050505050565b615f1780620004b96000396000f3fe60806040526004361061014b5760003560e01c806370a08231116100b6578063a23362791161006f578063a2336279146104e7578063a9059cbb1461052f578063da66863a1461056c578063dd62ed3e146105a9578063e5b4d827146105e6578063f8300fca1461060f5761014b565b806370a08231146103ac57806388380274146103e957806395d89b4114610426578063975762b3146104515780639fbe7c731461047a578063a230c524146104aa5761014b565b806323b872dd1161010857806323b872dd146102765780632d17c062146102b3578063313ce567146102dc57806350cde8ef146103075780635daf08ca14610344578063642b5bfb146103815761014b565b806306fdde0314610150578063095ea7b31461017b57806311aee380146101b857806317906c2e146101e357806317c182171461020e57806318160ddd1461024b575b600080fd5b34801561015c57600080fd5b5061016561064e565b6040516101729190613b62565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190613c2c565b6106e0565b6040516101af9190613c87565b60405180910390f35b3480156101c457600080fd5b506101cd610703565b6040516101da9190613cb1565b60405180910390f35b3480156101ef57600080fd5b506101f8610709565b6040516102059190613cb1565b60405180910390f35b34801561021a57600080fd5b5061023560048036038101906102309190613ccc565b61070f565b6040516102429190613c87565b60405180910390f35b34801561025757600080fd5b506102606110ed565b60405161026d9190613cb1565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190613cf9565b6110f7565b6040516102aa9190613c87565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d59190613d78565b611134565b005b3480156102e857600080fd5b506102f161115d565b6040516102fe9190613de7565b60405180910390f35b34801561031357600080fd5b5061032e60048036038101906103299190613ccc565b611166565b60405161033b9190613b62565b60405180910390f35b34801561035057600080fd5b5061036b60048036038101906103669190613ccc565b611212565b6040516103789190613e11565b60405180910390f35b34801561038d57600080fd5b50610396611245565b6040516103a39190613cb1565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce9190613e2c565b61124b565b6040516103e09190613cb1565b60405180910390f35b3480156103f557600080fd5b50610410600480360381019061040b9190613e59565b611293565b60405161041d9190613c87565b60405180910390f35b34801561043257600080fd5b5061043b61131a565b6040516104489190613b62565b60405180910390f35b34801561045d57600080fd5b5061047860048036038101906104739190613eac565b6113ac565b005b610494600480360381019061048f9190613ff0565b6113e1565b6040516104a19190613cb1565b60405180910390f35b3480156104b657600080fd5b506104d160048036038101906104cc9190613e2c565b61189b565b6040516104de9190613c87565b60405180910390f35b3480156104f357600080fd5b5061050e60048036038101906105099190613ccc565b6118bb565b6040516105269c9b9a99989796959493929190614260565b60405180910390f35b34801561053b57600080fd5b5061055660048036038101906105519190613c2c565b611b35565b6040516105639190613c87565b60405180910390f35b34801561057857600080fd5b50610593600480360381019061058e919061432a565b611b72565b6040516105a09190614464565b60405180910390f35b3480156105b557600080fd5b506105d060048036038101906105cb9190614486565b611c5b565b6040516105dd9190613cb1565b60405180910390f35b3480156105f257600080fd5b5061060d60048036038101906106089190614572565b611ce2565b005b34801561061b57600080fd5b5061063660048036038101906106319190614756565b6121af565b6040516106459392919061479f565b60405180910390f35b60606003805461065d9061480c565b80601f01602080910402602001604051908101604052809291908181526020018280546106899061480c565b80156106d65780601f106106ab576101008083540402835291602001916106d6565b820191906000526020600020905b8154815290600101906020018083116106b957829003601f168201915b5050505050905090565b6000806106eb612297565b90506106f881858561229f565b600191505092915050565b60065481565b600a5481565b600080600d600084815260200190815260200160002090506000151581600f0160009054906101000a900460ff1615151461077f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077690614889565b60405180910390fd5b600080600080600090505b84600501548110156107fb5784600401600082815260200190815260200160002091508160010160009054906101000a900460ff16156107db578160020154846107d491906148d8565b93506107ee565b8160020154836107eb91906148d8565b92505b808060010191505061078a565b506002846003015461080d919061493b565b8361081891906148d8565b92506002846003015461082b919061493b565b8261083691906148d8565b915060006002856003015461084b919061496c565b146108605760018361085d91906148d8565b92505b83600e015442118061088357506108756110ed565b828461088191906148d8565b145b6108c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b990614a0f565b60405180910390fd5b836006016001016000600281106108dc576108db614a2f565b5b01546108e66110ed565b6108f09190614a5e565b82846108fc91906148d8565b8560060160010160016002811061091657610915614a2f565b5b01546109229190614a5e565b11610a5257600184600f0160006101000a81548160ff0219169083151502179055507fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de818660008060405161097893929190614aa0565b60405180910390a183600f0160029054906101000a900460ff1615610a45578360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d58660008686896010016040518663ffffffff1660e01b8152600401610a00959493929190614b70565b6020604051808303816000875af1158015610a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a439190614bdf565b505b60009450505050506110e8565b83600601600301600060028110610a6c57610a6b614a2f565b5b01548284610a7a91906148d8565b610a849190614a5e565b84600601600301600160028110610a9e57610a9d614a2f565b5b015484610aab9190614a5e565b10159450600184600f0160006101000a81548160ff0219169083151502179055508484600f0160016101000a81548160ff0219169083151502179055507fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de8186866001604051610b1c93929190614aa0565b60405180910390a1600085610b315782610b33565b835b905060008060005b8760050154811015610c3b5787600401600082815260200190815260200160002094508460010160009054906101000a900460ff16151589151514610c2e576000606489600601600501548760020154610b959190614a5e565b610b9f919061493b565b90508860060160060160009054906101000a900460ff1615610bfd57610bea8660030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630836122b1565b8084610bf691906148d8565b9350610c2c565b610c2b8660030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826124d6565b5b505b8080600101915050610b3b565b508715610e395760028760030154610c53919061493b565b82610c5e91906148d8565b915060005b8760050154811015610d495787600401600082815260200190815260200160002094508760060160060160009054906101000a900460ff168015610cbb57508460010160009054906101000a900460ff161515891515145b15610d3c5760006064896006016005015486886002015487610cdd9190614a5e565b610ce7919061493b565b610cf19190614a5e565b610cfb919061493b565b90508083610d0991906148d8565b9250610d3a308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836122b1565b505b8080600101915050610c63565b5060008183610d589190614c0c565b9050600060028960030154610d6d919061496c565b14610d8257600181610d7f91906148d8565b90505b610e33886001018054610d949061480c565b80601f0160208091040260200160405190810160405280929190818152602001828054610dc09061480c565b8015610e0d5780601f10610de257610100808354040283529160200191610e0d565b820191906000526020600020905b815481529060010190602001808311610df057829003601f168201915b50505050508260028b60030154610e24919061493b565b610e2e91906148d8565b612558565b50610f51565b866003015482610e4991906148d8565b915060005b8760050154811015610f4f5787600401600082815260200190815260200160002094508760060160060160009054906101000a900460ff168015610ea657508460010160009054906101000a900460ff161515891515145b15610f425760006064896006016005015460028b60030154610ec8919061493b565b87610ed39190614c0c565b886002015487610ee39190614a5e565b610eed919061493b565b610ef79190614a5e565b610f01919061493b565b90508083610f0f91906148d8565b9250610f40308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836122b1565b505b8080600101915050610e4e565b505b60005b60065481101561101a5760006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000610fa06110ed565b610fa98361124b565b8b600d0154610fb89190614a5e565b610fc2919061493b565b90508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561100a573d6000803e3d6000fd5b5050508080600101915050610f54565b5086600f0160029054906101000a900460ff16156110e0578660020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d589600189898c6010016040518663ffffffff1660e01b815260040161109b959493929190614b70565b6020604051808303816000875af11580156110ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110de9190614bdf565b505b505050505050505b919050565b6000600254905090565b60006040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112b90614c8c565b60405180910390fd5b6000600d600085815260200190815260200160002090506111578133858561256a565b50505050565b60006009905090565b6009818154811061117657600080fd5b9060005260206000200160009150905080546111919061480c565b80601f01602080910402602001604051908101604052809291908181526020018280546111bd9061480c565b801561120a5780601f106111df5761010080835404028352916020019161120a565b820191906000526020600020905b8154815290600101906020018083116111ed57829003601f168201915b505050505081565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006112a033858561229f565b8373ffffffffffffffffffffffffffffffffffffffff1663216ed6ad3385856040518463ffffffff1660e01b81526004016112dd93929190614cac565b600060405180830381600087803b1580156112f757600080fd5b505af115801561130b573d6000803e3d6000fd5b50505050600190509392505050565b6060600480546113299061480c565b80601f01602080910402602001604051908101604052809291908181526020018280546113559061480c565b80156113a25780601f10611377576101008083540402835291602001916113a2565b820191906000526020600020905b81548152906001019060200180831161138557829003601f168201915b5050505050905090565b6000600d600086815260200190815260200160002090506113ce843385612660565b6113da8185858561256a565b5050505050565b6000803411611425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141c90614d55565b60405180910390fd5b6001891015611469576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146090614dc1565b60405180910390fd5b651cae8c13e0008911156114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a990614e2d565b60405180910390fd5b876001600281106114c6576114c5614a2f565b5b6020020135600f6000600281106114e0576114df614a2f565b5b01546114ec9190614a5e565b88600060028110611500576114ff614a2f565b5b6020020135600f60016002811061151a57611519614a2f565b5b01546115269190614a5e565b1015611567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155e90614e99565b60405180910390fd5b8760016002811061157b5761157a614a2f565b5b60200201358860006002811061159457611593614a2f565b5b602002013511156115da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d190614f05565b60405180910390fd5b866001600281106115ee576115ed614a2f565b5b60200201358760006002811061160757611606614a2f565b5b6020020135111561164d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164490614f71565b60405180910390fd5b6064861115611691576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168890614fdd565b60405180910390fd5b600060088c8c6040516116a592919061502d565b9081526020016040518091039020905060008160020180549050036116ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f690615092565b60405180910390fd5b600e6000815480929190611712906150b2565b9190505591506000600d60008481526020019081526020016000209050338160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508c8c8260010191826117859291906152b1565b503481600d018190555089816006016001019060026117a5929190613a75565b5088816006016003019060026117bc929190613a75565b50878160060160050181905550868160060160060160006101000a81548160ff0219169083151502179055508a81600601600001819055508a4261180091906148d8565b81600e01819055508281600001819055508581600f0160026101000a81548160ff02191690831515021790555084848260100191826118409291906153d2565b5061184b30346126f4565b3481600301819055507f6e5c598b821d7fa8550e5fea58ab6e27c59e1cbe1df75a8591aa0c453b49e10a836040516118839190613cb1565b60405180910390a150509a9950505050505050505050565b60076020528060005260406000206000915054906101000a900460ff1681565b600d6020528060005260406000206000915090508060000154908060010180546118e49061480c565b80601f01602080910402602001604051908101604052809291908181526020018280546119109061480c565b801561195d5780601f106119325761010080835404028352916020019161195d565b820191906000526020600020905b81548152906001019060200180831161194057829003601f168201915b5050505050908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003015490806005015490806006016040518060a001604052908160008201548152602001600182016002806020026040519081016040528092919082600280156119ea576020028201915b8154815260200190600101908083116119d6575b5050505050815260200160038201600280602002604051908101604052809291908260028015611a2f576020028201915b815481526020019060010190808311611a1b575b50505050508152602001600582015481526020016006820160009054906101000a900460ff1615151515815250509080600d01549080600e01549080600f0160009054906101000a900460ff169080600f0160019054906101000a900460ff169080600f0160029054906101000a900460ff1690806010018054611ab29061480c565b80601f0160208091040260200160405190810160405280929190818152602001828054611ade9061480c565b8015611b2b5780601f10611b0057610100808354040283529160200191611b2b565b820191906000526020600020905b815481529060010190602001808311611b0e57829003601f168201915b505050505090508c565b60006040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6990614c8c565b60405180910390fd5b6060600060088484604051611b8892919061502d565b9081526020016040518091039020905080600201805480602002602001604051908101604052809291908181526020016000905b82821015611c4e5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190611bbc565b5050505091505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008686905011611d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1f90615514565b60405180910390fd5b600a6000815480929190611d3b906150b2565b91905055506009848490918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182611d7d9291906152b1565b50600060088585604051611d9292919061502d565b908152602001604051809103902090506000816002018054905014611dec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de3906155a6565b60405180910390fd5b338160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508484826000019182611e429291906152b1565b50600080600090505b88889050811015611ee157888882818110611e6957611e68614a2f565b5b9050604002016000013582611e7e91906148d8565b915082600201898983818110611e9757611e96614a2f565b5b90506040020190806001815401808255809150506001900390600052602060002090600202016000909190919091508181611ed29190615753565b50508080600101915050611e4b565b5060648114611f25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1c906157ad565b60405180910390fd5b60005b84849050811015611fa05782600301858583818110611f4a57611f49614a2f565b5b9050602002810190611f5c91906157dc565b90806001815401808255809150506001900390600052602060002090600202016000909190919091508181611f919190615943565b50508080600101915050611f28565b5060008060005b84600301805490508110156120c2576000856003018281548110611fce57611fcd614a2f565b5b90600052602060002090600202016000015490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c811215612045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203c906159c3565b60405180910390fd5b6064811315612089576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208090615a55565b60405180910390fd5b60008113156120a557808461209e9190615a75565b93506120b4565b80836120b19190615a75565b92505b508080600101915050611fa7565b506064821315612107576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fe90615b2b565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c81121561216a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216190615bbd565b60405180910390fd5b7fbd6277baf8ced6ab6543a1aef164635fc2bde1ba962d39d8a0fd81a5af249727888860405161219b929190615c0a565b60405180910390a150505050505050505050565b6008818051602081018201805184825260208301602085012081835280955050505050506000915090508060000180546121e89061480c565b80601f01602080910402602001604051908101604052809291908181526020018280546122149061480c565b80156122615780601f1061223657610100808354040283529160200191612261565b820191906000526020600020905b81548152906001019060200180831161224457829003601f168201915b5050505050908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040154905083565b600033905090565b6122ac8383836001612776565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123035780600260008282546122f791906148d8565b925050819055506123d6565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561238f578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161238693929190614cac565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361241f578060026000828254039250508190555061246c565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124c99190613cb1565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125485760006040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161253f9190613e11565b60405180910390fd5b612554826000836122b1565b5050565b612565828260008061294d565b505050565b83600e01544211156125b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a890615c7a565b60405180910390fd5b60008460050160008154809291906125c8906150b2565b91905055905060008560040160008381526020019081526020016000209050848160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828160010160006101000a81548160ff021916908315150217905550838160020181905550818160000181905550505050505050565b600061266c8484611c5b565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146126ee57818110156126de578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016126d593929190614cac565b60405180910390fd5b6126ed84848484036000612776565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127665760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161275d9190613e11565b60405180910390fd5b612772600083836122b1565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036127e85760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016127df9190613e11565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361285a5760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016128519190613e11565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015612947578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161293e9190613cb1565b60405180910390a35b50505050565b6000600c548210612960578390506134ed565b60006008866040516129729190615ccb565b90815260200160405180910390209050600081600201805490500361299a57849150506134ed565b60005b8160030180549050811015612ace5760008260030182815481106129c4576129c3614a2f565b5b9060005260206000209060020201600001541215612ac157612ab3878360030183815481106129f6576129f5614a2f565b5b906000526020600020906002020160405180604001604052908160008201548152602001600182018054612a299061480c565b80601f0160208091040260200160405190810160405280929190818152602001828054612a559061480c565b8015612aa25780601f10612a7757610100808354040283529160200191612aa2565b820191906000526020600020905b815481529060010190602001808311612a8557829003601f168201915b5050505050815250508888886134f5565b86612abe9190615ce2565b95505b808060010191505061299d565b5060005b8160030180549050811015612c03576000826003018281548110612af957612af8614a2f565b5b9060005260206000209060020201600001541315612bf657612be887836003018381548110612b2b57612b2a614a2f565b5b906000526020600020906002020160405180604001604052908160008201548152602001600182018054612b5e9061480c565b80601f0160208091040260200160405190810160405280929190818152602001828054612b8a9061480c565b8015612bd75780601f10612bac57610100808354040283529160200191612bd7565b820191906000526020600020905b815481529060010190602001808311612bba57829003601f168201915b5050505050815250508888886134f5565b86612bf39190615ce2565b95505b8080600101915050612ad2565b506000851315612eef57612ece816040518060a0016040529081600082018054612c2c9061480c565b80601f0160208091040260200160405190810160405280929190818152602001828054612c589061480c565b8015612ca55780601f10612c7a57610100808354040283529160200191612ca5565b820191906000526020600020905b815481529060010190602001808311612c8857829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015612dbb5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190612d29565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015612eb6578382906000526020600020906002020160405180604001604052908160008201548152602001600182018054612e259061480c565b80601f0160208091040260200160405190810160405280929190818152602001828054612e519061480c565b8015612e9e5780601f10612e7357610100808354040283529160200191612e9e565b820191906000526020600020905b815481529060010190602001808311612e8157829003601f168201915b50505050508152505081526020019060010190612de8565b505050508152602001600482015481525050866136be565b5084816004016000828254612ee391906148d8565b925050819055506134eb565b6000858260040154612f019190615a75565b126131f2576131c7816040518060a0016040529081600082018054612f259061480c565b80601f0160208091040260200160405190810160405280929190818152602001828054612f519061480c565b8015612f9e5780601f10612f7357610100808354040283529160200191612f9e565b820191906000526020600020905b815481529060010190602001808311612f8157829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b828210156130b45783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190613022565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156131af57838290600052602060002090600202016040518060400160405290816000820154815260200160018201805461311e9061480c565b80601f016020809104026020016040519081016040528092919081815260200182805461314a9061480c565b80156131975780601f1061316c57610100808354040283529160200191613197565b820191906000526020600020905b81548152906001019060200180831161317a57829003601f168201915b505050505081525050815260200190600101906130e1565b505050508152602001600482015481525050866136be565b9150846131d390615d25565b8160040160008282546131e69190614c0c565b925050819055506134ea565b8481600401546132029190615a75565b91506134d2816040518060a00160405290816000820180546132239061480c565b80601f016020809104026020016040519081016040528092919081815260200182805461324f9061480c565b801561329c5780601f106132715761010080835404028352916020019161329c565b820191906000526020600020905b81548152906001019060200180831161327f57829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b828210156133b25783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190613320565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156134ad57838290600052602060002090600202016040518060400160405290816000820154815260200160018201805461341c9061480c565b80601f01602080910402602001604051908101604052809291908181526020018280546134489061480c565b80156134955780601f1061346a57610100808354040283529160200191613495565b820191906000526020600020905b81548152906001019060200180831161347857829003601f168201915b505050505081525050815260200190600101906133df565b50505050815260200160048201548152505082600401546134cd90615d25565b6136be565b826134dd9190615a75565b9150600081600401819055505b5b505b949350505050565b600060648560000151856135099190615d6d565b6135139190615de5565b9050600085602001515103613575576000811215613566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161355d90615ec1565b60405180910390fd5b61357030826124d6565b6136b5565b6000600b876040516135879190615ccb565b908152602001604051809103902086602001516040516135a79190615ccb565b908152602001604051809103902054905083156136145760008212156135ef57806135d190615d25565b82136135e657806135e190615d25565b6135e8565b815b9150613613565b806135f990615d25565b821261360e578061360990615d25565b613610565b815b91505b5b600061364d876020015184878061363b575060008714801561363a575060008a60000151125b5b60018861364891906148d8565b61294d565b9050808361365b9190615ce2565b925082600b8960405161366e9190615ccb565b9081526020016040518091039020886020015160405161368e9190615ccb565b908152602001604051809103902060008282546136ab9190615a75565b9250508190555050505b95945050505050565b60008060005b846040015151811015613818576000856040015182815181106136ea576136e9614a2f565b5b6020026020010151602001519050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661380a57806005600060066000815480929190613761906150b2565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5080806001019150506136c4565b5060005b846040015151811015613a6d5760008560400151828151811061384257613841614a2f565b5b60200260200101519050600060018760400151516138609190614c0c565b8310156138985760648260000151876138799190615d6d565b6138839190615de5565b905080846138919190615a75565b93506138a7565b83866138a49190615ce2565b90505b60008113156139e2576138bf308360200151836122b1565b60076000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166139dd5781602001516005600060066000815480929190613930906150b2565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160076000846020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b613a5e565b806139ec90615d25565b6139f9836020015161124b565b1015613a4457613a0c826020015161124b565b81613a179190615a75565b85613a229190615a75565b9450613a3f826020015130613a3a856020015161124b565b6122b1565b613a5d565b613a5c82602001513083613a5790615d25565b6122b1565b5b5b5050808060010191505061381c565b505092915050565b8260028101928215613aa4579160200282015b82811115613aa3578235825591602001919060010190613a88565b5b509050613ab19190613ab5565b5090565b5b80821115613ace576000816000905550600101613ab6565b5090565b600081519050919050565b600082825260208201905092915050565b60005b83811015613b0c578082015181840152602081019050613af1565b60008484015250505050565b6000601f19601f8301169050919050565b6000613b3482613ad2565b613b3e8185613add565b9350613b4e818560208601613aee565b613b5781613b18565b840191505092915050565b60006020820190508181036000830152613b7c8184613b29565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613bc382613b98565b9050919050565b613bd381613bb8565b8114613bde57600080fd5b50565b600081359050613bf081613bca565b92915050565b6000819050919050565b613c0981613bf6565b8114613c1457600080fd5b50565b600081359050613c2681613c00565b92915050565b60008060408385031215613c4357613c42613b8e565b5b6000613c5185828601613be1565b9250506020613c6285828601613c17565b9150509250929050565b60008115159050919050565b613c8181613c6c565b82525050565b6000602082019050613c9c6000830184613c78565b92915050565b613cab81613bf6565b82525050565b6000602082019050613cc66000830184613ca2565b92915050565b600060208284031215613ce257613ce1613b8e565b5b6000613cf084828501613c17565b91505092915050565b600080600060608486031215613d1257613d11613b8e565b5b6000613d2086828701613be1565b9350506020613d3186828701613be1565b9250506040613d4286828701613c17565b9150509250925092565b613d5581613c6c565b8114613d6057600080fd5b50565b600081359050613d7281613d4c565b92915050565b600080600060608486031215613d9157613d90613b8e565b5b6000613d9f86828701613c17565b9350506020613db086828701613c17565b9250506040613dc186828701613d63565b9150509250925092565b600060ff82169050919050565b613de181613dcb565b82525050565b6000602082019050613dfc6000830184613dd8565b92915050565b613e0b81613bb8565b82525050565b6000602082019050613e266000830184613e02565b92915050565b600060208284031215613e4257613e41613b8e565b5b6000613e5084828501613be1565b91505092915050565b600080600060608486031215613e7257613e71613b8e565b5b6000613e8086828701613be1565b9350506020613e9186828701613c17565b9250506040613ea286828701613c17565b9150509250925092565b60008060008060808587031215613ec657613ec5613b8e565b5b6000613ed487828801613c17565b9450506020613ee587828801613be1565b9350506040613ef687828801613c17565b9250506060613f0787828801613d63565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112613f3857613f37613f13565b5b8235905067ffffffffffffffff811115613f5557613f54613f18565b5b602083019150836001820283011115613f7157613f70613f1d565b5b9250929050565b600081905082602060020282011115613f9457613f93613f1d565b5b92915050565b60008083601f840112613fb057613faf613f13565b5b8235905067ffffffffffffffff811115613fcd57613fcc613f18565b5b602083019150836001820283011115613fe957613fe8613f1d565b5b9250929050565b6000806000806000806000806000806101408b8d03121561401457614013613b8e565b5b60008b013567ffffffffffffffff81111561403257614031613b93565b5b61403e8d828e01613f22565b9a509a505060206140518d828e01613c17565b98505060406140628d828e01613f78565b97505060806140738d828e01613f78565b96505060c06140848d828e01613c17565b95505060e06140958d828e01613d63565b9450506101006140a78d828e01613d63565b9350506101208b013567ffffffffffffffff8111156140c9576140c8613b93565b5b6140d58d828e01613f9a565b92509250509295989b9194979a5092959850565b6140f281613bf6565b82525050565b600060029050919050565b600081905092915050565b6000819050919050565b600061412483836140e9565b60208301905092915050565b6000602082019050919050565b614146816140f8565b6141508184614103565b925061415b8261410e565b8060005b8381101561418c5781516141738782614118565b965061417e83614130565b92505060018101905061415f565b505050505050565b61419d81613c6c565b82525050565b60e0820160008201516141b960008501826140e9565b5060208201516141cc602085018261413d565b5060408201516141df606085018261413d565b5060608201516141f260a08501826140e9565b50608082015161420560c0850182614194565b50505050565b600081519050919050565b600082825260208201905092915050565b60006142328261420b565b61423c8185614216565b935061424c818560208601613aee565b61425581613b18565b840191505092915050565b600061024082019050614276600083018f613ca2565b8181036020830152614288818e613b29565b9050614297604083018d613e02565b6142a4606083018c613ca2565b6142b1608083018b613ca2565b6142be60a083018a6141a3565b6142cc610180830189613ca2565b6142da6101a0830188613ca2565b6142e86101c0830187613c78565b6142f66101e0830186613c78565b614304610200830185613c78565b8181036102208301526143178184614227565b90509d9c50505050505050505050505050565b6000806020838503121561434157614340613b8e565b5b600083013567ffffffffffffffff81111561435f5761435e613b93565b5b61436b85828601613f22565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6143ac81613bb8565b82525050565b6040820160008201516143c860008501826140e9565b5060208201516143db60208501826143a3565b50505050565b60006143ed83836143b2565b60408301905092915050565b6000602082019050919050565b600061441182614377565b61441b8185614382565b935061442683614393565b8060005b8381101561445757815161443e88826143e1565b9750614449836143f9565b92505060018101905061442a565b5085935050505092915050565b6000602082019050818103600083015261447e8184614406565b905092915050565b6000806040838503121561449d5761449c613b8e565b5b60006144ab85828601613be1565b92505060206144bc85828601613be1565b9150509250929050565b60008083601f8401126144dc576144db613f13565b5b8235905067ffffffffffffffff8111156144f9576144f8613f18565b5b60208301915083604082028301111561451557614514613f1d565b5b9250929050565b60008083601f84011261453257614531613f13565b5b8235905067ffffffffffffffff81111561454f5761454e613f18565b5b60208301915083602082028301111561456b5761456a613f1d565b5b9250929050565b6000806000806000806060878903121561458f5761458e613b8e565b5b600087013567ffffffffffffffff8111156145ad576145ac613b93565b5b6145b989828a016144c6565b9650965050602087013567ffffffffffffffff8111156145dc576145db613b93565b5b6145e889828a01613f22565b9450945050604087013567ffffffffffffffff81111561460b5761460a613b93565b5b61461789828a0161451c565b92509250509295509295509295565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61466382613b18565b810181811067ffffffffffffffff821117156146825761468161462b565b5b80604052505050565b6000614695613b84565b90506146a1828261465a565b919050565b600067ffffffffffffffff8211156146c1576146c061462b565b5b6146ca82613b18565b9050602081019050919050565b82818337600083830152505050565b60006146f96146f4846146a6565b61468b565b90508281526020810184848401111561471557614714614626565b5b6147208482856146d7565b509392505050565b600082601f83011261473d5761473c613f13565b5b813561474d8482602086016146e6565b91505092915050565b60006020828403121561476c5761476b613b8e565b5b600082013567ffffffffffffffff81111561478a57614789613b93565b5b61479684828501614728565b91505092915050565b600060608201905081810360008301526147b98186613b29565b90506147c86020830185613e02565b6147d56040830184613ca2565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061482457607f821691505b602082108103614837576148366147dd565b5b50919050565b7f506f6f6c20697320616c7265616479207265736f6c7665640000000000000000600082015250565b6000614873601883613add565b915061487e8261483d565b602082019050919050565b600060208201905081810360008301526148a281614866565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006148e382613bf6565b91506148ee83613bf6565b9250828201905080821115614906576149056148a9565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061494682613bf6565b915061495183613bf6565b9250826149615761496061490c565b5b828204905092915050565b600061497782613bf6565b915061498283613bf6565b9250826149925761499161490c565b5b828206905092915050565b7f506f6f6c20656e642074696d6520686173206e6f74207965742061727269766560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b60006149f9602183613add565b9150614a048261499d565b604082019050919050565b60006020820190508181036000830152614a28816149ec565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614a6982613bf6565b9150614a7483613bf6565b9250828202614a8281613bf6565b91508282048414831517614a9957614a986148a9565b5b5092915050565b6000606082019050614ab56000830186613ca2565b614ac26020830185613c78565b614acf6040830184613c78565b949350505050565b60008190508160005260206000209050919050565b60008154614af98161480c565b614b038186614216565b94506001821660008114614b1e5760018114614b3457614b67565b60ff198316865281151560200286019350614b67565b614b3d85614ad7565b60005b83811015614b5f57815481890152600182019150602081019050614b40565b808801955050505b50505092915050565b600060a082019050614b856000830188613c78565b614b926020830187613c78565b614b9f6040830186613ca2565b614bac6060830185613ca2565b8181036080830152614bbe8184614aec565b90509695505050505050565b600081519050614bd981613c00565b92915050565b600060208284031215614bf557614bf4613b8e565b5b6000614c0384828501614bca565b91505092915050565b6000614c1782613bf6565b9150614c2283613bf6565b9250828203905081811115614c3a57614c396148a9565b5b92915050565b7f524550207472616e73666572206973206e6f7420616c6c6f7765640000000000600082015250565b6000614c76601b83613add565b9150614c8182614c40565b602082019050919050565b60006020820190508181036000830152614ca581614c69565b9050919050565b6000606082019050614cc16000830186613e02565b614cce6020830185613ca2565b614cdb6040830184613ca2565b949350505050565b7f46656520697320726571756972656420746f20696e6974696174652076616c6960008201527f646174696f6e20706f6f6c000000000000000000000000000000000000000000602082015250565b6000614d3f602b83613add565b9150614d4a82614ce3565b604082019050919050565b60006020820190508181036000830152614d6e81614d32565b9050919050565b7f4475726174696f6e20697320746f6f2073686f72740000000000000000000000600082015250565b6000614dab601583613add565b9150614db682614d75565b602082019050919050565b60006020820190508181036000830152614dda81614d9e565b9050919050565b7f4475726174696f6e20697320746f6f206c6f6e67000000000000000000000000600082015250565b6000614e17601483613add565b9150614e2282614de1565b602082019050919050565b60006020820190508181036000830152614e4681614e0a565b9050919050565b7f51756f72756d2069732062656c6f77206d696e696d756d000000000000000000600082015250565b6000614e83601783613add565b9150614e8e82614e4d565b602082019050919050565b60006020820190508181036000830152614eb281614e76565b9050919050565b7f51756f72756d2069732067726561746572207468616e206f6e65000000000000600082015250565b6000614eef601a83613add565b9150614efa82614eb9565b602082019050919050565b60006020820190508181036000830152614f1e81614ee2565b9050919050565b7f57696e20726174696f2069732067726561746572207468616e206f6e65000000600082015250565b6000614f5b601d83613add565b9150614f6682614f25565b602082019050919050565b60006020820190508181036000830152614f8a81614f4e565b9050919050565b7f42696e64696e672070657263656e74206d757374206265203c3d203130300000600082015250565b6000614fc7601e83613add565b9150614fd282614f91565b602082019050919050565b60006020820190508181036000830152614ff681614fba565b9050919050565b600081905092915050565b60006150148385614ffd565b93506150218385846146d7565b82840190509392505050565b600061503a828486615008565b91508190509392505050565b7f54617267657420706f7374206e6f7420666f756e640000000000000000000000600082015250565b600061507c601583613add565b915061508782615046565b602082019050919050565b600060208201905081810360008301526150ab8161506f565b9050919050565b60006150bd82613bf6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036150ef576150ee6148a9565b5b600182019050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026151677fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261512a565b615171868361512a565b95508019841693508086168417925050509392505050565b6000819050919050565b60006151ae6151a96151a484613bf6565b615189565b613bf6565b9050919050565b6000819050919050565b6151c883615193565b6151dc6151d4826151b5565b848454615137565b825550505050565b600090565b6151f16151e4565b6151fc8184846151bf565b505050565b5b81811015615220576152156000826151e9565b600181019050615202565b5050565b601f8211156152655761523681615105565b61523f8461511a565b8101602085101561524e578190505b61526261525a8561511a565b830182615201565b50505b505050565b600082821c905092915050565b60006152886000198460080261526a565b1980831691505092915050565b60006152a18383615277565b9150826002028217905092915050565b6152bb83836150fa565b67ffffffffffffffff8111156152d4576152d361462b565b5b6152de825461480c565b6152e9828285615224565b6000601f8311600181146153185760008415615306578287013590505b6153108582615295565b865550615378565b601f19841661532686615105565b60005b8281101561534e57848901358255600182019150602085019450602081019050615329565b8683101561536b5784890135615367601f891682615277565b8355505b6001600288020188555050505b50505050505050565b600082905092915050565b601f8211156153cd5761539e81614ad7565b6153a78461511a565b810160208510156153b6578190505b6153ca6153c28561511a565b830182615201565b50505b505050565b6153dc8383615381565b67ffffffffffffffff8111156153f5576153f461462b565b5b6153ff825461480c565b61540a82828561538c565b6000601f8311600181146154395760008415615427578287013590505b6154318582615295565b865550615499565b601f19841661544786614ad7565b60005b8281101561546f5784890135825560018201915060208501945060208101905061544a565b8683101561548c5784890135615488601f891682615277565b8355505b6001600288020188555050505b50505050505050565b7f506f7374206d75737420696e636c756465206174206c65617374206f6e65206160008201527f7574686f72000000000000000000000000000000000000000000000000000000602082015250565b60006154fe602583613add565b9150615509826154a2565b604082019050919050565b6000602082019050818103600083015261552d816154f1565b9050919050565b7f4120706f73742077697468207468697320636f6e74656e74496420616c72656160008201527f6479206578697374730000000000000000000000000000000000000000000000602082015250565b6000615590602983613add565b915061559b82615534565b604082019050919050565b600060208201905081810360008301526155bf81615583565b9050919050565b600081356155d381613c00565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff615615846155dc565b9350801983169250808416831791505092915050565b61563482615193565b615647615640826151b5565b83546155e9565b8255505050565b6000813561565b81613bca565b80915050919050565b600073ffffffffffffffffffffffffffffffffffffffff615684846155dc565b9350801983169250808416831791505092915050565b60006156b56156b06156ab84613b98565b615189565b613b98565b9050919050565b60006156c78261569a565b9050919050565b60006156d9826156bc565b9050919050565b6000819050919050565b6156f3826156ce565b6157066156ff826156e0565b8354615664565b8255505050565b60008101600083018061571f816155c6565b905061572b818461562b565b5050506001810160208301806157408161564e565b905061574c81846156ea565b5050505050565b61575d828261570d565b5050565b7f417574686f722077656967687473206d7573742073756d20746f203130302500600082015250565b6000615797601f83613add565b91506157a282615761565b602082019050919050565b600060208201905081810360008301526157c68161578a565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126157f8576157f76157cd565b5b80830191505092915050565b6000819050919050565b61581781615804565b811461582257600080fd5b50565b600081356158328161580e565b80915050919050565b600061585661585161584c84615804565b615189565b615804565b9050919050565b6000819050919050565b6158708261583b565b61588361587c8261585d565b83546155e9565b8255505050565b600080833560016020038436030381126158a7576158a66157cd565b5b80840192508235915067ffffffffffffffff8211156158c9576158c86157d2565b5b6020830192506001820236038313156158e5576158e46157d7565b5b509250929050565b6158f88383836152b1565b505050565b60008101600083018061590f81615825565b905061591b8184615867565b5050506001810160208301615930818561588a565b61593b8183866158ed565b505050505050565b61594d82826158fd565b5050565b7f45616368206369746174696f6e20776569676874206d757374206265203e3d2060008201527f2d31303000000000000000000000000000000000000000000000000000000000602082015250565b60006159ad602483613add565b91506159b882615951565b604082019050919050565b600060208201905081810360008301526159dc816159a0565b9050919050565b7f45616368206369746174696f6e20776569676874206d757374206265203c3d2060008201527f3130300000000000000000000000000000000000000000000000000000000000602082015250565b6000615a3f602383613add565b9150615a4a826159e3565b604082019050919050565b60006020820190508181036000830152615a6e81615a32565b9050919050565b6000615a8082615804565b9150615a8b83615804565b925082820190508281121560008312168382126000841215161715615ab357615ab26148a9565b5b92915050565b7f53756d206f6620706f736974697665206369746174696f6e73206d757374206260008201527f65203c3d20313030000000000000000000000000000000000000000000000000602082015250565b6000615b15602883613add565b9150615b2082615ab9565b604082019050919050565b60006020820190508181036000830152615b4481615b08565b9050919050565b7f53756d206f66206e65676174697665206369746174696f6e73206d757374206260008201527f65203e3d202d3130300000000000000000000000000000000000000000000000602082015250565b6000615ba7602983613add565b9150615bb282615b4b565b604082019050919050565b60006020820190508181036000830152615bd681615b9a565b9050919050565b6000615be98385613add565b9350615bf68385846146d7565b615bff83613b18565b840190509392505050565b60006020820190508181036000830152615c25818486615bdd565b90509392505050565b7f506f6f6c20656e642074696d6520686173207061737365640000000000000000600082015250565b6000615c64601883613add565b9150615c6f82615c2e565b602082019050919050565b60006020820190508181036000830152615c9381615c57565b9050919050565b6000615ca582613ad2565b615caf8185614ffd565b9350615cbf818560208601613aee565b80840191505092915050565b6000615cd78284615c9a565b915081905092915050565b6000615ced82615804565b9150615cf883615804565b9250828203905081811260008412168282136000851215161715615d1f57615d1e6148a9565b5b92915050565b6000615d3082615804565b91507f80000000000000000000000000000000000000000000000000000000000000008203615d6257615d616148a9565b5b816000039050919050565b6000615d7882615804565b9150615d8383615804565b9250828202615d9181615804565b91507f80000000000000000000000000000000000000000000000000000000000000008414600084121615615dc957615dc86148a9565b5b8282058414831517615dde57615ddd6148a9565b5b5092915050565b6000615df082615804565b9150615dfb83615804565b925082615e0b57615e0a61490c565b5b600160000383147f800000000000000000000000000000000000000000000000000000000000000083141615615e4457615e436148a9565b5b828205905092915050565b7f4c65616368696e672066726f6d20696e63696e657261746f7220697320666f7260008201527f62696464656e0000000000000000000000000000000000000000000000000000602082015250565b6000615eab602683613add565b9150615eb682615e4f565b604082019050919050565b60006020820190508181036000830152615eda81615e9e565b905091905056fea264697066735822122048c08bdaea49553e2208fbc1bf2e1fde118c383db153ba6213c58f673267d60964736f6c63430008180033", - "deployedBytecode": "0x60806040526004361061014b5760003560e01c806370a08231116100b6578063a23362791161006f578063a2336279146104e7578063a9059cbb1461052f578063da66863a1461056c578063dd62ed3e146105a9578063e5b4d827146105e6578063f8300fca1461060f5761014b565b806370a08231146103ac57806388380274146103e957806395d89b4114610426578063975762b3146104515780639fbe7c731461047a578063a230c524146104aa5761014b565b806323b872dd1161010857806323b872dd146102765780632d17c062146102b3578063313ce567146102dc57806350cde8ef146103075780635daf08ca14610344578063642b5bfb146103815761014b565b806306fdde0314610150578063095ea7b31461017b57806311aee380146101b857806317906c2e146101e357806317c182171461020e57806318160ddd1461024b575b600080fd5b34801561015c57600080fd5b5061016561064e565b6040516101729190613b62565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190613c2c565b6106e0565b6040516101af9190613c87565b60405180910390f35b3480156101c457600080fd5b506101cd610703565b6040516101da9190613cb1565b60405180910390f35b3480156101ef57600080fd5b506101f8610709565b6040516102059190613cb1565b60405180910390f35b34801561021a57600080fd5b5061023560048036038101906102309190613ccc565b61070f565b6040516102429190613c87565b60405180910390f35b34801561025757600080fd5b506102606110ed565b60405161026d9190613cb1565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190613cf9565b6110f7565b6040516102aa9190613c87565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d59190613d78565b611134565b005b3480156102e857600080fd5b506102f161115d565b6040516102fe9190613de7565b60405180910390f35b34801561031357600080fd5b5061032e60048036038101906103299190613ccc565b611166565b60405161033b9190613b62565b60405180910390f35b34801561035057600080fd5b5061036b60048036038101906103669190613ccc565b611212565b6040516103789190613e11565b60405180910390f35b34801561038d57600080fd5b50610396611245565b6040516103a39190613cb1565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce9190613e2c565b61124b565b6040516103e09190613cb1565b60405180910390f35b3480156103f557600080fd5b50610410600480360381019061040b9190613e59565b611293565b60405161041d9190613c87565b60405180910390f35b34801561043257600080fd5b5061043b61131a565b6040516104489190613b62565b60405180910390f35b34801561045d57600080fd5b5061047860048036038101906104739190613eac565b6113ac565b005b610494600480360381019061048f9190613ff0565b6113e1565b6040516104a19190613cb1565b60405180910390f35b3480156104b657600080fd5b506104d160048036038101906104cc9190613e2c565b61189b565b6040516104de9190613c87565b60405180910390f35b3480156104f357600080fd5b5061050e60048036038101906105099190613ccc565b6118bb565b6040516105269c9b9a99989796959493929190614260565b60405180910390f35b34801561053b57600080fd5b5061055660048036038101906105519190613c2c565b611b35565b6040516105639190613c87565b60405180910390f35b34801561057857600080fd5b50610593600480360381019061058e919061432a565b611b72565b6040516105a09190614464565b60405180910390f35b3480156105b557600080fd5b506105d060048036038101906105cb9190614486565b611c5b565b6040516105dd9190613cb1565b60405180910390f35b3480156105f257600080fd5b5061060d60048036038101906106089190614572565b611ce2565b005b34801561061b57600080fd5b5061063660048036038101906106319190614756565b6121af565b6040516106459392919061479f565b60405180910390f35b60606003805461065d9061480c565b80601f01602080910402602001604051908101604052809291908181526020018280546106899061480c565b80156106d65780601f106106ab576101008083540402835291602001916106d6565b820191906000526020600020905b8154815290600101906020018083116106b957829003601f168201915b5050505050905090565b6000806106eb612297565b90506106f881858561229f565b600191505092915050565b60065481565b600a5481565b600080600d600084815260200190815260200160002090506000151581600f0160009054906101000a900460ff1615151461077f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077690614889565b60405180910390fd5b600080600080600090505b84600501548110156107fb5784600401600082815260200190815260200160002091508160010160009054906101000a900460ff16156107db578160020154846107d491906148d8565b93506107ee565b8160020154836107eb91906148d8565b92505b808060010191505061078a565b506002846003015461080d919061493b565b8361081891906148d8565b92506002846003015461082b919061493b565b8261083691906148d8565b915060006002856003015461084b919061496c565b146108605760018361085d91906148d8565b92505b83600e015442118061088357506108756110ed565b828461088191906148d8565b145b6108c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b990614a0f565b60405180910390fd5b836006016001016000600281106108dc576108db614a2f565b5b01546108e66110ed565b6108f09190614a5e565b82846108fc91906148d8565b8560060160010160016002811061091657610915614a2f565b5b01546109229190614a5e565b11610a5257600184600f0160006101000a81548160ff0219169083151502179055507fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de818660008060405161097893929190614aa0565b60405180910390a183600f0160029054906101000a900460ff1615610a45578360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d58660008686896010016040518663ffffffff1660e01b8152600401610a00959493929190614b70565b6020604051808303816000875af1158015610a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a439190614bdf565b505b60009450505050506110e8565b83600601600301600060028110610a6c57610a6b614a2f565b5b01548284610a7a91906148d8565b610a849190614a5e565b84600601600301600160028110610a9e57610a9d614a2f565b5b015484610aab9190614a5e565b10159450600184600f0160006101000a81548160ff0219169083151502179055508484600f0160016101000a81548160ff0219169083151502179055507fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de8186866001604051610b1c93929190614aa0565b60405180910390a1600085610b315782610b33565b835b905060008060005b8760050154811015610c3b5787600401600082815260200190815260200160002094508460010160009054906101000a900460ff16151589151514610c2e576000606489600601600501548760020154610b959190614a5e565b610b9f919061493b565b90508860060160060160009054906101000a900460ff1615610bfd57610bea8660030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630836122b1565b8084610bf691906148d8565b9350610c2c565b610c2b8660030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826124d6565b5b505b8080600101915050610b3b565b508715610e395760028760030154610c53919061493b565b82610c5e91906148d8565b915060005b8760050154811015610d495787600401600082815260200190815260200160002094508760060160060160009054906101000a900460ff168015610cbb57508460010160009054906101000a900460ff161515891515145b15610d3c5760006064896006016005015486886002015487610cdd9190614a5e565b610ce7919061493b565b610cf19190614a5e565b610cfb919061493b565b90508083610d0991906148d8565b9250610d3a308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836122b1565b505b8080600101915050610c63565b5060008183610d589190614c0c565b9050600060028960030154610d6d919061496c565b14610d8257600181610d7f91906148d8565b90505b610e33886001018054610d949061480c565b80601f0160208091040260200160405190810160405280929190818152602001828054610dc09061480c565b8015610e0d5780601f10610de257610100808354040283529160200191610e0d565b820191906000526020600020905b815481529060010190602001808311610df057829003601f168201915b50505050508260028b60030154610e24919061493b565b610e2e91906148d8565b612558565b50610f51565b866003015482610e4991906148d8565b915060005b8760050154811015610f4f5787600401600082815260200190815260200160002094508760060160060160009054906101000a900460ff168015610ea657508460010160009054906101000a900460ff161515891515145b15610f425760006064896006016005015460028b60030154610ec8919061493b565b87610ed39190614c0c565b886002015487610ee39190614a5e565b610eed919061493b565b610ef79190614a5e565b610f01919061493b565b90508083610f0f91906148d8565b9250610f40308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836122b1565b505b8080600101915050610e4e565b505b60005b60065481101561101a5760006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000610fa06110ed565b610fa98361124b565b8b600d0154610fb89190614a5e565b610fc2919061493b565b90508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561100a573d6000803e3d6000fd5b5050508080600101915050610f54565b5086600f0160029054906101000a900460ff16156110e0578660020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d589600189898c6010016040518663ffffffff1660e01b815260040161109b959493929190614b70565b6020604051808303816000875af11580156110ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110de9190614bdf565b505b505050505050505b919050565b6000600254905090565b60006040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112b90614c8c565b60405180910390fd5b6000600d600085815260200190815260200160002090506111578133858561256a565b50505050565b60006009905090565b6009818154811061117657600080fd5b9060005260206000200160009150905080546111919061480c565b80601f01602080910402602001604051908101604052809291908181526020018280546111bd9061480c565b801561120a5780601f106111df5761010080835404028352916020019161120a565b820191906000526020600020905b8154815290600101906020018083116111ed57829003601f168201915b505050505081565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006112a033858561229f565b8373ffffffffffffffffffffffffffffffffffffffff1663216ed6ad3385856040518463ffffffff1660e01b81526004016112dd93929190614cac565b600060405180830381600087803b1580156112f757600080fd5b505af115801561130b573d6000803e3d6000fd5b50505050600190509392505050565b6060600480546113299061480c565b80601f01602080910402602001604051908101604052809291908181526020018280546113559061480c565b80156113a25780601f10611377576101008083540402835291602001916113a2565b820191906000526020600020905b81548152906001019060200180831161138557829003601f168201915b5050505050905090565b6000600d600086815260200190815260200160002090506113ce843385612660565b6113da8185858561256a565b5050505050565b6000803411611425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141c90614d55565b60405180910390fd5b6001891015611469576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146090614dc1565b60405180910390fd5b651cae8c13e0008911156114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a990614e2d565b60405180910390fd5b876001600281106114c6576114c5614a2f565b5b6020020135600f6000600281106114e0576114df614a2f565b5b01546114ec9190614a5e565b88600060028110611500576114ff614a2f565b5b6020020135600f60016002811061151a57611519614a2f565b5b01546115269190614a5e565b1015611567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155e90614e99565b60405180910390fd5b8760016002811061157b5761157a614a2f565b5b60200201358860006002811061159457611593614a2f565b5b602002013511156115da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d190614f05565b60405180910390fd5b866001600281106115ee576115ed614a2f565b5b60200201358760006002811061160757611606614a2f565b5b6020020135111561164d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164490614f71565b60405180910390fd5b6064861115611691576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168890614fdd565b60405180910390fd5b600060088c8c6040516116a592919061502d565b9081526020016040518091039020905060008160020180549050036116ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f690615092565b60405180910390fd5b600e6000815480929190611712906150b2565b9190505591506000600d60008481526020019081526020016000209050338160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508c8c8260010191826117859291906152b1565b503481600d018190555089816006016001019060026117a5929190613a75565b5088816006016003019060026117bc929190613a75565b50878160060160050181905550868160060160060160006101000a81548160ff0219169083151502179055508a81600601600001819055508a4261180091906148d8565b81600e01819055508281600001819055508581600f0160026101000a81548160ff02191690831515021790555084848260100191826118409291906153d2565b5061184b30346126f4565b3481600301819055507f6e5c598b821d7fa8550e5fea58ab6e27c59e1cbe1df75a8591aa0c453b49e10a836040516118839190613cb1565b60405180910390a150509a9950505050505050505050565b60076020528060005260406000206000915054906101000a900460ff1681565b600d6020528060005260406000206000915090508060000154908060010180546118e49061480c565b80601f01602080910402602001604051908101604052809291908181526020018280546119109061480c565b801561195d5780601f106119325761010080835404028352916020019161195d565b820191906000526020600020905b81548152906001019060200180831161194057829003601f168201915b5050505050908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003015490806005015490806006016040518060a001604052908160008201548152602001600182016002806020026040519081016040528092919082600280156119ea576020028201915b8154815260200190600101908083116119d6575b5050505050815260200160038201600280602002604051908101604052809291908260028015611a2f576020028201915b815481526020019060010190808311611a1b575b50505050508152602001600582015481526020016006820160009054906101000a900460ff1615151515815250509080600d01549080600e01549080600f0160009054906101000a900460ff169080600f0160019054906101000a900460ff169080600f0160029054906101000a900460ff1690806010018054611ab29061480c565b80601f0160208091040260200160405190810160405280929190818152602001828054611ade9061480c565b8015611b2b5780601f10611b0057610100808354040283529160200191611b2b565b820191906000526020600020905b815481529060010190602001808311611b0e57829003601f168201915b505050505090508c565b60006040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6990614c8c565b60405180910390fd5b6060600060088484604051611b8892919061502d565b9081526020016040518091039020905080600201805480602002602001604051908101604052809291908181526020016000905b82821015611c4e5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190611bbc565b5050505091505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008686905011611d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1f90615514565b60405180910390fd5b600a6000815480929190611d3b906150b2565b91905055506009848490918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182611d7d9291906152b1565b50600060088585604051611d9292919061502d565b908152602001604051809103902090506000816002018054905014611dec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de3906155a6565b60405180910390fd5b338160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508484826000019182611e429291906152b1565b50600080600090505b88889050811015611ee157888882818110611e6957611e68614a2f565b5b9050604002016000013582611e7e91906148d8565b915082600201898983818110611e9757611e96614a2f565b5b90506040020190806001815401808255809150506001900390600052602060002090600202016000909190919091508181611ed29190615753565b50508080600101915050611e4b565b5060648114611f25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1c906157ad565b60405180910390fd5b60005b84849050811015611fa05782600301858583818110611f4a57611f49614a2f565b5b9050602002810190611f5c91906157dc565b90806001815401808255809150506001900390600052602060002090600202016000909190919091508181611f919190615943565b50508080600101915050611f28565b5060008060005b84600301805490508110156120c2576000856003018281548110611fce57611fcd614a2f565b5b90600052602060002090600202016000015490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c811215612045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203c906159c3565b60405180910390fd5b6064811315612089576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208090615a55565b60405180910390fd5b60008113156120a557808461209e9190615a75565b93506120b4565b80836120b19190615a75565b92505b508080600101915050611fa7565b506064821315612107576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fe90615b2b565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c81121561216a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216190615bbd565b60405180910390fd5b7fbd6277baf8ced6ab6543a1aef164635fc2bde1ba962d39d8a0fd81a5af249727888860405161219b929190615c0a565b60405180910390a150505050505050505050565b6008818051602081018201805184825260208301602085012081835280955050505050506000915090508060000180546121e89061480c565b80601f01602080910402602001604051908101604052809291908181526020018280546122149061480c565b80156122615780601f1061223657610100808354040283529160200191612261565b820191906000526020600020905b81548152906001019060200180831161224457829003601f168201915b5050505050908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040154905083565b600033905090565b6122ac8383836001612776565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123035780600260008282546122f791906148d8565b925050819055506123d6565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561238f578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161238693929190614cac565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361241f578060026000828254039250508190555061246c565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124c99190613cb1565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125485760006040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161253f9190613e11565b60405180910390fd5b612554826000836122b1565b5050565b612565828260008061294d565b505050565b83600e01544211156125b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a890615c7a565b60405180910390fd5b60008460050160008154809291906125c8906150b2565b91905055905060008560040160008381526020019081526020016000209050848160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828160010160006101000a81548160ff021916908315150217905550838160020181905550818160000181905550505050505050565b600061266c8484611c5b565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146126ee57818110156126de578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016126d593929190614cac565b60405180910390fd5b6126ed84848484036000612776565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127665760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161275d9190613e11565b60405180910390fd5b612772600083836122b1565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036127e85760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016127df9190613e11565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361285a5760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016128519190613e11565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015612947578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161293e9190613cb1565b60405180910390a35b50505050565b6000600c548210612960578390506134ed565b60006008866040516129729190615ccb565b90815260200160405180910390209050600081600201805490500361299a57849150506134ed565b60005b8160030180549050811015612ace5760008260030182815481106129c4576129c3614a2f565b5b9060005260206000209060020201600001541215612ac157612ab3878360030183815481106129f6576129f5614a2f565b5b906000526020600020906002020160405180604001604052908160008201548152602001600182018054612a299061480c565b80601f0160208091040260200160405190810160405280929190818152602001828054612a559061480c565b8015612aa25780601f10612a7757610100808354040283529160200191612aa2565b820191906000526020600020905b815481529060010190602001808311612a8557829003601f168201915b5050505050815250508888886134f5565b86612abe9190615ce2565b95505b808060010191505061299d565b5060005b8160030180549050811015612c03576000826003018281548110612af957612af8614a2f565b5b9060005260206000209060020201600001541315612bf657612be887836003018381548110612b2b57612b2a614a2f565b5b906000526020600020906002020160405180604001604052908160008201548152602001600182018054612b5e9061480c565b80601f0160208091040260200160405190810160405280929190818152602001828054612b8a9061480c565b8015612bd75780601f10612bac57610100808354040283529160200191612bd7565b820191906000526020600020905b815481529060010190602001808311612bba57829003601f168201915b5050505050815250508888886134f5565b86612bf39190615ce2565b95505b8080600101915050612ad2565b506000851315612eef57612ece816040518060a0016040529081600082018054612c2c9061480c565b80601f0160208091040260200160405190810160405280929190818152602001828054612c589061480c565b8015612ca55780601f10612c7a57610100808354040283529160200191612ca5565b820191906000526020600020905b815481529060010190602001808311612c8857829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015612dbb5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190612d29565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015612eb6578382906000526020600020906002020160405180604001604052908160008201548152602001600182018054612e259061480c565b80601f0160208091040260200160405190810160405280929190818152602001828054612e519061480c565b8015612e9e5780601f10612e7357610100808354040283529160200191612e9e565b820191906000526020600020905b815481529060010190602001808311612e8157829003601f168201915b50505050508152505081526020019060010190612de8565b505050508152602001600482015481525050866136be565b5084816004016000828254612ee391906148d8565b925050819055506134eb565b6000858260040154612f019190615a75565b126131f2576131c7816040518060a0016040529081600082018054612f259061480c565b80601f0160208091040260200160405190810160405280929190818152602001828054612f519061480c565b8015612f9e5780601f10612f7357610100808354040283529160200191612f9e565b820191906000526020600020905b815481529060010190602001808311612f8157829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b828210156130b45783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190613022565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156131af57838290600052602060002090600202016040518060400160405290816000820154815260200160018201805461311e9061480c565b80601f016020809104026020016040519081016040528092919081815260200182805461314a9061480c565b80156131975780601f1061316c57610100808354040283529160200191613197565b820191906000526020600020905b81548152906001019060200180831161317a57829003601f168201915b505050505081525050815260200190600101906130e1565b505050508152602001600482015481525050866136be565b9150846131d390615d25565b8160040160008282546131e69190614c0c565b925050819055506134ea565b8481600401546132029190615a75565b91506134d2816040518060a00160405290816000820180546132239061480c565b80601f016020809104026020016040519081016040528092919081815260200182805461324f9061480c565b801561329c5780601f106132715761010080835404028352916020019161329c565b820191906000526020600020905b81548152906001019060200180831161327f57829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b828210156133b25783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190613320565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156134ad57838290600052602060002090600202016040518060400160405290816000820154815260200160018201805461341c9061480c565b80601f01602080910402602001604051908101604052809291908181526020018280546134489061480c565b80156134955780601f1061346a57610100808354040283529160200191613495565b820191906000526020600020905b81548152906001019060200180831161347857829003601f168201915b505050505081525050815260200190600101906133df565b50505050815260200160048201548152505082600401546134cd90615d25565b6136be565b826134dd9190615a75565b9150600081600401819055505b5b505b949350505050565b600060648560000151856135099190615d6d565b6135139190615de5565b9050600085602001515103613575576000811215613566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161355d90615ec1565b60405180910390fd5b61357030826124d6565b6136b5565b6000600b876040516135879190615ccb565b908152602001604051809103902086602001516040516135a79190615ccb565b908152602001604051809103902054905083156136145760008212156135ef57806135d190615d25565b82136135e657806135e190615d25565b6135e8565b815b9150613613565b806135f990615d25565b821261360e578061360990615d25565b613610565b815b91505b5b600061364d876020015184878061363b575060008714801561363a575060008a60000151125b5b60018861364891906148d8565b61294d565b9050808361365b9190615ce2565b925082600b8960405161366e9190615ccb565b9081526020016040518091039020886020015160405161368e9190615ccb565b908152602001604051809103902060008282546136ab9190615a75565b9250508190555050505b95945050505050565b60008060005b846040015151811015613818576000856040015182815181106136ea576136e9614a2f565b5b6020026020010151602001519050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661380a57806005600060066000815480929190613761906150b2565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5080806001019150506136c4565b5060005b846040015151811015613a6d5760008560400151828151811061384257613841614a2f565b5b60200260200101519050600060018760400151516138609190614c0c565b8310156138985760648260000151876138799190615d6d565b6138839190615de5565b905080846138919190615a75565b93506138a7565b83866138a49190615ce2565b90505b60008113156139e2576138bf308360200151836122b1565b60076000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166139dd5781602001516005600060066000815480929190613930906150b2565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160076000846020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b613a5e565b806139ec90615d25565b6139f9836020015161124b565b1015613a4457613a0c826020015161124b565b81613a179190615a75565b85613a229190615a75565b9450613a3f826020015130613a3a856020015161124b565b6122b1565b613a5d565b613a5c82602001513083613a5790615d25565b6122b1565b5b5b5050808060010191505061381c565b505092915050565b8260028101928215613aa4579160200282015b82811115613aa3578235825591602001919060010190613a88565b5b509050613ab19190613ab5565b5090565b5b80821115613ace576000816000905550600101613ab6565b5090565b600081519050919050565b600082825260208201905092915050565b60005b83811015613b0c578082015181840152602081019050613af1565b60008484015250505050565b6000601f19601f8301169050919050565b6000613b3482613ad2565b613b3e8185613add565b9350613b4e818560208601613aee565b613b5781613b18565b840191505092915050565b60006020820190508181036000830152613b7c8184613b29565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613bc382613b98565b9050919050565b613bd381613bb8565b8114613bde57600080fd5b50565b600081359050613bf081613bca565b92915050565b6000819050919050565b613c0981613bf6565b8114613c1457600080fd5b50565b600081359050613c2681613c00565b92915050565b60008060408385031215613c4357613c42613b8e565b5b6000613c5185828601613be1565b9250506020613c6285828601613c17565b9150509250929050565b60008115159050919050565b613c8181613c6c565b82525050565b6000602082019050613c9c6000830184613c78565b92915050565b613cab81613bf6565b82525050565b6000602082019050613cc66000830184613ca2565b92915050565b600060208284031215613ce257613ce1613b8e565b5b6000613cf084828501613c17565b91505092915050565b600080600060608486031215613d1257613d11613b8e565b5b6000613d2086828701613be1565b9350506020613d3186828701613be1565b9250506040613d4286828701613c17565b9150509250925092565b613d5581613c6c565b8114613d6057600080fd5b50565b600081359050613d7281613d4c565b92915050565b600080600060608486031215613d9157613d90613b8e565b5b6000613d9f86828701613c17565b9350506020613db086828701613c17565b9250506040613dc186828701613d63565b9150509250925092565b600060ff82169050919050565b613de181613dcb565b82525050565b6000602082019050613dfc6000830184613dd8565b92915050565b613e0b81613bb8565b82525050565b6000602082019050613e266000830184613e02565b92915050565b600060208284031215613e4257613e41613b8e565b5b6000613e5084828501613be1565b91505092915050565b600080600060608486031215613e7257613e71613b8e565b5b6000613e8086828701613be1565b9350506020613e9186828701613c17565b9250506040613ea286828701613c17565b9150509250925092565b60008060008060808587031215613ec657613ec5613b8e565b5b6000613ed487828801613c17565b9450506020613ee587828801613be1565b9350506040613ef687828801613c17565b9250506060613f0787828801613d63565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112613f3857613f37613f13565b5b8235905067ffffffffffffffff811115613f5557613f54613f18565b5b602083019150836001820283011115613f7157613f70613f1d565b5b9250929050565b600081905082602060020282011115613f9457613f93613f1d565b5b92915050565b60008083601f840112613fb057613faf613f13565b5b8235905067ffffffffffffffff811115613fcd57613fcc613f18565b5b602083019150836001820283011115613fe957613fe8613f1d565b5b9250929050565b6000806000806000806000806000806101408b8d03121561401457614013613b8e565b5b60008b013567ffffffffffffffff81111561403257614031613b93565b5b61403e8d828e01613f22565b9a509a505060206140518d828e01613c17565b98505060406140628d828e01613f78565b97505060806140738d828e01613f78565b96505060c06140848d828e01613c17565b95505060e06140958d828e01613d63565b9450506101006140a78d828e01613d63565b9350506101208b013567ffffffffffffffff8111156140c9576140c8613b93565b5b6140d58d828e01613f9a565b92509250509295989b9194979a5092959850565b6140f281613bf6565b82525050565b600060029050919050565b600081905092915050565b6000819050919050565b600061412483836140e9565b60208301905092915050565b6000602082019050919050565b614146816140f8565b6141508184614103565b925061415b8261410e565b8060005b8381101561418c5781516141738782614118565b965061417e83614130565b92505060018101905061415f565b505050505050565b61419d81613c6c565b82525050565b60e0820160008201516141b960008501826140e9565b5060208201516141cc602085018261413d565b5060408201516141df606085018261413d565b5060608201516141f260a08501826140e9565b50608082015161420560c0850182614194565b50505050565b600081519050919050565b600082825260208201905092915050565b60006142328261420b565b61423c8185614216565b935061424c818560208601613aee565b61425581613b18565b840191505092915050565b600061024082019050614276600083018f613ca2565b8181036020830152614288818e613b29565b9050614297604083018d613e02565b6142a4606083018c613ca2565b6142b1608083018b613ca2565b6142be60a083018a6141a3565b6142cc610180830189613ca2565b6142da6101a0830188613ca2565b6142e86101c0830187613c78565b6142f66101e0830186613c78565b614304610200830185613c78565b8181036102208301526143178184614227565b90509d9c50505050505050505050505050565b6000806020838503121561434157614340613b8e565b5b600083013567ffffffffffffffff81111561435f5761435e613b93565b5b61436b85828601613f22565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6143ac81613bb8565b82525050565b6040820160008201516143c860008501826140e9565b5060208201516143db60208501826143a3565b50505050565b60006143ed83836143b2565b60408301905092915050565b6000602082019050919050565b600061441182614377565b61441b8185614382565b935061442683614393565b8060005b8381101561445757815161443e88826143e1565b9750614449836143f9565b92505060018101905061442a565b5085935050505092915050565b6000602082019050818103600083015261447e8184614406565b905092915050565b6000806040838503121561449d5761449c613b8e565b5b60006144ab85828601613be1565b92505060206144bc85828601613be1565b9150509250929050565b60008083601f8401126144dc576144db613f13565b5b8235905067ffffffffffffffff8111156144f9576144f8613f18565b5b60208301915083604082028301111561451557614514613f1d565b5b9250929050565b60008083601f84011261453257614531613f13565b5b8235905067ffffffffffffffff81111561454f5761454e613f18565b5b60208301915083602082028301111561456b5761456a613f1d565b5b9250929050565b6000806000806000806060878903121561458f5761458e613b8e565b5b600087013567ffffffffffffffff8111156145ad576145ac613b93565b5b6145b989828a016144c6565b9650965050602087013567ffffffffffffffff8111156145dc576145db613b93565b5b6145e889828a01613f22565b9450945050604087013567ffffffffffffffff81111561460b5761460a613b93565b5b61461789828a0161451c565b92509250509295509295509295565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61466382613b18565b810181811067ffffffffffffffff821117156146825761468161462b565b5b80604052505050565b6000614695613b84565b90506146a1828261465a565b919050565b600067ffffffffffffffff8211156146c1576146c061462b565b5b6146ca82613b18565b9050602081019050919050565b82818337600083830152505050565b60006146f96146f4846146a6565b61468b565b90508281526020810184848401111561471557614714614626565b5b6147208482856146d7565b509392505050565b600082601f83011261473d5761473c613f13565b5b813561474d8482602086016146e6565b91505092915050565b60006020828403121561476c5761476b613b8e565b5b600082013567ffffffffffffffff81111561478a57614789613b93565b5b61479684828501614728565b91505092915050565b600060608201905081810360008301526147b98186613b29565b90506147c86020830185613e02565b6147d56040830184613ca2565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061482457607f821691505b602082108103614837576148366147dd565b5b50919050565b7f506f6f6c20697320616c7265616479207265736f6c7665640000000000000000600082015250565b6000614873601883613add565b915061487e8261483d565b602082019050919050565b600060208201905081810360008301526148a281614866565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006148e382613bf6565b91506148ee83613bf6565b9250828201905080821115614906576149056148a9565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061494682613bf6565b915061495183613bf6565b9250826149615761496061490c565b5b828204905092915050565b600061497782613bf6565b915061498283613bf6565b9250826149925761499161490c565b5b828206905092915050565b7f506f6f6c20656e642074696d6520686173206e6f74207965742061727269766560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b60006149f9602183613add565b9150614a048261499d565b604082019050919050565b60006020820190508181036000830152614a28816149ec565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614a6982613bf6565b9150614a7483613bf6565b9250828202614a8281613bf6565b91508282048414831517614a9957614a986148a9565b5b5092915050565b6000606082019050614ab56000830186613ca2565b614ac26020830185613c78565b614acf6040830184613c78565b949350505050565b60008190508160005260206000209050919050565b60008154614af98161480c565b614b038186614216565b94506001821660008114614b1e5760018114614b3457614b67565b60ff198316865281151560200286019350614b67565b614b3d85614ad7565b60005b83811015614b5f57815481890152600182019150602081019050614b40565b808801955050505b50505092915050565b600060a082019050614b856000830188613c78565b614b926020830187613c78565b614b9f6040830186613ca2565b614bac6060830185613ca2565b8181036080830152614bbe8184614aec565b90509695505050505050565b600081519050614bd981613c00565b92915050565b600060208284031215614bf557614bf4613b8e565b5b6000614c0384828501614bca565b91505092915050565b6000614c1782613bf6565b9150614c2283613bf6565b9250828203905081811115614c3a57614c396148a9565b5b92915050565b7f524550207472616e73666572206973206e6f7420616c6c6f7765640000000000600082015250565b6000614c76601b83613add565b9150614c8182614c40565b602082019050919050565b60006020820190508181036000830152614ca581614c69565b9050919050565b6000606082019050614cc16000830186613e02565b614cce6020830185613ca2565b614cdb6040830184613ca2565b949350505050565b7f46656520697320726571756972656420746f20696e6974696174652076616c6960008201527f646174696f6e20706f6f6c000000000000000000000000000000000000000000602082015250565b6000614d3f602b83613add565b9150614d4a82614ce3565b604082019050919050565b60006020820190508181036000830152614d6e81614d32565b9050919050565b7f4475726174696f6e20697320746f6f2073686f72740000000000000000000000600082015250565b6000614dab601583613add565b9150614db682614d75565b602082019050919050565b60006020820190508181036000830152614dda81614d9e565b9050919050565b7f4475726174696f6e20697320746f6f206c6f6e67000000000000000000000000600082015250565b6000614e17601483613add565b9150614e2282614de1565b602082019050919050565b60006020820190508181036000830152614e4681614e0a565b9050919050565b7f51756f72756d2069732062656c6f77206d696e696d756d000000000000000000600082015250565b6000614e83601783613add565b9150614e8e82614e4d565b602082019050919050565b60006020820190508181036000830152614eb281614e76565b9050919050565b7f51756f72756d2069732067726561746572207468616e206f6e65000000000000600082015250565b6000614eef601a83613add565b9150614efa82614eb9565b602082019050919050565b60006020820190508181036000830152614f1e81614ee2565b9050919050565b7f57696e20726174696f2069732067726561746572207468616e206f6e65000000600082015250565b6000614f5b601d83613add565b9150614f6682614f25565b602082019050919050565b60006020820190508181036000830152614f8a81614f4e565b9050919050565b7f42696e64696e672070657263656e74206d757374206265203c3d203130300000600082015250565b6000614fc7601e83613add565b9150614fd282614f91565b602082019050919050565b60006020820190508181036000830152614ff681614fba565b9050919050565b600081905092915050565b60006150148385614ffd565b93506150218385846146d7565b82840190509392505050565b600061503a828486615008565b91508190509392505050565b7f54617267657420706f7374206e6f7420666f756e640000000000000000000000600082015250565b600061507c601583613add565b915061508782615046565b602082019050919050565b600060208201905081810360008301526150ab8161506f565b9050919050565b60006150bd82613bf6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036150ef576150ee6148a9565b5b600182019050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026151677fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261512a565b615171868361512a565b95508019841693508086168417925050509392505050565b6000819050919050565b60006151ae6151a96151a484613bf6565b615189565b613bf6565b9050919050565b6000819050919050565b6151c883615193565b6151dc6151d4826151b5565b848454615137565b825550505050565b600090565b6151f16151e4565b6151fc8184846151bf565b505050565b5b81811015615220576152156000826151e9565b600181019050615202565b5050565b601f8211156152655761523681615105565b61523f8461511a565b8101602085101561524e578190505b61526261525a8561511a565b830182615201565b50505b505050565b600082821c905092915050565b60006152886000198460080261526a565b1980831691505092915050565b60006152a18383615277565b9150826002028217905092915050565b6152bb83836150fa565b67ffffffffffffffff8111156152d4576152d361462b565b5b6152de825461480c565b6152e9828285615224565b6000601f8311600181146153185760008415615306578287013590505b6153108582615295565b865550615378565b601f19841661532686615105565b60005b8281101561534e57848901358255600182019150602085019450602081019050615329565b8683101561536b5784890135615367601f891682615277565b8355505b6001600288020188555050505b50505050505050565b600082905092915050565b601f8211156153cd5761539e81614ad7565b6153a78461511a565b810160208510156153b6578190505b6153ca6153c28561511a565b830182615201565b50505b505050565b6153dc8383615381565b67ffffffffffffffff8111156153f5576153f461462b565b5b6153ff825461480c565b61540a82828561538c565b6000601f8311600181146154395760008415615427578287013590505b6154318582615295565b865550615499565b601f19841661544786614ad7565b60005b8281101561546f5784890135825560018201915060208501945060208101905061544a565b8683101561548c5784890135615488601f891682615277565b8355505b6001600288020188555050505b50505050505050565b7f506f7374206d75737420696e636c756465206174206c65617374206f6e65206160008201527f7574686f72000000000000000000000000000000000000000000000000000000602082015250565b60006154fe602583613add565b9150615509826154a2565b604082019050919050565b6000602082019050818103600083015261552d816154f1565b9050919050565b7f4120706f73742077697468207468697320636f6e74656e74496420616c72656160008201527f6479206578697374730000000000000000000000000000000000000000000000602082015250565b6000615590602983613add565b915061559b82615534565b604082019050919050565b600060208201905081810360008301526155bf81615583565b9050919050565b600081356155d381613c00565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff615615846155dc565b9350801983169250808416831791505092915050565b61563482615193565b615647615640826151b5565b83546155e9565b8255505050565b6000813561565b81613bca565b80915050919050565b600073ffffffffffffffffffffffffffffffffffffffff615684846155dc565b9350801983169250808416831791505092915050565b60006156b56156b06156ab84613b98565b615189565b613b98565b9050919050565b60006156c78261569a565b9050919050565b60006156d9826156bc565b9050919050565b6000819050919050565b6156f3826156ce565b6157066156ff826156e0565b8354615664565b8255505050565b60008101600083018061571f816155c6565b905061572b818461562b565b5050506001810160208301806157408161564e565b905061574c81846156ea565b5050505050565b61575d828261570d565b5050565b7f417574686f722077656967687473206d7573742073756d20746f203130302500600082015250565b6000615797601f83613add565b91506157a282615761565b602082019050919050565b600060208201905081810360008301526157c68161578a565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126157f8576157f76157cd565b5b80830191505092915050565b6000819050919050565b61581781615804565b811461582257600080fd5b50565b600081356158328161580e565b80915050919050565b600061585661585161584c84615804565b615189565b615804565b9050919050565b6000819050919050565b6158708261583b565b61588361587c8261585d565b83546155e9565b8255505050565b600080833560016020038436030381126158a7576158a66157cd565b5b80840192508235915067ffffffffffffffff8211156158c9576158c86157d2565b5b6020830192506001820236038313156158e5576158e46157d7565b5b509250929050565b6158f88383836152b1565b505050565b60008101600083018061590f81615825565b905061591b8184615867565b5050506001810160208301615930818561588a565b61593b8183866158ed565b505050505050565b61594d82826158fd565b5050565b7f45616368206369746174696f6e20776569676874206d757374206265203e3d2060008201527f2d31303000000000000000000000000000000000000000000000000000000000602082015250565b60006159ad602483613add565b91506159b882615951565b604082019050919050565b600060208201905081810360008301526159dc816159a0565b9050919050565b7f45616368206369746174696f6e20776569676874206d757374206265203c3d2060008201527f3130300000000000000000000000000000000000000000000000000000000000602082015250565b6000615a3f602383613add565b9150615a4a826159e3565b604082019050919050565b60006020820190508181036000830152615a6e81615a32565b9050919050565b6000615a8082615804565b9150615a8b83615804565b925082820190508281121560008312168382126000841215161715615ab357615ab26148a9565b5b92915050565b7f53756d206f6620706f736974697665206369746174696f6e73206d757374206260008201527f65203c3d20313030000000000000000000000000000000000000000000000000602082015250565b6000615b15602883613add565b9150615b2082615ab9565b604082019050919050565b60006020820190508181036000830152615b4481615b08565b9050919050565b7f53756d206f66206e65676174697665206369746174696f6e73206d757374206260008201527f65203e3d202d3130300000000000000000000000000000000000000000000000602082015250565b6000615ba7602983613add565b9150615bb282615b4b565b604082019050919050565b60006020820190508181036000830152615bd681615b9a565b9050919050565b6000615be98385613add565b9350615bf68385846146d7565b615bff83613b18565b840190509392505050565b60006020820190508181036000830152615c25818486615bdd565b90509392505050565b7f506f6f6c20656e642074696d6520686173207061737365640000000000000000600082015250565b6000615c64601883613add565b9150615c6f82615c2e565b602082019050919050565b60006020820190508181036000830152615c9381615c57565b9050919050565b6000615ca582613ad2565b615caf8185614ffd565b9350615cbf818560208601613aee565b80840191505092915050565b6000615cd78284615c9a565b915081905092915050565b6000615ced82615804565b9150615cf883615804565b9250828203905081811260008412168282136000851215161715615d1f57615d1e6148a9565b5b92915050565b6000615d3082615804565b91507f80000000000000000000000000000000000000000000000000000000000000008203615d6257615d616148a9565b5b816000039050919050565b6000615d7882615804565b9150615d8383615804565b9250828202615d9181615804565b91507f80000000000000000000000000000000000000000000000000000000000000008414600084121615615dc957615dc86148a9565b5b8282058414831517615dde57615ddd6148a9565b5b5092915050565b6000615df082615804565b9150615dfb83615804565b925082615e0b57615e0a61490c565b5b600160000383147f800000000000000000000000000000000000000000000000000000000000000083141615615e4457615e436148a9565b5b828205905092915050565b7f4c65616368696e672066726f6d20696e63696e657261746f7220697320666f7260008201527f62696464656e0000000000000000000000000000000000000000000000000000602082015250565b6000615eab602683613add565b9150615eb682615e4f565b604082019050919050565b60006020820190508181036000830152615eda81615e9e565b905091905056fea264697066735822122048c08bdaea49553e2208fbc1bf2e1fde118c383db153ba6213c58f673267d60964736f6c63430008180033", + "bytecode": "0x60806040526003600c556040518060400160405280600160ff168152602001600a60ff16815250600f90600262000038929190620000df565b503480156200004657600080fd5b506040518060400160405280600a81526020017f52657075746174696f6e000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f52455000000000000000000000000000000000000000000000000000000000008152508160039081620000c49190620003c2565b508060049081620000d69190620003c2565b505050620004a9565b826002810192821562000116579160200282015b8281111562000115578251829060ff16905591602001919060010190620000f3565b5b50905062000125919062000129565b5090565b5b80821115620001445760008160009055506001016200012a565b5090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620001ca57607f821691505b602082108103620001e057620001df62000182565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200024a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200020b565b6200025686836200020b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620002a36200029d62000297846200026e565b62000278565b6200026e565b9050919050565b6000819050919050565b620002bf8362000282565b620002d7620002ce82620002aa565b84845462000218565b825550505050565b600090565b620002ee620002df565b620002fb818484620002b4565b505050565b5b81811015620003235762000317600082620002e4565b60018101905062000301565b5050565b601f82111562000372576200033c81620001e6565b6200034784620001fb565b8101602085101562000357578190505b6200036f6200036685620001fb565b83018262000300565b50505b505050565b600082821c905092915050565b6000620003976000198460080262000377565b1980831691505092915050565b6000620003b2838362000384565b9150826002028217905092915050565b620003cd8262000148565b67ffffffffffffffff811115620003e957620003e862000153565b5b620003f58254620001b1565b6200040282828562000327565b600060209050601f8311600181146200043a576000841562000425578287015190505b620004318582620003a4565b865550620004a1565b601f1984166200044a86620001e6565b60005b8281101562000474578489015182556001820191506020850194506020810190506200044d565b8683101562000494578489015162000490601f89168262000384565b8355505b6001600288020188555050505b505050505050565b615f4780620004b96000396000f3fe60806040526004361061014b5760003560e01c806370a08231116100b6578063a23362791161006f578063a2336279146104e7578063a9059cbb1461052f578063da66863a1461056c578063dd62ed3e146105a9578063e5b4d827146105e6578063f8300fca1461060f5761014b565b806370a08231146103ac57806388380274146103e957806395d89b4114610426578063975762b3146104515780639fbe7c731461047a578063a230c524146104aa5761014b565b806323b872dd1161010857806323b872dd146102765780632d17c062146102b3578063313ce567146102dc57806350cde8ef146103075780635daf08ca14610344578063642b5bfb146103815761014b565b806306fdde0314610150578063095ea7b31461017b57806311aee380146101b857806317906c2e146101e357806317c182171461020e57806318160ddd1461024b575b600080fd5b34801561015c57600080fd5b5061016561064e565b6040516101729190613b6c565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190613c36565b6106e0565b6040516101af9190613c91565b60405180910390f35b3480156101c457600080fd5b506101cd610703565b6040516101da9190613cbb565b60405180910390f35b3480156101ef57600080fd5b506101f8610709565b6040516102059190613cbb565b60405180910390f35b34801561021a57600080fd5b5061023560048036038101906102309190613cd6565b61070f565b6040516102429190613c91565b60405180910390f35b34801561025757600080fd5b506102606110ed565b60405161026d9190613cbb565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190613d03565b6110f7565b6040516102aa9190613c91565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d59190613d82565b611134565b005b3480156102e857600080fd5b506102f161115d565b6040516102fe9190613df1565b60405180910390f35b34801561031357600080fd5b5061032e60048036038101906103299190613cd6565b611166565b60405161033b9190613b6c565b60405180910390f35b34801561035057600080fd5b5061036b60048036038101906103669190613cd6565b611212565b6040516103789190613e1b565b60405180910390f35b34801561038d57600080fd5b50610396611245565b6040516103a39190613cbb565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce9190613e36565b61124b565b6040516103e09190613cbb565b60405180910390f35b3480156103f557600080fd5b50610410600480360381019061040b9190613e63565b611293565b60405161041d9190613c91565b60405180910390f35b34801561043257600080fd5b5061043b61131a565b6040516104489190613b6c565b60405180910390f35b34801561045d57600080fd5b5061047860048036038101906104739190613eb6565b6113ac565b005b610494600480360381019061048f9190613ffa565b6113e1565b6040516104a19190613cbb565b60405180910390f35b3480156104b657600080fd5b506104d160048036038101906104cc9190613e36565b61189b565b6040516104de9190613c91565b60405180910390f35b3480156104f357600080fd5b5061050e60048036038101906105099190613cd6565b6118bb565b6040516105269c9b9a9998979695949392919061426a565b60405180910390f35b34801561053b57600080fd5b5061055660048036038101906105519190613c36565b611b35565b6040516105639190613c91565b60405180910390f35b34801561057857600080fd5b50610593600480360381019061058e9190614334565b611b72565b6040516105a0919061446e565b60405180910390f35b3480156105b557600080fd5b506105d060048036038101906105cb9190614490565b611c5b565b6040516105dd9190613cbb565b60405180910390f35b3480156105f257600080fd5b5061060d6004803603810190610608919061457c565b611ce2565b005b34801561061b57600080fd5b5061063660048036038101906106319190614760565b6121b5565b604051610645939291906147a9565b60405180910390f35b60606003805461065d90614816565b80601f016020809104026020016040519081016040528092919081815260200182805461068990614816565b80156106d65780601f106106ab576101008083540402835291602001916106d6565b820191906000526020600020905b8154815290600101906020018083116106b957829003601f168201915b5050505050905090565b6000806106eb61229d565b90506106f88185856122a5565b600191505092915050565b60065481565b600a5481565b600080600d600084815260200190815260200160002090506000151581600f0160009054906101000a900460ff1615151461077f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077690614893565b60405180910390fd5b600080600080600090505b84600501548110156107fb5784600401600082815260200190815260200160002091508160010160009054906101000a900460ff16156107db578160020154846107d491906148e2565b93506107ee565b8160020154836107eb91906148e2565b92505b808060010191505061078a565b506002846003015461080d9190614945565b8361081891906148e2565b92506002846003015461082b9190614945565b8261083691906148e2565b915060006002856003015461084b9190614976565b146108605760018361085d91906148e2565b92505b83600e015442118061088357506108756110ed565b828461088191906148e2565b145b6108c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b990614a19565b60405180910390fd5b836006016001016000600281106108dc576108db614a39565b5b01546108e66110ed565b6108f09190614a68565b82846108fc91906148e2565b8560060160010160016002811061091657610915614a39565b5b01546109229190614a68565b11610a5257600184600f0160006101000a81548160ff0219169083151502179055507fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de818660008060405161097893929190614aaa565b60405180910390a183600f0160029054906101000a900460ff1615610a45578360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d58660008686896010016040518663ffffffff1660e01b8152600401610a00959493929190614b7a565b6020604051808303816000875af1158015610a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a439190614be9565b505b60009450505050506110e8565b83600601600301600060028110610a6c57610a6b614a39565b5b01548284610a7a91906148e2565b610a849190614a68565b84600601600301600160028110610a9e57610a9d614a39565b5b015484610aab9190614a68565b10159450600184600f0160006101000a81548160ff0219169083151502179055508484600f0160016101000a81548160ff0219169083151502179055507fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de8186866001604051610b1c93929190614aaa565b60405180910390a1600085610b315782610b33565b835b905060008060005b8760050154811015610c3b5787600401600082815260200190815260200160002094508460010160009054906101000a900460ff16151589151514610c2e576000606489600601600501548760020154610b959190614a68565b610b9f9190614945565b90508860060160060160009054906101000a900460ff1615610bfd57610bea8660030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630836122b7565b8084610bf691906148e2565b9350610c2c565b610c2b8660030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826124dc565b5b505b8080600101915050610b3b565b508715610e395760028760030154610c539190614945565b82610c5e91906148e2565b915060005b8760050154811015610d495787600401600082815260200190815260200160002094508760060160060160009054906101000a900460ff168015610cbb57508460010160009054906101000a900460ff161515891515145b15610d3c5760006064896006016005015486886002015487610cdd9190614a68565b610ce79190614945565b610cf19190614a68565b610cfb9190614945565b90508083610d0991906148e2565b9250610d3a308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836122b7565b505b8080600101915050610c63565b5060008183610d589190614c16565b9050600060028960030154610d6d9190614976565b14610d8257600181610d7f91906148e2565b90505b610e33886001018054610d9490614816565b80601f0160208091040260200160405190810160405280929190818152602001828054610dc090614816565b8015610e0d5780601f10610de257610100808354040283529160200191610e0d565b820191906000526020600020905b815481529060010190602001808311610df057829003601f168201915b50505050508260028b60030154610e249190614945565b610e2e91906148e2565b61255e565b50610f51565b866003015482610e4991906148e2565b915060005b8760050154811015610f4f5787600401600082815260200190815260200160002094508760060160060160009054906101000a900460ff168015610ea657508460010160009054906101000a900460ff161515891515145b15610f425760006064896006016005015460028b60030154610ec89190614945565b87610ed39190614c16565b886002015487610ee39190614a68565b610eed9190614945565b610ef79190614a68565b610f019190614945565b90508083610f0f91906148e2565b9250610f40308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836122b7565b505b8080600101915050610e4e565b505b60005b60065481101561101a5760006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000610fa06110ed565b610fa98361124b565b8b600d0154610fb89190614a68565b610fc29190614945565b90508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561100a573d6000803e3d6000fd5b5050508080600101915050610f54565b5086600f0160029054906101000a900460ff16156110e0578660020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d589600189898c6010016040518663ffffffff1660e01b815260040161109b959493929190614b7a565b6020604051808303816000875af11580156110ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110de9190614be9565b505b505050505050505b919050565b6000600254905090565b60006040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112b90614c96565b60405180910390fd5b6000600d6000858152602001908152602001600020905061115781338585612570565b50505050565b60006009905090565b6009818154811061117657600080fd5b90600052602060002001600091509050805461119190614816565b80601f01602080910402602001604051908101604052809291908181526020018280546111bd90614816565b801561120a5780601f106111df5761010080835404028352916020019161120a565b820191906000526020600020905b8154815290600101906020018083116111ed57829003601f168201915b505050505081565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006112a03385856122a5565b8373ffffffffffffffffffffffffffffffffffffffff1663216ed6ad3385856040518463ffffffff1660e01b81526004016112dd93929190614cb6565b600060405180830381600087803b1580156112f757600080fd5b505af115801561130b573d6000803e3d6000fd5b50505050600190509392505050565b60606004805461132990614816565b80601f016020809104026020016040519081016040528092919081815260200182805461135590614816565b80156113a25780601f10611377576101008083540402835291602001916113a2565b820191906000526020600020905b81548152906001019060200180831161138557829003601f168201915b5050505050905090565b6000600d600086815260200190815260200160002090506113ce843385612666565b6113da81858585612570565b5050505050565b6000803411611425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141c90614d5f565b60405180910390fd5b6001891015611469576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146090614dcb565b60405180910390fd5b651cae8c13e0008911156114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a990614e37565b60405180910390fd5b876001600281106114c6576114c5614a39565b5b6020020135600f6000600281106114e0576114df614a39565b5b01546114ec9190614a68565b88600060028110611500576114ff614a39565b5b6020020135600f60016002811061151a57611519614a39565b5b01546115269190614a68565b1015611567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155e90614ea3565b60405180910390fd5b8760016002811061157b5761157a614a39565b5b60200201358860006002811061159457611593614a39565b5b602002013511156115da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d190614f0f565b60405180910390fd5b866001600281106115ee576115ed614a39565b5b60200201358760006002811061160757611606614a39565b5b6020020135111561164d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164490614f7b565b60405180910390fd5b6064861115611691576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168890614fe7565b60405180910390fd5b600060088c8c6040516116a5929190615037565b9081526020016040518091039020905060008160020180549050036116ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f69061509c565b60405180910390fd5b600e6000815480929190611712906150bc565b9190505591506000600d60008481526020019081526020016000209050338160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508c8c8260010191826117859291906152bb565b503481600d018190555089816006016001019060026117a5929190613a7f565b5088816006016003019060026117bc929190613a7f565b50878160060160050181905550868160060160060160006101000a81548160ff0219169083151502179055508a81600601600001819055508a4261180091906148e2565b81600e01819055508281600001819055508581600f0160026101000a81548160ff02191690831515021790555084848260100191826118409291906153dc565b5061184b30346126fa565b3481600301819055507f6e5c598b821d7fa8550e5fea58ab6e27c59e1cbe1df75a8591aa0c453b49e10a836040516118839190613cbb565b60405180910390a150509a9950505050505050505050565b60076020528060005260406000206000915054906101000a900460ff1681565b600d6020528060005260406000206000915090508060000154908060010180546118e490614816565b80601f016020809104026020016040519081016040528092919081815260200182805461191090614816565b801561195d5780601f106119325761010080835404028352916020019161195d565b820191906000526020600020905b81548152906001019060200180831161194057829003601f168201915b5050505050908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003015490806005015490806006016040518060a001604052908160008201548152602001600182016002806020026040519081016040528092919082600280156119ea576020028201915b8154815260200190600101908083116119d6575b5050505050815260200160038201600280602002604051908101604052809291908260028015611a2f576020028201915b815481526020019060010190808311611a1b575b50505050508152602001600582015481526020016006820160009054906101000a900460ff1615151515815250509080600d01549080600e01549080600f0160009054906101000a900460ff169080600f0160019054906101000a900460ff169080600f0160029054906101000a900460ff1690806010018054611ab290614816565b80601f0160208091040260200160405190810160405280929190818152602001828054611ade90614816565b8015611b2b5780601f10611b0057610100808354040283529160200191611b2b565b820191906000526020600020905b815481529060010190602001808311611b0e57829003601f168201915b505050505090508c565b60006040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6990614c96565b60405180910390fd5b6060600060088484604051611b88929190615037565b9081526020016040518091039020905080600201805480602002602001604051908101604052809291908181526020016000905b82821015611c4e5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190611bbc565b5050505091505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008686905011611d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1f9061551e565b60405180910390fd5b600a6000815480929190611d3b906150bc565b91905055506009848490918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182611d7d9291906152bb565b50600060088585604051611d92929190615037565b908152602001604051809103902090506000816002018054905014611dec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de3906155b0565b60405180910390fd5b338160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508484826000019182611e429291906152bb565b50600080600090505b88889050811015611ee157888882818110611e6957611e68614a39565b5b9050604002016000013582611e7e91906148e2565b915082600201898983818110611e9757611e96614a39565b5b90506040020190806001815401808255809150506001900390600052602060002090600202016000909190919091508181611ed2919061575d565b50508080600101915050611e4b565b50620f42408114611f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1e906157dd565b60405180910390fd5b60005b84849050811015611fa25782600301858583818110611f4c57611f4b614a39565b5b9050602002810190611f5e919061580c565b90806001815401808255809150506001900390600052602060002090600202016000909190919091508181611f939190615973565b50508080600101915050611f2a565b5060008060005b84600301805490508110156120c6576000856003018281548110611fd057611fcf614a39565b5b90600052602060002090600202016000015490507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0bdc0811215612047576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203e906159f3565b60405180910390fd5b620f424081131561208d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208490615a85565b60405180910390fd5b60008113156120a95780846120a29190615aa5565b93506120b8565b80836120b59190615aa5565b92505b508080600101915050611fa9565b50620f424082131561210d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210490615b5b565b60405180910390fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0bdc0811215612170576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216790615bed565b60405180910390fd5b7fbd6277baf8ced6ab6543a1aef164635fc2bde1ba962d39d8a0fd81a5af24972788886040516121a1929190615c3a565b60405180910390a150505050505050505050565b6008818051602081018201805184825260208301602085012081835280955050505050506000915090508060000180546121ee90614816565b80601f016020809104026020016040519081016040528092919081815260200182805461221a90614816565b80156122675780601f1061223c57610100808354040283529160200191612267565b820191906000526020600020905b81548152906001019060200180831161224a57829003601f168201915b5050505050908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040154905083565b600033905090565b6122b2838383600161277c565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123095780600260008282546122fd91906148e2565b925050819055506123dc565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612395578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161238c93929190614cb6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124255780600260008282540392505081905550612472565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124cf9190613cbb565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361254e5760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016125459190613e1b565b60405180910390fd5b61255a826000836122b7565b5050565b61256b8282600080612953565b505050565b83600e01544211156125b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ae90615caa565b60405180910390fd5b60008460050160008154809291906125ce906150bc565b91905055905060008560040160008381526020019081526020016000209050848160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828160010160006101000a81548160ff021916908315150217905550838160020181905550818160000181905550505050505050565b60006126728484611c5b565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146126f457818110156126e4578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016126db93929190614cb6565b60405180910390fd5b6126f38484848403600061277c565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361276c5760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016127639190613e1b565b60405180910390fd5b612778600083836122b7565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036127ee5760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016127e59190613e1b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128605760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016128579190613e1b565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550801561294d578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516129449190613cbb565b60405180910390a35b50505050565b6000600c548210612966578390506134f3565b60006008866040516129789190615cfb565b9081526020016040518091039020905060008160020180549050036129a057849150506134f3565b60005b8160030180549050811015612ad45760008260030182815481106129ca576129c9614a39565b5b9060005260206000209060020201600001541215612ac757612ab9878360030183815481106129fc576129fb614a39565b5b906000526020600020906002020160405180604001604052908160008201548152602001600182018054612a2f90614816565b80601f0160208091040260200160405190810160405280929190818152602001828054612a5b90614816565b8015612aa85780601f10612a7d57610100808354040283529160200191612aa8565b820191906000526020600020905b815481529060010190602001808311612a8b57829003601f168201915b5050505050815250508888886134fb565b86612ac49190615d12565b95505b80806001019150506129a3565b5060005b8160030180549050811015612c09576000826003018281548110612aff57612afe614a39565b5b9060005260206000209060020201600001541315612bfc57612bee87836003018381548110612b3157612b30614a39565b5b906000526020600020906002020160405180604001604052908160008201548152602001600182018054612b6490614816565b80601f0160208091040260200160405190810160405280929190818152602001828054612b9090614816565b8015612bdd5780601f10612bb257610100808354040283529160200191612bdd565b820191906000526020600020905b815481529060010190602001808311612bc057829003601f168201915b5050505050815250508888886134fb565b86612bf99190615d12565b95505b8080600101915050612ad8565b506000851315612ef557612ed4816040518060a0016040529081600082018054612c3290614816565b80601f0160208091040260200160405190810160405280929190818152602001828054612c5e90614816565b8015612cab5780601f10612c8057610100808354040283529160200191612cab565b820191906000526020600020905b815481529060010190602001808311612c8e57829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015612dc15783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190612d2f565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015612ebc578382906000526020600020906002020160405180604001604052908160008201548152602001600182018054612e2b90614816565b80601f0160208091040260200160405190810160405280929190818152602001828054612e5790614816565b8015612ea45780601f10612e7957610100808354040283529160200191612ea4565b820191906000526020600020905b815481529060010190602001808311612e8757829003601f168201915b50505050508152505081526020019060010190612dee565b505050508152602001600482015481525050866136c6565b5084816004016000828254612ee991906148e2565b925050819055506134f1565b6000858260040154612f079190615aa5565b126131f8576131cd816040518060a0016040529081600082018054612f2b90614816565b80601f0160208091040260200160405190810160405280929190818152602001828054612f5790614816565b8015612fa45780601f10612f7957610100808354040283529160200191612fa4565b820191906000526020600020905b815481529060010190602001808311612f8757829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b828210156130ba5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190613028565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156131b557838290600052602060002090600202016040518060400160405290816000820154815260200160018201805461312490614816565b80601f016020809104026020016040519081016040528092919081815260200182805461315090614816565b801561319d5780601f106131725761010080835404028352916020019161319d565b820191906000526020600020905b81548152906001019060200180831161318057829003601f168201915b505050505081525050815260200190600101906130e7565b505050508152602001600482015481525050866136c6565b9150846131d990615d55565b8160040160008282546131ec9190614c16565b925050819055506134f0565b8481600401546132089190615aa5565b91506134d8816040518060a001604052908160008201805461322990614816565b80601f016020809104026020016040519081016040528092919081815260200182805461325590614816565b80156132a25780601f10613277576101008083540402835291602001916132a2565b820191906000526020600020905b81548152906001019060200180831161328557829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b828210156133b85783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190613326565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156134b357838290600052602060002090600202016040518060400160405290816000820154815260200160018201805461342290614816565b80601f016020809104026020016040519081016040528092919081815260200182805461344e90614816565b801561349b5780601f106134705761010080835404028352916020019161349b565b820191906000526020600020905b81548152906001019060200180831161347e57829003601f168201915b505050505081525050815260200190600101906133e5565b50505050815260200160048201548152505082600401546134d390615d55565b6136c6565b826134e39190615aa5565b9150600081600401819055505b5b505b949350505050565b6000620f42408560000151856135119190615d9d565b61351b9190615e15565b905060008560200151510361357d57600081121561356e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161356590615ef1565b60405180910390fd5b61357830826124dc565b6136bd565b6000600b8760405161358f9190615cfb565b908152602001604051809103902086602001516040516135af9190615cfb565b9081526020016040518091039020549050831561361c5760008212156135f757806135d990615d55565b82136135ee57806135e990615d55565b6135f0565b815b915061361b565b8061360190615d55565b8212613616578061361190615d55565b613618565b815b91505b5b600061365587602001518487806136435750600087148015613642575060008a60000151125b5b60018861365091906148e2565b612953565b905080836136639190615d12565b925082600b896040516136769190615cfb565b908152602001604051809103902088602001516040516136969190615cfb565b908152602001604051809103902060008282546136b39190615aa5565b9250508190555050505b95945050505050565b60008060005b846040015151811015613820576000856040015182815181106136f2576136f1614a39565b5b6020026020010151602001519050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661381257806005600060066000815480929190613769906150bc565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5080806001019150506136cc565b5060005b846040015151811015613a775760008560400151828151811061384a57613849614a39565b5b60200260200101519050600060018760400151516138689190614c16565b8310156138a257620f42408260000151876138839190615d9d565b61388d9190615e15565b9050808461389b9190615aa5565b93506138b1565b83866138ae9190615d12565b90505b60008113156139ec576138c9308360200151836122b7565b60076000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166139e7578160200151600560006006600081548092919061393a906150bc565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160076000846020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b613a68565b806139f690615d55565b613a03836020015161124b565b1015613a4e57613a16826020015161124b565b81613a219190615aa5565b85613a2c9190615aa5565b9450613a49826020015130613a44856020015161124b565b6122b7565b613a67565b613a6682602001513083613a6190615d55565b6122b7565b5b5b50508080600101915050613824565b505092915050565b8260028101928215613aae579160200282015b82811115613aad578235825591602001919060010190613a92565b5b509050613abb9190613abf565b5090565b5b80821115613ad8576000816000905550600101613ac0565b5090565b600081519050919050565b600082825260208201905092915050565b60005b83811015613b16578082015181840152602081019050613afb565b60008484015250505050565b6000601f19601f8301169050919050565b6000613b3e82613adc565b613b488185613ae7565b9350613b58818560208601613af8565b613b6181613b22565b840191505092915050565b60006020820190508181036000830152613b868184613b33565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613bcd82613ba2565b9050919050565b613bdd81613bc2565b8114613be857600080fd5b50565b600081359050613bfa81613bd4565b92915050565b6000819050919050565b613c1381613c00565b8114613c1e57600080fd5b50565b600081359050613c3081613c0a565b92915050565b60008060408385031215613c4d57613c4c613b98565b5b6000613c5b85828601613beb565b9250506020613c6c85828601613c21565b9150509250929050565b60008115159050919050565b613c8b81613c76565b82525050565b6000602082019050613ca66000830184613c82565b92915050565b613cb581613c00565b82525050565b6000602082019050613cd06000830184613cac565b92915050565b600060208284031215613cec57613ceb613b98565b5b6000613cfa84828501613c21565b91505092915050565b600080600060608486031215613d1c57613d1b613b98565b5b6000613d2a86828701613beb565b9350506020613d3b86828701613beb565b9250506040613d4c86828701613c21565b9150509250925092565b613d5f81613c76565b8114613d6a57600080fd5b50565b600081359050613d7c81613d56565b92915050565b600080600060608486031215613d9b57613d9a613b98565b5b6000613da986828701613c21565b9350506020613dba86828701613c21565b9250506040613dcb86828701613d6d565b9150509250925092565b600060ff82169050919050565b613deb81613dd5565b82525050565b6000602082019050613e066000830184613de2565b92915050565b613e1581613bc2565b82525050565b6000602082019050613e306000830184613e0c565b92915050565b600060208284031215613e4c57613e4b613b98565b5b6000613e5a84828501613beb565b91505092915050565b600080600060608486031215613e7c57613e7b613b98565b5b6000613e8a86828701613beb565b9350506020613e9b86828701613c21565b9250506040613eac86828701613c21565b9150509250925092565b60008060008060808587031215613ed057613ecf613b98565b5b6000613ede87828801613c21565b9450506020613eef87828801613beb565b9350506040613f0087828801613c21565b9250506060613f1187828801613d6d565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112613f4257613f41613f1d565b5b8235905067ffffffffffffffff811115613f5f57613f5e613f22565b5b602083019150836001820283011115613f7b57613f7a613f27565b5b9250929050565b600081905082602060020282011115613f9e57613f9d613f27565b5b92915050565b60008083601f840112613fba57613fb9613f1d565b5b8235905067ffffffffffffffff811115613fd757613fd6613f22565b5b602083019150836001820283011115613ff357613ff2613f27565b5b9250929050565b6000806000806000806000806000806101408b8d03121561401e5761401d613b98565b5b60008b013567ffffffffffffffff81111561403c5761403b613b9d565b5b6140488d828e01613f2c565b9a509a5050602061405b8d828e01613c21565b985050604061406c8d828e01613f82565b975050608061407d8d828e01613f82565b96505060c061408e8d828e01613c21565b95505060e061409f8d828e01613d6d565b9450506101006140b18d828e01613d6d565b9350506101208b013567ffffffffffffffff8111156140d3576140d2613b9d565b5b6140df8d828e01613fa4565b92509250509295989b9194979a5092959850565b6140fc81613c00565b82525050565b600060029050919050565b600081905092915050565b6000819050919050565b600061412e83836140f3565b60208301905092915050565b6000602082019050919050565b61415081614102565b61415a818461410d565b925061416582614118565b8060005b8381101561419657815161417d8782614122565b96506141888361413a565b925050600181019050614169565b505050505050565b6141a781613c76565b82525050565b60e0820160008201516141c360008501826140f3565b5060208201516141d66020850182614147565b5060408201516141e96060850182614147565b5060608201516141fc60a08501826140f3565b50608082015161420f60c085018261419e565b50505050565b600081519050919050565b600082825260208201905092915050565b600061423c82614215565b6142468185614220565b9350614256818560208601613af8565b61425f81613b22565b840191505092915050565b600061024082019050614280600083018f613cac565b8181036020830152614292818e613b33565b90506142a1604083018d613e0c565b6142ae606083018c613cac565b6142bb608083018b613cac565b6142c860a083018a6141ad565b6142d6610180830189613cac565b6142e46101a0830188613cac565b6142f26101c0830187613c82565b6143006101e0830186613c82565b61430e610200830185613c82565b8181036102208301526143218184614231565b90509d9c50505050505050505050505050565b6000806020838503121561434b5761434a613b98565b5b600083013567ffffffffffffffff81111561436957614368613b9d565b5b61437585828601613f2c565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6143b681613bc2565b82525050565b6040820160008201516143d260008501826140f3565b5060208201516143e560208501826143ad565b50505050565b60006143f783836143bc565b60408301905092915050565b6000602082019050919050565b600061441b82614381565b614425818561438c565b93506144308361439d565b8060005b8381101561446157815161444888826143eb565b975061445383614403565b925050600181019050614434565b5085935050505092915050565b600060208201905081810360008301526144888184614410565b905092915050565b600080604083850312156144a7576144a6613b98565b5b60006144b585828601613beb565b92505060206144c685828601613beb565b9150509250929050565b60008083601f8401126144e6576144e5613f1d565b5b8235905067ffffffffffffffff81111561450357614502613f22565b5b60208301915083604082028301111561451f5761451e613f27565b5b9250929050565b60008083601f84011261453c5761453b613f1d565b5b8235905067ffffffffffffffff81111561455957614558613f22565b5b60208301915083602082028301111561457557614574613f27565b5b9250929050565b6000806000806000806060878903121561459957614598613b98565b5b600087013567ffffffffffffffff8111156145b7576145b6613b9d565b5b6145c389828a016144d0565b9650965050602087013567ffffffffffffffff8111156145e6576145e5613b9d565b5b6145f289828a01613f2c565b9450945050604087013567ffffffffffffffff81111561461557614614613b9d565b5b61462189828a01614526565b92509250509295509295509295565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61466d82613b22565b810181811067ffffffffffffffff8211171561468c5761468b614635565b5b80604052505050565b600061469f613b8e565b90506146ab8282614664565b919050565b600067ffffffffffffffff8211156146cb576146ca614635565b5b6146d482613b22565b9050602081019050919050565b82818337600083830152505050565b60006147036146fe846146b0565b614695565b90508281526020810184848401111561471f5761471e614630565b5b61472a8482856146e1565b509392505050565b600082601f83011261474757614746613f1d565b5b81356147578482602086016146f0565b91505092915050565b60006020828403121561477657614775613b98565b5b600082013567ffffffffffffffff81111561479457614793613b9d565b5b6147a084828501614732565b91505092915050565b600060608201905081810360008301526147c38186613b33565b90506147d26020830185613e0c565b6147df6040830184613cac565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061482e57607f821691505b602082108103614841576148406147e7565b5b50919050565b7f506f6f6c20697320616c7265616479207265736f6c7665640000000000000000600082015250565b600061487d601883613ae7565b915061488882614847565b602082019050919050565b600060208201905081810360008301526148ac81614870565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006148ed82613c00565b91506148f883613c00565b92508282019050808211156149105761490f6148b3565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061495082613c00565b915061495b83613c00565b92508261496b5761496a614916565b5b828204905092915050565b600061498182613c00565b915061498c83613c00565b92508261499c5761499b614916565b5b828206905092915050565b7f506f6f6c20656e642074696d6520686173206e6f74207965742061727269766560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a03602183613ae7565b9150614a0e826149a7565b604082019050919050565b60006020820190508181036000830152614a32816149f6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614a7382613c00565b9150614a7e83613c00565b9250828202614a8c81613c00565b91508282048414831517614aa357614aa26148b3565b5b5092915050565b6000606082019050614abf6000830186613cac565b614acc6020830185613c82565b614ad96040830184613c82565b949350505050565b60008190508160005260206000209050919050565b60008154614b0381614816565b614b0d8186614220565b94506001821660008114614b285760018114614b3e57614b71565b60ff198316865281151560200286019350614b71565b614b4785614ae1565b60005b83811015614b6957815481890152600182019150602081019050614b4a565b808801955050505b50505092915050565b600060a082019050614b8f6000830188613c82565b614b9c6020830187613c82565b614ba96040830186613cac565b614bb66060830185613cac565b8181036080830152614bc88184614af6565b90509695505050505050565b600081519050614be381613c0a565b92915050565b600060208284031215614bff57614bfe613b98565b5b6000614c0d84828501614bd4565b91505092915050565b6000614c2182613c00565b9150614c2c83613c00565b9250828203905081811115614c4457614c436148b3565b5b92915050565b7f524550207472616e73666572206973206e6f7420616c6c6f7765640000000000600082015250565b6000614c80601b83613ae7565b9150614c8b82614c4a565b602082019050919050565b60006020820190508181036000830152614caf81614c73565b9050919050565b6000606082019050614ccb6000830186613e0c565b614cd86020830185613cac565b614ce56040830184613cac565b949350505050565b7f46656520697320726571756972656420746f20696e6974696174652076616c6960008201527f646174696f6e20706f6f6c000000000000000000000000000000000000000000602082015250565b6000614d49602b83613ae7565b9150614d5482614ced565b604082019050919050565b60006020820190508181036000830152614d7881614d3c565b9050919050565b7f4475726174696f6e20697320746f6f2073686f72740000000000000000000000600082015250565b6000614db5601583613ae7565b9150614dc082614d7f565b602082019050919050565b60006020820190508181036000830152614de481614da8565b9050919050565b7f4475726174696f6e20697320746f6f206c6f6e67000000000000000000000000600082015250565b6000614e21601483613ae7565b9150614e2c82614deb565b602082019050919050565b60006020820190508181036000830152614e5081614e14565b9050919050565b7f51756f72756d2069732062656c6f77206d696e696d756d000000000000000000600082015250565b6000614e8d601783613ae7565b9150614e9882614e57565b602082019050919050565b60006020820190508181036000830152614ebc81614e80565b9050919050565b7f51756f72756d2069732067726561746572207468616e206f6e65000000000000600082015250565b6000614ef9601a83613ae7565b9150614f0482614ec3565b602082019050919050565b60006020820190508181036000830152614f2881614eec565b9050919050565b7f57696e20726174696f2069732067726561746572207468616e206f6e65000000600082015250565b6000614f65601d83613ae7565b9150614f7082614f2f565b602082019050919050565b60006020820190508181036000830152614f9481614f58565b9050919050565b7f42696e64696e672070657263656e74206d757374206265203c3d203130300000600082015250565b6000614fd1601e83613ae7565b9150614fdc82614f9b565b602082019050919050565b6000602082019050818103600083015261500081614fc4565b9050919050565b600081905092915050565b600061501e8385615007565b935061502b8385846146e1565b82840190509392505050565b6000615044828486615012565b91508190509392505050565b7f54617267657420706f7374206e6f7420666f756e640000000000000000000000600082015250565b6000615086601583613ae7565b915061509182615050565b602082019050919050565b600060208201905081810360008301526150b581615079565b9050919050565b60006150c782613c00565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036150f9576150f86148b3565b5b600182019050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026151717fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82615134565b61517b8683615134565b95508019841693508086168417925050509392505050565b6000819050919050565b60006151b86151b36151ae84613c00565b615193565b613c00565b9050919050565b6000819050919050565b6151d28361519d565b6151e66151de826151bf565b848454615141565b825550505050565b600090565b6151fb6151ee565b6152068184846151c9565b505050565b5b8181101561522a5761521f6000826151f3565b60018101905061520c565b5050565b601f82111561526f576152408161510f565b61524984615124565b81016020851015615258578190505b61526c61526485615124565b83018261520b565b50505b505050565b600082821c905092915050565b600061529260001984600802615274565b1980831691505092915050565b60006152ab8383615281565b9150826002028217905092915050565b6152c58383615104565b67ffffffffffffffff8111156152de576152dd614635565b5b6152e88254614816565b6152f382828561522e565b6000601f8311600181146153225760008415615310578287013590505b61531a858261529f565b865550615382565b601f1984166153308661510f565b60005b8281101561535857848901358255600182019150602085019450602081019050615333565b868310156153755784890135615371601f891682615281565b8355505b6001600288020188555050505b50505050505050565b600082905092915050565b601f8211156153d7576153a881614ae1565b6153b184615124565b810160208510156153c0578190505b6153d46153cc85615124565b83018261520b565b50505b505050565b6153e6838361538b565b67ffffffffffffffff8111156153ff576153fe614635565b5b6154098254614816565b615414828285615396565b6000601f8311600181146154435760008415615431578287013590505b61543b858261529f565b8655506154a3565b601f19841661545186614ae1565b60005b8281101561547957848901358255600182019150602085019450602081019050615454565b868310156154965784890135615492601f891682615281565b8355505b6001600288020188555050505b50505050505050565b7f506f7374206d75737420696e636c756465206174206c65617374206f6e65206160008201527f7574686f72000000000000000000000000000000000000000000000000000000602082015250565b6000615508602583613ae7565b9150615513826154ac565b604082019050919050565b60006020820190508181036000830152615537816154fb565b9050919050565b7f4120706f73742077697468207468697320636f6e74656e74496420616c72656160008201527f6479206578697374730000000000000000000000000000000000000000000000602082015250565b600061559a602983613ae7565b91506155a58261553e565b604082019050919050565b600060208201905081810360008301526155c98161558d565b9050919050565b600081356155dd81613c0a565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61561f846155e6565b9350801983169250808416831791505092915050565b61563e8261519d565b61565161564a826151bf565b83546155f3565b8255505050565b6000813561566581613bd4565b80915050919050565b600073ffffffffffffffffffffffffffffffffffffffff61568e846155e6565b9350801983169250808416831791505092915050565b60006156bf6156ba6156b584613ba2565b615193565b613ba2565b9050919050565b60006156d1826156a4565b9050919050565b60006156e3826156c6565b9050919050565b6000819050919050565b6156fd826156d8565b615710615709826156ea565b835461566e565b8255505050565b600081016000830180615729816155d0565b90506157358184615635565b50505060018101602083018061574a81615658565b905061575681846156f4565b5050505050565b6157678282615717565b5050565b7f417574686f722077656967687473206d7573742073756d20746f20313030303060008201527f3030000000000000000000000000000000000000000000000000000000000000602082015250565b60006157c7602283613ae7565b91506157d28261576b565b604082019050919050565b600060208201905081810360008301526157f6816157ba565b9050919050565b600080fd5b600080fd5b600080fd5b600082356001604003833603038112615828576158276157fd565b5b80830191505092915050565b6000819050919050565b61584781615834565b811461585257600080fd5b50565b600081356158628161583e565b80915050919050565b600061588661588161587c84615834565b615193565b615834565b9050919050565b6000819050919050565b6158a08261586b565b6158b36158ac8261588d565b83546155f3565b8255505050565b600080833560016020038436030381126158d7576158d66157fd565b5b80840192508235915067ffffffffffffffff8211156158f9576158f8615802565b5b60208301925060018202360383131561591557615914615807565b5b509250929050565b6159288383836152bb565b505050565b60008101600083018061593f81615855565b905061594b8184615897565b505050600181016020830161596081856158ba565b61596b81838661591d565b505050505050565b61597d828261592d565b5050565b7f45616368206369746174696f6e20776569676874206d757374206265203e3d2060008201527f2d31303030303030000000000000000000000000000000000000000000000000602082015250565b60006159dd602883613ae7565b91506159e882615981565b604082019050919050565b60006020820190508181036000830152615a0c816159d0565b9050919050565b7f45616368206369746174696f6e20776569676874206d757374206265203c3d2060008201527f3130303030303000000000000000000000000000000000000000000000000000602082015250565b6000615a6f602783613ae7565b9150615a7a82615a13565b604082019050919050565b60006020820190508181036000830152615a9e81615a62565b9050919050565b6000615ab082615834565b9150615abb83615834565b925082820190508281121560008312168382126000841215161715615ae357615ae26148b3565b5b92915050565b7f53756d206f6620706f736974697665206369746174696f6e73206d757374206260008201527f65203c3d20313030303030300000000000000000000000000000000000000000602082015250565b6000615b45602c83613ae7565b9150615b5082615ae9565b604082019050919050565b60006020820190508181036000830152615b7481615b38565b9050919050565b7f53756d206f66206e65676174697665206369746174696f6e73206d757374206260008201527f65203e3d202d3130303030303000000000000000000000000000000000000000602082015250565b6000615bd7602d83613ae7565b9150615be282615b7b565b604082019050919050565b60006020820190508181036000830152615c0681615bca565b9050919050565b6000615c198385613ae7565b9350615c268385846146e1565b615c2f83613b22565b840190509392505050565b60006020820190508181036000830152615c55818486615c0d565b90509392505050565b7f506f6f6c20656e642074696d6520686173207061737365640000000000000000600082015250565b6000615c94601883613ae7565b9150615c9f82615c5e565b602082019050919050565b60006020820190508181036000830152615cc381615c87565b9050919050565b6000615cd582613adc565b615cdf8185615007565b9350615cef818560208601613af8565b80840191505092915050565b6000615d078284615cca565b915081905092915050565b6000615d1d82615834565b9150615d2883615834565b9250828203905081811260008412168282136000851215161715615d4f57615d4e6148b3565b5b92915050565b6000615d6082615834565b91507f80000000000000000000000000000000000000000000000000000000000000008203615d9257615d916148b3565b5b816000039050919050565b6000615da882615834565b9150615db383615834565b9250828202615dc181615834565b91507f80000000000000000000000000000000000000000000000000000000000000008414600084121615615df957615df86148b3565b5b8282058414831517615e0e57615e0d6148b3565b5b5092915050565b6000615e2082615834565b9150615e2b83615834565b925082615e3b57615e3a614916565b5b600160000383147f800000000000000000000000000000000000000000000000000000000000000083141615615e7457615e736148b3565b5b828205905092915050565b7f4c65616368696e672066726f6d20696e63696e657261746f7220697320666f7260008201527f62696464656e0000000000000000000000000000000000000000000000000000602082015250565b6000615edb602683613ae7565b9150615ee682615e7f565b604082019050919050565b60006020820190508181036000830152615f0a81615ece565b905091905056fea26469706673582212209f1eb3ff12aa3e0b4012bf2fd5064caa9b3995b97c752a0a223c5e60febeb27a64736f6c63430008180033", + "deployedBytecode": "0x60806040526004361061014b5760003560e01c806370a08231116100b6578063a23362791161006f578063a2336279146104e7578063a9059cbb1461052f578063da66863a1461056c578063dd62ed3e146105a9578063e5b4d827146105e6578063f8300fca1461060f5761014b565b806370a08231146103ac57806388380274146103e957806395d89b4114610426578063975762b3146104515780639fbe7c731461047a578063a230c524146104aa5761014b565b806323b872dd1161010857806323b872dd146102765780632d17c062146102b3578063313ce567146102dc57806350cde8ef146103075780635daf08ca14610344578063642b5bfb146103815761014b565b806306fdde0314610150578063095ea7b31461017b57806311aee380146101b857806317906c2e146101e357806317c182171461020e57806318160ddd1461024b575b600080fd5b34801561015c57600080fd5b5061016561064e565b6040516101729190613b6c565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190613c36565b6106e0565b6040516101af9190613c91565b60405180910390f35b3480156101c457600080fd5b506101cd610703565b6040516101da9190613cbb565b60405180910390f35b3480156101ef57600080fd5b506101f8610709565b6040516102059190613cbb565b60405180910390f35b34801561021a57600080fd5b5061023560048036038101906102309190613cd6565b61070f565b6040516102429190613c91565b60405180910390f35b34801561025757600080fd5b506102606110ed565b60405161026d9190613cbb565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190613d03565b6110f7565b6040516102aa9190613c91565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d59190613d82565b611134565b005b3480156102e857600080fd5b506102f161115d565b6040516102fe9190613df1565b60405180910390f35b34801561031357600080fd5b5061032e60048036038101906103299190613cd6565b611166565b60405161033b9190613b6c565b60405180910390f35b34801561035057600080fd5b5061036b60048036038101906103669190613cd6565b611212565b6040516103789190613e1b565b60405180910390f35b34801561038d57600080fd5b50610396611245565b6040516103a39190613cbb565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce9190613e36565b61124b565b6040516103e09190613cbb565b60405180910390f35b3480156103f557600080fd5b50610410600480360381019061040b9190613e63565b611293565b60405161041d9190613c91565b60405180910390f35b34801561043257600080fd5b5061043b61131a565b6040516104489190613b6c565b60405180910390f35b34801561045d57600080fd5b5061047860048036038101906104739190613eb6565b6113ac565b005b610494600480360381019061048f9190613ffa565b6113e1565b6040516104a19190613cbb565b60405180910390f35b3480156104b657600080fd5b506104d160048036038101906104cc9190613e36565b61189b565b6040516104de9190613c91565b60405180910390f35b3480156104f357600080fd5b5061050e60048036038101906105099190613cd6565b6118bb565b6040516105269c9b9a9998979695949392919061426a565b60405180910390f35b34801561053b57600080fd5b5061055660048036038101906105519190613c36565b611b35565b6040516105639190613c91565b60405180910390f35b34801561057857600080fd5b50610593600480360381019061058e9190614334565b611b72565b6040516105a0919061446e565b60405180910390f35b3480156105b557600080fd5b506105d060048036038101906105cb9190614490565b611c5b565b6040516105dd9190613cbb565b60405180910390f35b3480156105f257600080fd5b5061060d6004803603810190610608919061457c565b611ce2565b005b34801561061b57600080fd5b5061063660048036038101906106319190614760565b6121b5565b604051610645939291906147a9565b60405180910390f35b60606003805461065d90614816565b80601f016020809104026020016040519081016040528092919081815260200182805461068990614816565b80156106d65780601f106106ab576101008083540402835291602001916106d6565b820191906000526020600020905b8154815290600101906020018083116106b957829003601f168201915b5050505050905090565b6000806106eb61229d565b90506106f88185856122a5565b600191505092915050565b60065481565b600a5481565b600080600d600084815260200190815260200160002090506000151581600f0160009054906101000a900460ff1615151461077f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077690614893565b60405180910390fd5b600080600080600090505b84600501548110156107fb5784600401600082815260200190815260200160002091508160010160009054906101000a900460ff16156107db578160020154846107d491906148e2565b93506107ee565b8160020154836107eb91906148e2565b92505b808060010191505061078a565b506002846003015461080d9190614945565b8361081891906148e2565b92506002846003015461082b9190614945565b8261083691906148e2565b915060006002856003015461084b9190614976565b146108605760018361085d91906148e2565b92505b83600e015442118061088357506108756110ed565b828461088191906148e2565b145b6108c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b990614a19565b60405180910390fd5b836006016001016000600281106108dc576108db614a39565b5b01546108e66110ed565b6108f09190614a68565b82846108fc91906148e2565b8560060160010160016002811061091657610915614a39565b5b01546109229190614a68565b11610a5257600184600f0160006101000a81548160ff0219169083151502179055507fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de818660008060405161097893929190614aaa565b60405180910390a183600f0160029054906101000a900460ff1615610a45578360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d58660008686896010016040518663ffffffff1660e01b8152600401610a00959493929190614b7a565b6020604051808303816000875af1158015610a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a439190614be9565b505b60009450505050506110e8565b83600601600301600060028110610a6c57610a6b614a39565b5b01548284610a7a91906148e2565b610a849190614a68565b84600601600301600160028110610a9e57610a9d614a39565b5b015484610aab9190614a68565b10159450600184600f0160006101000a81548160ff0219169083151502179055508484600f0160016101000a81548160ff0219169083151502179055507fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de8186866001604051610b1c93929190614aaa565b60405180910390a1600085610b315782610b33565b835b905060008060005b8760050154811015610c3b5787600401600082815260200190815260200160002094508460010160009054906101000a900460ff16151589151514610c2e576000606489600601600501548760020154610b959190614a68565b610b9f9190614945565b90508860060160060160009054906101000a900460ff1615610bfd57610bea8660030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630836122b7565b8084610bf691906148e2565b9350610c2c565b610c2b8660030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826124dc565b5b505b8080600101915050610b3b565b508715610e395760028760030154610c539190614945565b82610c5e91906148e2565b915060005b8760050154811015610d495787600401600082815260200190815260200160002094508760060160060160009054906101000a900460ff168015610cbb57508460010160009054906101000a900460ff161515891515145b15610d3c5760006064896006016005015486886002015487610cdd9190614a68565b610ce79190614945565b610cf19190614a68565b610cfb9190614945565b90508083610d0991906148e2565b9250610d3a308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836122b7565b505b8080600101915050610c63565b5060008183610d589190614c16565b9050600060028960030154610d6d9190614976565b14610d8257600181610d7f91906148e2565b90505b610e33886001018054610d9490614816565b80601f0160208091040260200160405190810160405280929190818152602001828054610dc090614816565b8015610e0d5780601f10610de257610100808354040283529160200191610e0d565b820191906000526020600020905b815481529060010190602001808311610df057829003601f168201915b50505050508260028b60030154610e249190614945565b610e2e91906148e2565b61255e565b50610f51565b866003015482610e4991906148e2565b915060005b8760050154811015610f4f5787600401600082815260200190815260200160002094508760060160060160009054906101000a900460ff168015610ea657508460010160009054906101000a900460ff161515891515145b15610f425760006064896006016005015460028b60030154610ec89190614945565b87610ed39190614c16565b886002015487610ee39190614a68565b610eed9190614945565b610ef79190614a68565b610f019190614945565b90508083610f0f91906148e2565b9250610f40308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836122b7565b505b8080600101915050610e4e565b505b60005b60065481101561101a5760006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000610fa06110ed565b610fa98361124b565b8b600d0154610fb89190614a68565b610fc29190614945565b90508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561100a573d6000803e3d6000fd5b5050508080600101915050610f54565b5086600f0160029054906101000a900460ff16156110e0578660020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d589600189898c6010016040518663ffffffff1660e01b815260040161109b959493929190614b7a565b6020604051808303816000875af11580156110ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110de9190614be9565b505b505050505050505b919050565b6000600254905090565b60006040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112b90614c96565b60405180910390fd5b6000600d6000858152602001908152602001600020905061115781338585612570565b50505050565b60006009905090565b6009818154811061117657600080fd5b90600052602060002001600091509050805461119190614816565b80601f01602080910402602001604051908101604052809291908181526020018280546111bd90614816565b801561120a5780601f106111df5761010080835404028352916020019161120a565b820191906000526020600020905b8154815290600101906020018083116111ed57829003601f168201915b505050505081565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006112a03385856122a5565b8373ffffffffffffffffffffffffffffffffffffffff1663216ed6ad3385856040518463ffffffff1660e01b81526004016112dd93929190614cb6565b600060405180830381600087803b1580156112f757600080fd5b505af115801561130b573d6000803e3d6000fd5b50505050600190509392505050565b60606004805461132990614816565b80601f016020809104026020016040519081016040528092919081815260200182805461135590614816565b80156113a25780601f10611377576101008083540402835291602001916113a2565b820191906000526020600020905b81548152906001019060200180831161138557829003601f168201915b5050505050905090565b6000600d600086815260200190815260200160002090506113ce843385612666565b6113da81858585612570565b5050505050565b6000803411611425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141c90614d5f565b60405180910390fd5b6001891015611469576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146090614dcb565b60405180910390fd5b651cae8c13e0008911156114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a990614e37565b60405180910390fd5b876001600281106114c6576114c5614a39565b5b6020020135600f6000600281106114e0576114df614a39565b5b01546114ec9190614a68565b88600060028110611500576114ff614a39565b5b6020020135600f60016002811061151a57611519614a39565b5b01546115269190614a68565b1015611567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155e90614ea3565b60405180910390fd5b8760016002811061157b5761157a614a39565b5b60200201358860006002811061159457611593614a39565b5b602002013511156115da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d190614f0f565b60405180910390fd5b866001600281106115ee576115ed614a39565b5b60200201358760006002811061160757611606614a39565b5b6020020135111561164d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164490614f7b565b60405180910390fd5b6064861115611691576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168890614fe7565b60405180910390fd5b600060088c8c6040516116a5929190615037565b9081526020016040518091039020905060008160020180549050036116ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f69061509c565b60405180910390fd5b600e6000815480929190611712906150bc565b9190505591506000600d60008481526020019081526020016000209050338160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508c8c8260010191826117859291906152bb565b503481600d018190555089816006016001019060026117a5929190613a7f565b5088816006016003019060026117bc929190613a7f565b50878160060160050181905550868160060160060160006101000a81548160ff0219169083151502179055508a81600601600001819055508a4261180091906148e2565b81600e01819055508281600001819055508581600f0160026101000a81548160ff02191690831515021790555084848260100191826118409291906153dc565b5061184b30346126fa565b3481600301819055507f6e5c598b821d7fa8550e5fea58ab6e27c59e1cbe1df75a8591aa0c453b49e10a836040516118839190613cbb565b60405180910390a150509a9950505050505050505050565b60076020528060005260406000206000915054906101000a900460ff1681565b600d6020528060005260406000206000915090508060000154908060010180546118e490614816565b80601f016020809104026020016040519081016040528092919081815260200182805461191090614816565b801561195d5780601f106119325761010080835404028352916020019161195d565b820191906000526020600020905b81548152906001019060200180831161194057829003601f168201915b5050505050908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003015490806005015490806006016040518060a001604052908160008201548152602001600182016002806020026040519081016040528092919082600280156119ea576020028201915b8154815260200190600101908083116119d6575b5050505050815260200160038201600280602002604051908101604052809291908260028015611a2f576020028201915b815481526020019060010190808311611a1b575b50505050508152602001600582015481526020016006820160009054906101000a900460ff1615151515815250509080600d01549080600e01549080600f0160009054906101000a900460ff169080600f0160019054906101000a900460ff169080600f0160029054906101000a900460ff1690806010018054611ab290614816565b80601f0160208091040260200160405190810160405280929190818152602001828054611ade90614816565b8015611b2b5780601f10611b0057610100808354040283529160200191611b2b565b820191906000526020600020905b815481529060010190602001808311611b0e57829003601f168201915b505050505090508c565b60006040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6990614c96565b60405180910390fd5b6060600060088484604051611b88929190615037565b9081526020016040518091039020905080600201805480602002602001604051908101604052809291908181526020016000905b82821015611c4e5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190611bbc565b5050505091505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008686905011611d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1f9061551e565b60405180910390fd5b600a6000815480929190611d3b906150bc565b91905055506009848490918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182611d7d9291906152bb565b50600060088585604051611d92929190615037565b908152602001604051809103902090506000816002018054905014611dec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de3906155b0565b60405180910390fd5b338160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508484826000019182611e429291906152bb565b50600080600090505b88889050811015611ee157888882818110611e6957611e68614a39565b5b9050604002016000013582611e7e91906148e2565b915082600201898983818110611e9757611e96614a39565b5b90506040020190806001815401808255809150506001900390600052602060002090600202016000909190919091508181611ed2919061575d565b50508080600101915050611e4b565b50620f42408114611f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1e906157dd565b60405180910390fd5b60005b84849050811015611fa25782600301858583818110611f4c57611f4b614a39565b5b9050602002810190611f5e919061580c565b90806001815401808255809150506001900390600052602060002090600202016000909190919091508181611f939190615973565b50508080600101915050611f2a565b5060008060005b84600301805490508110156120c6576000856003018281548110611fd057611fcf614a39565b5b90600052602060002090600202016000015490507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0bdc0811215612047576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203e906159f3565b60405180910390fd5b620f424081131561208d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208490615a85565b60405180910390fd5b60008113156120a95780846120a29190615aa5565b93506120b8565b80836120b59190615aa5565b92505b508080600101915050611fa9565b50620f424082131561210d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210490615b5b565b60405180910390fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0bdc0811215612170576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216790615bed565b60405180910390fd5b7fbd6277baf8ced6ab6543a1aef164635fc2bde1ba962d39d8a0fd81a5af24972788886040516121a1929190615c3a565b60405180910390a150505050505050505050565b6008818051602081018201805184825260208301602085012081835280955050505050506000915090508060000180546121ee90614816565b80601f016020809104026020016040519081016040528092919081815260200182805461221a90614816565b80156122675780601f1061223c57610100808354040283529160200191612267565b820191906000526020600020905b81548152906001019060200180831161224a57829003601f168201915b5050505050908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040154905083565b600033905090565b6122b2838383600161277c565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123095780600260008282546122fd91906148e2565b925050819055506123dc565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612395578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161238c93929190614cb6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124255780600260008282540392505081905550612472565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124cf9190613cbb565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361254e5760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016125459190613e1b565b60405180910390fd5b61255a826000836122b7565b5050565b61256b8282600080612953565b505050565b83600e01544211156125b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ae90615caa565b60405180910390fd5b60008460050160008154809291906125ce906150bc565b91905055905060008560040160008381526020019081526020016000209050848160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828160010160006101000a81548160ff021916908315150217905550838160020181905550818160000181905550505050505050565b60006126728484611c5b565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146126f457818110156126e4578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016126db93929190614cb6565b60405180910390fd5b6126f38484848403600061277c565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361276c5760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016127639190613e1b565b60405180910390fd5b612778600083836122b7565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036127ee5760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016127e59190613e1b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128605760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016128579190613e1b565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550801561294d578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516129449190613cbb565b60405180910390a35b50505050565b6000600c548210612966578390506134f3565b60006008866040516129789190615cfb565b9081526020016040518091039020905060008160020180549050036129a057849150506134f3565b60005b8160030180549050811015612ad45760008260030182815481106129ca576129c9614a39565b5b9060005260206000209060020201600001541215612ac757612ab9878360030183815481106129fc576129fb614a39565b5b906000526020600020906002020160405180604001604052908160008201548152602001600182018054612a2f90614816565b80601f0160208091040260200160405190810160405280929190818152602001828054612a5b90614816565b8015612aa85780601f10612a7d57610100808354040283529160200191612aa8565b820191906000526020600020905b815481529060010190602001808311612a8b57829003601f168201915b5050505050815250508888886134fb565b86612ac49190615d12565b95505b80806001019150506129a3565b5060005b8160030180549050811015612c09576000826003018281548110612aff57612afe614a39565b5b9060005260206000209060020201600001541315612bfc57612bee87836003018381548110612b3157612b30614a39565b5b906000526020600020906002020160405180604001604052908160008201548152602001600182018054612b6490614816565b80601f0160208091040260200160405190810160405280929190818152602001828054612b9090614816565b8015612bdd5780601f10612bb257610100808354040283529160200191612bdd565b820191906000526020600020905b815481529060010190602001808311612bc057829003601f168201915b5050505050815250508888886134fb565b86612bf99190615d12565b95505b8080600101915050612ad8565b506000851315612ef557612ed4816040518060a0016040529081600082018054612c3290614816565b80601f0160208091040260200160405190810160405280929190818152602001828054612c5e90614816565b8015612cab5780601f10612c8057610100808354040283529160200191612cab565b820191906000526020600020905b815481529060010190602001808311612c8e57829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015612dc15783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190612d2f565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015612ebc578382906000526020600020906002020160405180604001604052908160008201548152602001600182018054612e2b90614816565b80601f0160208091040260200160405190810160405280929190818152602001828054612e5790614816565b8015612ea45780601f10612e7957610100808354040283529160200191612ea4565b820191906000526020600020905b815481529060010190602001808311612e8757829003601f168201915b50505050508152505081526020019060010190612dee565b505050508152602001600482015481525050866136c6565b5084816004016000828254612ee991906148e2565b925050819055506134f1565b6000858260040154612f079190615aa5565b126131f8576131cd816040518060a0016040529081600082018054612f2b90614816565b80601f0160208091040260200160405190810160405280929190818152602001828054612f5790614816565b8015612fa45780601f10612f7957610100808354040283529160200191612fa4565b820191906000526020600020905b815481529060010190602001808311612f8757829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b828210156130ba5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190613028565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156131b557838290600052602060002090600202016040518060400160405290816000820154815260200160018201805461312490614816565b80601f016020809104026020016040519081016040528092919081815260200182805461315090614816565b801561319d5780601f106131725761010080835404028352916020019161319d565b820191906000526020600020905b81548152906001019060200180831161318057829003601f168201915b505050505081525050815260200190600101906130e7565b505050508152602001600482015481525050866136c6565b9150846131d990615d55565b8160040160008282546131ec9190614c16565b925050819055506134f0565b8481600401546132089190615aa5565b91506134d8816040518060a001604052908160008201805461322990614816565b80601f016020809104026020016040519081016040528092919081815260200182805461325590614816565b80156132a25780601f10613277576101008083540402835291602001916132a2565b820191906000526020600020905b81548152906001019060200180831161328557829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b828210156133b85783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190613326565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156134b357838290600052602060002090600202016040518060400160405290816000820154815260200160018201805461342290614816565b80601f016020809104026020016040519081016040528092919081815260200182805461344e90614816565b801561349b5780601f106134705761010080835404028352916020019161349b565b820191906000526020600020905b81548152906001019060200180831161347e57829003601f168201915b505050505081525050815260200190600101906133e5565b50505050815260200160048201548152505082600401546134d390615d55565b6136c6565b826134e39190615aa5565b9150600081600401819055505b5b505b949350505050565b6000620f42408560000151856135119190615d9d565b61351b9190615e15565b905060008560200151510361357d57600081121561356e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161356590615ef1565b60405180910390fd5b61357830826124dc565b6136bd565b6000600b8760405161358f9190615cfb565b908152602001604051809103902086602001516040516135af9190615cfb565b9081526020016040518091039020549050831561361c5760008212156135f757806135d990615d55565b82136135ee57806135e990615d55565b6135f0565b815b915061361b565b8061360190615d55565b8212613616578061361190615d55565b613618565b815b91505b5b600061365587602001518487806136435750600087148015613642575060008a60000151125b5b60018861365091906148e2565b612953565b905080836136639190615d12565b925082600b896040516136769190615cfb565b908152602001604051809103902088602001516040516136969190615cfb565b908152602001604051809103902060008282546136b39190615aa5565b9250508190555050505b95945050505050565b60008060005b846040015151811015613820576000856040015182815181106136f2576136f1614a39565b5b6020026020010151602001519050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661381257806005600060066000815480929190613769906150bc565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5080806001019150506136cc565b5060005b846040015151811015613a775760008560400151828151811061384a57613849614a39565b5b60200260200101519050600060018760400151516138689190614c16565b8310156138a257620f42408260000151876138839190615d9d565b61388d9190615e15565b9050808461389b9190615aa5565b93506138b1565b83866138ae9190615d12565b90505b60008113156139ec576138c9308360200151836122b7565b60076000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166139e7578160200151600560006006600081548092919061393a906150bc565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160076000846020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b613a68565b806139f690615d55565b613a03836020015161124b565b1015613a4e57613a16826020015161124b565b81613a219190615aa5565b85613a2c9190615aa5565b9450613a49826020015130613a44856020015161124b565b6122b7565b613a67565b613a6682602001513083613a6190615d55565b6122b7565b5b5b50508080600101915050613824565b505092915050565b8260028101928215613aae579160200282015b82811115613aad578235825591602001919060010190613a92565b5b509050613abb9190613abf565b5090565b5b80821115613ad8576000816000905550600101613ac0565b5090565b600081519050919050565b600082825260208201905092915050565b60005b83811015613b16578082015181840152602081019050613afb565b60008484015250505050565b6000601f19601f8301169050919050565b6000613b3e82613adc565b613b488185613ae7565b9350613b58818560208601613af8565b613b6181613b22565b840191505092915050565b60006020820190508181036000830152613b868184613b33565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613bcd82613ba2565b9050919050565b613bdd81613bc2565b8114613be857600080fd5b50565b600081359050613bfa81613bd4565b92915050565b6000819050919050565b613c1381613c00565b8114613c1e57600080fd5b50565b600081359050613c3081613c0a565b92915050565b60008060408385031215613c4d57613c4c613b98565b5b6000613c5b85828601613beb565b9250506020613c6c85828601613c21565b9150509250929050565b60008115159050919050565b613c8b81613c76565b82525050565b6000602082019050613ca66000830184613c82565b92915050565b613cb581613c00565b82525050565b6000602082019050613cd06000830184613cac565b92915050565b600060208284031215613cec57613ceb613b98565b5b6000613cfa84828501613c21565b91505092915050565b600080600060608486031215613d1c57613d1b613b98565b5b6000613d2a86828701613beb565b9350506020613d3b86828701613beb565b9250506040613d4c86828701613c21565b9150509250925092565b613d5f81613c76565b8114613d6a57600080fd5b50565b600081359050613d7c81613d56565b92915050565b600080600060608486031215613d9b57613d9a613b98565b5b6000613da986828701613c21565b9350506020613dba86828701613c21565b9250506040613dcb86828701613d6d565b9150509250925092565b600060ff82169050919050565b613deb81613dd5565b82525050565b6000602082019050613e066000830184613de2565b92915050565b613e1581613bc2565b82525050565b6000602082019050613e306000830184613e0c565b92915050565b600060208284031215613e4c57613e4b613b98565b5b6000613e5a84828501613beb565b91505092915050565b600080600060608486031215613e7c57613e7b613b98565b5b6000613e8a86828701613beb565b9350506020613e9b86828701613c21565b9250506040613eac86828701613c21565b9150509250925092565b60008060008060808587031215613ed057613ecf613b98565b5b6000613ede87828801613c21565b9450506020613eef87828801613beb565b9350506040613f0087828801613c21565b9250506060613f1187828801613d6d565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112613f4257613f41613f1d565b5b8235905067ffffffffffffffff811115613f5f57613f5e613f22565b5b602083019150836001820283011115613f7b57613f7a613f27565b5b9250929050565b600081905082602060020282011115613f9e57613f9d613f27565b5b92915050565b60008083601f840112613fba57613fb9613f1d565b5b8235905067ffffffffffffffff811115613fd757613fd6613f22565b5b602083019150836001820283011115613ff357613ff2613f27565b5b9250929050565b6000806000806000806000806000806101408b8d03121561401e5761401d613b98565b5b60008b013567ffffffffffffffff81111561403c5761403b613b9d565b5b6140488d828e01613f2c565b9a509a5050602061405b8d828e01613c21565b985050604061406c8d828e01613f82565b975050608061407d8d828e01613f82565b96505060c061408e8d828e01613c21565b95505060e061409f8d828e01613d6d565b9450506101006140b18d828e01613d6d565b9350506101208b013567ffffffffffffffff8111156140d3576140d2613b9d565b5b6140df8d828e01613fa4565b92509250509295989b9194979a5092959850565b6140fc81613c00565b82525050565b600060029050919050565b600081905092915050565b6000819050919050565b600061412e83836140f3565b60208301905092915050565b6000602082019050919050565b61415081614102565b61415a818461410d565b925061416582614118565b8060005b8381101561419657815161417d8782614122565b96506141888361413a565b925050600181019050614169565b505050505050565b6141a781613c76565b82525050565b60e0820160008201516141c360008501826140f3565b5060208201516141d66020850182614147565b5060408201516141e96060850182614147565b5060608201516141fc60a08501826140f3565b50608082015161420f60c085018261419e565b50505050565b600081519050919050565b600082825260208201905092915050565b600061423c82614215565b6142468185614220565b9350614256818560208601613af8565b61425f81613b22565b840191505092915050565b600061024082019050614280600083018f613cac565b8181036020830152614292818e613b33565b90506142a1604083018d613e0c565b6142ae606083018c613cac565b6142bb608083018b613cac565b6142c860a083018a6141ad565b6142d6610180830189613cac565b6142e46101a0830188613cac565b6142f26101c0830187613c82565b6143006101e0830186613c82565b61430e610200830185613c82565b8181036102208301526143218184614231565b90509d9c50505050505050505050505050565b6000806020838503121561434b5761434a613b98565b5b600083013567ffffffffffffffff81111561436957614368613b9d565b5b61437585828601613f2c565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6143b681613bc2565b82525050565b6040820160008201516143d260008501826140f3565b5060208201516143e560208501826143ad565b50505050565b60006143f783836143bc565b60408301905092915050565b6000602082019050919050565b600061441b82614381565b614425818561438c565b93506144308361439d565b8060005b8381101561446157815161444888826143eb565b975061445383614403565b925050600181019050614434565b5085935050505092915050565b600060208201905081810360008301526144888184614410565b905092915050565b600080604083850312156144a7576144a6613b98565b5b60006144b585828601613beb565b92505060206144c685828601613beb565b9150509250929050565b60008083601f8401126144e6576144e5613f1d565b5b8235905067ffffffffffffffff81111561450357614502613f22565b5b60208301915083604082028301111561451f5761451e613f27565b5b9250929050565b60008083601f84011261453c5761453b613f1d565b5b8235905067ffffffffffffffff81111561455957614558613f22565b5b60208301915083602082028301111561457557614574613f27565b5b9250929050565b6000806000806000806060878903121561459957614598613b98565b5b600087013567ffffffffffffffff8111156145b7576145b6613b9d565b5b6145c389828a016144d0565b9650965050602087013567ffffffffffffffff8111156145e6576145e5613b9d565b5b6145f289828a01613f2c565b9450945050604087013567ffffffffffffffff81111561461557614614613b9d565b5b61462189828a01614526565b92509250509295509295509295565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61466d82613b22565b810181811067ffffffffffffffff8211171561468c5761468b614635565b5b80604052505050565b600061469f613b8e565b90506146ab8282614664565b919050565b600067ffffffffffffffff8211156146cb576146ca614635565b5b6146d482613b22565b9050602081019050919050565b82818337600083830152505050565b60006147036146fe846146b0565b614695565b90508281526020810184848401111561471f5761471e614630565b5b61472a8482856146e1565b509392505050565b600082601f83011261474757614746613f1d565b5b81356147578482602086016146f0565b91505092915050565b60006020828403121561477657614775613b98565b5b600082013567ffffffffffffffff81111561479457614793613b9d565b5b6147a084828501614732565b91505092915050565b600060608201905081810360008301526147c38186613b33565b90506147d26020830185613e0c565b6147df6040830184613cac565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061482e57607f821691505b602082108103614841576148406147e7565b5b50919050565b7f506f6f6c20697320616c7265616479207265736f6c7665640000000000000000600082015250565b600061487d601883613ae7565b915061488882614847565b602082019050919050565b600060208201905081810360008301526148ac81614870565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006148ed82613c00565b91506148f883613c00565b92508282019050808211156149105761490f6148b3565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061495082613c00565b915061495b83613c00565b92508261496b5761496a614916565b5b828204905092915050565b600061498182613c00565b915061498c83613c00565b92508261499c5761499b614916565b5b828206905092915050565b7f506f6f6c20656e642074696d6520686173206e6f74207965742061727269766560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a03602183613ae7565b9150614a0e826149a7565b604082019050919050565b60006020820190508181036000830152614a32816149f6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614a7382613c00565b9150614a7e83613c00565b9250828202614a8c81613c00565b91508282048414831517614aa357614aa26148b3565b5b5092915050565b6000606082019050614abf6000830186613cac565b614acc6020830185613c82565b614ad96040830184613c82565b949350505050565b60008190508160005260206000209050919050565b60008154614b0381614816565b614b0d8186614220565b94506001821660008114614b285760018114614b3e57614b71565b60ff198316865281151560200286019350614b71565b614b4785614ae1565b60005b83811015614b6957815481890152600182019150602081019050614b4a565b808801955050505b50505092915050565b600060a082019050614b8f6000830188613c82565b614b9c6020830187613c82565b614ba96040830186613cac565b614bb66060830185613cac565b8181036080830152614bc88184614af6565b90509695505050505050565b600081519050614be381613c0a565b92915050565b600060208284031215614bff57614bfe613b98565b5b6000614c0d84828501614bd4565b91505092915050565b6000614c2182613c00565b9150614c2c83613c00565b9250828203905081811115614c4457614c436148b3565b5b92915050565b7f524550207472616e73666572206973206e6f7420616c6c6f7765640000000000600082015250565b6000614c80601b83613ae7565b9150614c8b82614c4a565b602082019050919050565b60006020820190508181036000830152614caf81614c73565b9050919050565b6000606082019050614ccb6000830186613e0c565b614cd86020830185613cac565b614ce56040830184613cac565b949350505050565b7f46656520697320726571756972656420746f20696e6974696174652076616c6960008201527f646174696f6e20706f6f6c000000000000000000000000000000000000000000602082015250565b6000614d49602b83613ae7565b9150614d5482614ced565b604082019050919050565b60006020820190508181036000830152614d7881614d3c565b9050919050565b7f4475726174696f6e20697320746f6f2073686f72740000000000000000000000600082015250565b6000614db5601583613ae7565b9150614dc082614d7f565b602082019050919050565b60006020820190508181036000830152614de481614da8565b9050919050565b7f4475726174696f6e20697320746f6f206c6f6e67000000000000000000000000600082015250565b6000614e21601483613ae7565b9150614e2c82614deb565b602082019050919050565b60006020820190508181036000830152614e5081614e14565b9050919050565b7f51756f72756d2069732062656c6f77206d696e696d756d000000000000000000600082015250565b6000614e8d601783613ae7565b9150614e9882614e57565b602082019050919050565b60006020820190508181036000830152614ebc81614e80565b9050919050565b7f51756f72756d2069732067726561746572207468616e206f6e65000000000000600082015250565b6000614ef9601a83613ae7565b9150614f0482614ec3565b602082019050919050565b60006020820190508181036000830152614f2881614eec565b9050919050565b7f57696e20726174696f2069732067726561746572207468616e206f6e65000000600082015250565b6000614f65601d83613ae7565b9150614f7082614f2f565b602082019050919050565b60006020820190508181036000830152614f9481614f58565b9050919050565b7f42696e64696e672070657263656e74206d757374206265203c3d203130300000600082015250565b6000614fd1601e83613ae7565b9150614fdc82614f9b565b602082019050919050565b6000602082019050818103600083015261500081614fc4565b9050919050565b600081905092915050565b600061501e8385615007565b935061502b8385846146e1565b82840190509392505050565b6000615044828486615012565b91508190509392505050565b7f54617267657420706f7374206e6f7420666f756e640000000000000000000000600082015250565b6000615086601583613ae7565b915061509182615050565b602082019050919050565b600060208201905081810360008301526150b581615079565b9050919050565b60006150c782613c00565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036150f9576150f86148b3565b5b600182019050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026151717fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82615134565b61517b8683615134565b95508019841693508086168417925050509392505050565b6000819050919050565b60006151b86151b36151ae84613c00565b615193565b613c00565b9050919050565b6000819050919050565b6151d28361519d565b6151e66151de826151bf565b848454615141565b825550505050565b600090565b6151fb6151ee565b6152068184846151c9565b505050565b5b8181101561522a5761521f6000826151f3565b60018101905061520c565b5050565b601f82111561526f576152408161510f565b61524984615124565b81016020851015615258578190505b61526c61526485615124565b83018261520b565b50505b505050565b600082821c905092915050565b600061529260001984600802615274565b1980831691505092915050565b60006152ab8383615281565b9150826002028217905092915050565b6152c58383615104565b67ffffffffffffffff8111156152de576152dd614635565b5b6152e88254614816565b6152f382828561522e565b6000601f8311600181146153225760008415615310578287013590505b61531a858261529f565b865550615382565b601f1984166153308661510f565b60005b8281101561535857848901358255600182019150602085019450602081019050615333565b868310156153755784890135615371601f891682615281565b8355505b6001600288020188555050505b50505050505050565b600082905092915050565b601f8211156153d7576153a881614ae1565b6153b184615124565b810160208510156153c0578190505b6153d46153cc85615124565b83018261520b565b50505b505050565b6153e6838361538b565b67ffffffffffffffff8111156153ff576153fe614635565b5b6154098254614816565b615414828285615396565b6000601f8311600181146154435760008415615431578287013590505b61543b858261529f565b8655506154a3565b601f19841661545186614ae1565b60005b8281101561547957848901358255600182019150602085019450602081019050615454565b868310156154965784890135615492601f891682615281565b8355505b6001600288020188555050505b50505050505050565b7f506f7374206d75737420696e636c756465206174206c65617374206f6e65206160008201527f7574686f72000000000000000000000000000000000000000000000000000000602082015250565b6000615508602583613ae7565b9150615513826154ac565b604082019050919050565b60006020820190508181036000830152615537816154fb565b9050919050565b7f4120706f73742077697468207468697320636f6e74656e74496420616c72656160008201527f6479206578697374730000000000000000000000000000000000000000000000602082015250565b600061559a602983613ae7565b91506155a58261553e565b604082019050919050565b600060208201905081810360008301526155c98161558d565b9050919050565b600081356155dd81613c0a565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61561f846155e6565b9350801983169250808416831791505092915050565b61563e8261519d565b61565161564a826151bf565b83546155f3565b8255505050565b6000813561566581613bd4565b80915050919050565b600073ffffffffffffffffffffffffffffffffffffffff61568e846155e6565b9350801983169250808416831791505092915050565b60006156bf6156ba6156b584613ba2565b615193565b613ba2565b9050919050565b60006156d1826156a4565b9050919050565b60006156e3826156c6565b9050919050565b6000819050919050565b6156fd826156d8565b615710615709826156ea565b835461566e565b8255505050565b600081016000830180615729816155d0565b90506157358184615635565b50505060018101602083018061574a81615658565b905061575681846156f4565b5050505050565b6157678282615717565b5050565b7f417574686f722077656967687473206d7573742073756d20746f20313030303060008201527f3030000000000000000000000000000000000000000000000000000000000000602082015250565b60006157c7602283613ae7565b91506157d28261576b565b604082019050919050565b600060208201905081810360008301526157f6816157ba565b9050919050565b600080fd5b600080fd5b600080fd5b600082356001604003833603038112615828576158276157fd565b5b80830191505092915050565b6000819050919050565b61584781615834565b811461585257600080fd5b50565b600081356158628161583e565b80915050919050565b600061588661588161587c84615834565b615193565b615834565b9050919050565b6000819050919050565b6158a08261586b565b6158b36158ac8261588d565b83546155f3565b8255505050565b600080833560016020038436030381126158d7576158d66157fd565b5b80840192508235915067ffffffffffffffff8211156158f9576158f8615802565b5b60208301925060018202360383131561591557615914615807565b5b509250929050565b6159288383836152bb565b505050565b60008101600083018061593f81615855565b905061594b8184615897565b505050600181016020830161596081856158ba565b61596b81838661591d565b505050505050565b61597d828261592d565b5050565b7f45616368206369746174696f6e20776569676874206d757374206265203e3d2060008201527f2d31303030303030000000000000000000000000000000000000000000000000602082015250565b60006159dd602883613ae7565b91506159e882615981565b604082019050919050565b60006020820190508181036000830152615a0c816159d0565b9050919050565b7f45616368206369746174696f6e20776569676874206d757374206265203c3d2060008201527f3130303030303000000000000000000000000000000000000000000000000000602082015250565b6000615a6f602783613ae7565b9150615a7a82615a13565b604082019050919050565b60006020820190508181036000830152615a9e81615a62565b9050919050565b6000615ab082615834565b9150615abb83615834565b925082820190508281121560008312168382126000841215161715615ae357615ae26148b3565b5b92915050565b7f53756d206f6620706f736974697665206369746174696f6e73206d757374206260008201527f65203c3d20313030303030300000000000000000000000000000000000000000602082015250565b6000615b45602c83613ae7565b9150615b5082615ae9565b604082019050919050565b60006020820190508181036000830152615b7481615b38565b9050919050565b7f53756d206f66206e65676174697665206369746174696f6e73206d757374206260008201527f65203e3d202d3130303030303000000000000000000000000000000000000000602082015250565b6000615bd7602d83613ae7565b9150615be282615b7b565b604082019050919050565b60006020820190508181036000830152615c0681615bca565b9050919050565b6000615c198385613ae7565b9350615c268385846146e1565b615c2f83613b22565b840190509392505050565b60006020820190508181036000830152615c55818486615c0d565b90509392505050565b7f506f6f6c20656e642074696d6520686173207061737365640000000000000000600082015250565b6000615c94601883613ae7565b9150615c9f82615c5e565b602082019050919050565b60006020820190508181036000830152615cc381615c87565b9050919050565b6000615cd582613adc565b615cdf8185615007565b9350615cef818560208601613af8565b80840191505092915050565b6000615d078284615cca565b915081905092915050565b6000615d1d82615834565b9150615d2883615834565b9250828203905081811260008412168282136000851215161715615d4f57615d4e6148b3565b5b92915050565b6000615d6082615834565b91507f80000000000000000000000000000000000000000000000000000000000000008203615d9257615d916148b3565b5b816000039050919050565b6000615da882615834565b9150615db383615834565b9250828202615dc181615834565b91507f80000000000000000000000000000000000000000000000000000000000000008414600084121615615df957615df86148b3565b5b8282058414831517615e0e57615e0d6148b3565b5b5092915050565b6000615e2082615834565b9150615e2b83615834565b925082615e3b57615e3a614916565b5b600160000383147f800000000000000000000000000000000000000000000000000000000000000083141615615e7457615e736148b3565b5b828205905092915050565b7f4c65616368696e672066726f6d20696e63696e657261746f7220697320666f7260008201527f62696464656e0000000000000000000000000000000000000000000000000000602082015250565b6000615edb602683613ae7565b9150615ee682615e7f565b604082019050919050565b60006020820190508181036000830152615f0a81615ece565b905091905056fea26469706673582212209f1eb3ff12aa3e0b4012bf2fd5064caa9b3995b97c752a0a223c5e60febeb27a64736f6c63430008180033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/backend/contractArtifacts/Onboarding.json b/backend/contractArtifacts/Onboarding.json index 4f4944e..8c61892 100644 --- a/backend/contractArtifacts/Onboarding.json +++ b/backend/contractArtifacts/Onboarding.json @@ -458,7 +458,7 @@ "components": [ { "internalType": "int256", - "name": "weightPercent", + "name": "weightPPM", "type": "int256" }, { @@ -478,8 +478,8 @@ "type": "function" } ], - "bytecode": "0x60a06040523480156200001157600080fd5b50604051620035a8380380620035a88339818101604052810190620000379190620001c1565b828282828073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505080600181905550816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050506200021d565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620000f582620000c8565b9050919050565b60006200010982620000e8565b9050919050565b6200011b81620000fc565b81146200012757600080fd5b50565b6000815190506200013b8162000110565b92915050565b60006200014e82620000e8565b9050919050565b620001608162000141565b81146200016c57600080fd5b50565b600081519050620001808162000155565b92915050565b6000819050919050565b6200019b8162000186565b8114620001a757600080fd5b50565b600081519050620001bb8162000190565b92915050565b600080600060608486031215620001dd57620001dc620000c3565b5b6000620001ed868287016200012a565b935050602062000200868287016200016f565b92505060406200021386828701620001aa565b9150509250925092565b60805161334c6200025c6000396000818161097f01528181610a4f01528181610b6c01528181610d7f01528181610f970152611029015261334c6000f3fe6080604052600436106100e85760003560e01c8063a035b1fe1161008a578063cf37625611610059578063cf376256146102de578063d0fae95f1461031c578063d5a44f8614610345578063d76b679414610385576100e8565b8063a035b1fe14610222578063b4e6a1d51461024d578063b5b20c001461028a578063c4a9e116146102b3576100e8565b8063815a0572116100c6578063815a05721461015d57806381d12c581461019a578063854b6a4f146101dd57806399ad6c5614610206576100e8565b80630d0271d6146100ed578063216ed6ad146101095780635badbe4c14610132575b600080fd5b610107600480360381019061010291906117fb565b6103b0565b005b34801561011557600080fd5b50610130600480360381019061012b91906118dc565b61049e565b005b34801561013e57600080fd5b506101476105b1565b604051610154919061193e565b60405180910390f35b34801561016957600080fd5b50610184600480360381019061017f91906119af565b6105b7565b604051610191919061193e565b60405180910390f35b3480156101a657600080fd5b506101c160048036038101906101bc9190611a23565b610636565b6040516101d49796959493929190611b81565b60405180910390f35b3480156101e957600080fd5b5061020460048036038101906101ff9190611c2a565b6107c2565b005b610220600480360381019061021b9190611c8c565b610c2c565b005b34801561022e57600080fd5b50610237610d75565b604051610244919061193e565b60405180910390f35b34801561025957600080fd5b50610274600480360381019061026f9190611d00565b610d7b565b604051610281919061193e565b60405180910390f35b34801561029657600080fd5b506102b160048036038101906102ac9190611d9a565b611127565b005b3480156102bf57600080fd5b506102c861129c565b6040516102d5919061193e565b60405180910390f35b3480156102ea57600080fd5b5061030560048036038101906103009190611a23565b6112a2565b604051610313929190611dda565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e9190611e59565b6112c6565b005b34801561035157600080fd5b5061036c60048036038101906103679190611a23565b6114ff565b60405161037c9493929190611eee565b60405180910390f35b34801561039157600080fd5b5061039a61155c565b6040516103a7919061193e565b60405180910390f35b6001543410156103f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ec90611f7f565b60405180910390fd5b60006007600081548092919061040a90611fce565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034816001018190555061047c82611562565b8160030181905550838382600401918261049792919061225c565b5050505050565b600082116104e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d890612378565b60405180910390fd5b6000600560008154809291906104f690611fce565b9190505590506000600460008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838160010181905550824261056b9190612398565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9826040516105a2919061193e565b60405180910390a15050505050565b60075481565b60008083838101906105c99190611a23565b9050600060026000838152602001908152602001600020905080600001546001819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f2082600154604051610620929190611dda565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461069e9061207f565b80601f01602080910402602001604051908101604052809291908181526020018280546106ca9061207f565b80156107175780601f106106ec57610100808354040283529160200191610717565b820191906000526020600020905b8154815290600101906020018083116106fa57829003601f168201915b50505050509080600501805461072c9061207f565b80601f01602080910402602001604051908101604052809291908181526020018280546107589061207f565b80156107a55780601f1061077a576101008083540402835291602001916107a5565b820191906000526020600020905b81548152906001019060200180831161078857829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b6000600660008481526020019081526020016000209050600160038111156107ed576107ec611a5f565b5b8160020160009054906101000a900460ff16600381111561081157610810611a5f565b5b14610851576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084890612418565b60405180910390fd5b60006004600083600301548152602001908152602001600020905060028260020160006101000a81548160ff0219169083600381111561089457610893611a5f565b5b0217905550828260070160006101000a81548160ff0219169083151502179055506000600167ffffffffffffffff8111156108d2576108d1612021565b5b60405190808252806020026020018201604052801561090b57816020015b6108f861175c565b8152602001906001900390816108f05790505b5090506040518060400160405280606481526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508160008151811061097257610971612438565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b81526004016109e0939291906127d5565b600060405180830381600087803b1580156109fa57600080fd5b505af1158015610a0e573d6000803e3d6000fd5b505050507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc8585604051610a43929190612821565b60405180910390a160007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73600a8660010154610a9a9190612879565b8660010154610aa991906128aa565b8660050160146040518060400160405280600181526020016003815250604051806040016040528060018152602001600281525060646001808f604051602001610af3919061193e565b6040516020818303038152906040526040518a63ffffffff1660e01b8152600401610b25989796959493929190612a0a565b60206040518083038185885af1158015610b43573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b689190612aad565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015460016040518563ffffffff1660e01b8152600401610bf29493929190612ada565b600060405180830381600087803b158015610c0c57600080fd5b505af1158015610c20573d6000803e3d6000fd5b50505050505050505050565b600060036000815480929190610c4190611fce565b919050559050600060026000838152602001908152602001600020905085816000018190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632805b5d93487873388600189604051602001610cbb919061193e565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401610ceb96959493929190612b74565b60206040518083038185885af1158015610d09573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d2e9190612aad565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610d65919061193e565b60405180910390a1505050505050565b60015481565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0290612c49565b60405180910390fd5b60008383810190610e1c9190611a23565b90506000600660008381526020019081526020016000209050881580610e40575087155b15610ecb578060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600a8360010154610e949190612879565b9081150290604051600060405180830381858888f19350505050158015610ebf573d6000803e3d6000fd5b5060019250505061111d565b60606000600167ffffffffffffffff811115610eea57610ee9612021565b5b604051908082528060200260200182016040528015610f2357816020015b610f1061175c565b815260200190600190039081610f085790505b5090506040518060400160405280606481526020018460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525081600081518110610f8a57610f89612438565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600401856040518463ffffffff1660e01b8152600401610ff593929190612d90565b600060405180830381600087803b15801561100f57600080fd5b505af1158015611023573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73600a85600101546110749190612879565b856004016014604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518963ffffffff1660e01b81526004016110d09796959493929190612e02565b60206040518083038185885af11580156110ee573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111139190612aad565b5060009450505050505b9695505050505050565b60006004600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c790612f00565b60405180910390fd5b8060030160009054906101000a900460ff1615611222576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121990612f92565b60405180910390fd5b806002015442111561124757814261123a9190612398565b8160020181905550611260565b8181600201546112579190612398565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e98360405161128f919061193e565b60405180910390a1505050565b60055481565b60026020528060005260406000206000915090508060000154908060010154905082565b6000600660008781526020019081526020016000209050600060038111156112f1576112f0611a5f565b5b8160020160009054906101000a900460ff16600381111561131557611314611a5f565b5b14611355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134c90612ffe565b60405180910390fd5b6000600460008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611402576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f990613090565b60405180910390fd5b60018260020160006101000a81548160ff0219169083600381111561142a57611429611a5f565b5b0217905550858583600501918261144292919061225c565b5060005b848490508110156114be578260060185858381811061146857611467612438565b5b905060200281019061147a91906130bf565b908060018154018082558091505060019003906000526020600020906002020160009091909190915081816114af919061326b565b50508080600101915050611446565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc876040516114ee919061193e565b60405180910390a150505050505050565b60046020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60035481565b600061156c6115e1565b9050600060046000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b483836040516115d3929190611dda565b60405180910390a150919050565b60008060005b600554811015611668576004600082815260200190815260200160002060030160009054906101000a900460ff1661165b576004600082815260200190815260200160002060020154421161165b576004600082815260200190815260200160002060010154826116589190612398565b91505b80806001019150506115e7565b50600081116116ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a3906132c5565b60405180910390fd5b600081446116ba91906132e5565b9050600080600090505b600554811015611755576004600082815260200190815260200160002060030160009054906101000a900460ff166117485760046000828152602001908152602001600020600201544211611748576004600082815260200190815260200160002060010154826117359190612398565b91508282111561174757809450611755565b5b80806001019150506116c4565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126117bb576117ba611796565b5b8235905067ffffffffffffffff8111156117d8576117d761179b565b5b6020830191508360018202830111156117f4576117f36117a0565b5b9250929050565b600080602083850312156118125761181161178c565b5b600083013567ffffffffffffffff8111156118305761182f611791565b5b61183c858286016117a5565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061187382611848565b9050919050565b61188381611868565b811461188e57600080fd5b50565b6000813590506118a08161187a565b92915050565b6000819050919050565b6118b9816118a6565b81146118c457600080fd5b50565b6000813590506118d6816118b0565b92915050565b6000806000606084860312156118f5576118f461178c565b5b600061190386828701611891565b9350506020611914868287016118c7565b9250506040611925868287016118c7565b9150509250925092565b611938816118a6565b82525050565b6000602082019050611953600083018461192f565b92915050565b60008083601f84011261196f5761196e611796565b5b8235905067ffffffffffffffff81111561198c5761198b61179b565b5b6020830191508360018202830111156119a8576119a76117a0565b5b9250929050565b600080600080606085870312156119c9576119c861178c565b5b60006119d7878288016118c7565b94505060206119e8878288016118c7565b935050604085013567ffffffffffffffff811115611a0957611a08611791565b5b611a1587828801611959565b925092505092959194509250565b600060208284031215611a3957611a3861178c565b5b6000611a47848285016118c7565b91505092915050565b611a5981611868565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110611a9f57611a9e611a5f565b5b50565b6000819050611ab082611a8e565b919050565b6000611ac082611aa2565b9050919050565b611ad081611ab5565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611b10578082015181840152602081019050611af5565b60008484015250505050565b6000601f19601f8301169050919050565b6000611b3882611ad6565b611b428185611ae1565b9350611b52818560208601611af2565b611b5b81611b1c565b840191505092915050565b60008115159050919050565b611b7b81611b66565b82525050565b600060e082019050611b96600083018a611a50565b611ba3602083018961192f565b611bb06040830188611ac7565b611bbd606083018761192f565b8181036080830152611bcf8186611b2d565b905081810360a0830152611be38185611b2d565b9050611bf260c0830184611b72565b98975050505050505050565b611c0781611b66565b8114611c1257600080fd5b50565b600081359050611c2481611bfe565b92915050565b60008060408385031215611c4157611c4061178c565b5b6000611c4f858286016118c7565b9250506020611c6085828601611c15565b9150509250929050565b600081905082602060030282011115611c8657611c856117a0565b5b92915050565b60008060008060a08587031215611ca657611ca561178c565b5b6000611cb4878288016118c7565b945050602085013567ffffffffffffffff811115611cd557611cd4611791565b5b611ce1878288016117a5565b93509350506040611cf487828801611c6a565b91505092959194509250565b60008060008060008060a08789031215611d1d57611d1c61178c565b5b6000611d2b89828a01611c15565b9650506020611d3c89828a01611c15565b9550506040611d4d89828a016118c7565b9450506060611d5e89828a016118c7565b935050608087013567ffffffffffffffff811115611d7f57611d7e611791565b5b611d8b89828a01611959565b92509250509295509295509295565b60008060408385031215611db157611db061178c565b5b6000611dbf858286016118c7565b9250506020611dd0858286016118c7565b9150509250929050565b6000604082019050611def600083018561192f565b611dfc602083018461192f565b9392505050565b60008083601f840112611e1957611e18611796565b5b8235905067ffffffffffffffff811115611e3657611e3561179b565b5b602083019150836020820283011115611e5257611e516117a0565b5b9250929050565b600080600080600060608688031215611e7557611e7461178c565b5b6000611e83888289016118c7565b955050602086013567ffffffffffffffff811115611ea457611ea3611791565b5b611eb0888289016117a5565b9450945050604086013567ffffffffffffffff811115611ed357611ed2611791565b5b611edf88828901611e03565b92509250509295509295909350565b6000608082019050611f036000830187611a50565b611f10602083018661192f565b611f1d604083018561192f565b611f2a6060830184611b72565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611f69601083611ae1565b9150611f7482611f33565b602082019050919050565b60006020820190508181036000830152611f9881611f5c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611fd9826118a6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361200b5761200a611f9f565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061209757607f821691505b6020821081036120aa576120a9612050565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026121127fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826120d5565b61211c86836120d5565b95508019841693508086168417925050509392505050565b6000819050919050565b600061215961215461214f846118a6565b612134565b6118a6565b9050919050565b6000819050919050565b6121738361213e565b61218761217f82612160565b8484546120e2565b825550505050565b600090565b61219c61218f565b6121a781848461216a565b505050565b5b818110156121cb576121c0600082612194565b6001810190506121ad565b5050565b601f821115612210576121e1816120b0565b6121ea846120c5565b810160208510156121f9578190505b61220d612205856120c5565b8301826121ac565b50505b505050565b600082821c905092915050565b600061223360001984600802612215565b1980831691505092915050565b600061224c8383612222565b9150826002028217905092915050565b6122668383612016565b67ffffffffffffffff81111561227f5761227e612021565b5b612289825461207f565b6122948282856121cf565b6000601f8311600181146122c357600084156122b1578287013590505b6122bb8582612240565b865550612323565b601f1984166122d1866120b0565b60005b828110156122f9578489013582556001820191506020850194506020810190506122d4565b868310156123165784890135612312601f891682612222565b8355505b6001600288020188555050505b50505050505050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b6000612362601183611ae1565b915061236d8261232c565b602082019050919050565b6000602082019050818103600083015261239181612355565b9050919050565b60006123a3826118a6565b91506123ae836118a6565b92508282019050808211156123c6576123c5611f9f565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b6000612402602083611ae1565b915061240d826123cc565b602082019050919050565b60006020820190508181036000830152612431816123f5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61249c816118a6565b82525050565b6124ab81611868565b82525050565b6040820160008201516124c76000850182612493565b5060208201516124da60208501826124a2565b50505050565b60006124ec83836124b1565b60408301905092915050565b6000602082019050919050565b600061251082612467565b61251a8185612472565b935061252583612483565b8060005b8381101561255657815161253d88826124e0565b9750612548836124f8565b925050600181019050612529565b5085935050505092915050565b600081546125708161207f565b61257a8186611ae1565b9450600182166000811461259557600181146125ab576125de565b60ff1983168652811515602002860193506125de565b6125b4856120b0565b60005b838110156125d6578154818901526001820191506020810190506125b7565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b600061264261263d83612618565b612625565b9050919050565b6000819050919050565b61265c81612649565b82525050565b600082825260208201905092915050565b600081546126808161207f565b61268a8186612662565b945060018216600081146126a557600181146126bb576126ee565b60ff1983168652811515602002860193506126ee565b6126c4856120b0565b60005b838110156126e6578154818901526001820191506020810190506126c7565b808801955050505b50505092915050565b600060408301600080840154905061270e8161262f565b61271b6000870182612653565b506001840185830360208701526127328382612673565b925050819250505092915050565b600061274c83836126f7565b905092915050565b6000600282019050919050565b600061276c826125e7565b61277681856125f2565b93508360208202850161278885612603565b8060005b858110156127c3578484038952816127a48582612740565b94506127af83612754565b925060208a0199505060018101905061278c565b50829750879550505050505092915050565b600060608201905081810360008301526127ef8186612505565b905081810360208301526128038185612563565b905081810360408301526128178184612761565b9050949350505050565b6000604082019050612836600083018561192f565b6128436020830184611b72565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612884826118a6565b915061288f836118a6565b92508261289f5761289e61284a565b5b828204905092915050565b60006128b5826118a6565b91506128c0836118a6565b92508282039050818111156128d8576128d7611f9f565b5b92915050565b600060029050919050565b600081905092915050565b6000819050919050565b600061290a8383612493565b60208301905092915050565b6000602082019050919050565b61292c816128de565b61293681846128e9565b9250612941826128f4565b8060005b8381101561297257815161295987826128fe565b965061296483612916565b925050600181019050612945565b505050505050565b6000819050919050565b600061299f61299a6129958461297a565b612134565b6118a6565b9050919050565b6129af81612984565b82525050565b600081519050919050565b600082825260208201905092915050565b60006129dc826129b5565b6129e681856129c0565b93506129f6818560208601611af2565b6129ff81611b1c565b840191505092915050565b6000610140820190508181036000830152612a25818b612563565b9050612a34602083018a61192f565b612a416040830189612923565b612a4e6080830188612923565b612a5b60c08301876129a6565b612a6860e0830186611b72565b612a76610100830185611b72565b818103610120830152612a8981846129d1565b90509998505050505050505050565b600081519050612aa7816118b0565b92915050565b600060208284031215612ac357612ac261178c565b5b6000612ad184828501612a98565b91505092915050565b6000608082019050612aef600083018761192f565b612afc6020830186611a50565b612b09604083018561192f565b612b166060830184611b72565b95945050505050565b82818337600083830152505050565b6000612b3a8385611ae1565b9350612b47838584612b1f565b612b5083611b1c565b840190509392505050565b82818337505050565b612b7060608383612b5b565b5050565b600060e0820190508181036000830152612b8f81888a612b2e565b9050612b9e6020830187611a50565b612bab6040830186612b64565b612bb860a0830185611b72565b81810360c0830152612bca81846129d1565b9050979650505050505050565b7f6f6e56616c6964617465206d6179206f6e6c792062652063616c6c656420627960008201527f207468652044414f20636f6e7472616374000000000000000000000000000000602082015250565b6000612c33603183611ae1565b9150612c3e82612bd7565b604082019050919050565b60006020820190508181036000830152612c6281612c26565b9050919050565b600081519050919050565b6000819050602082019050919050565b6000612c8f82611ad6565b612c998185612662565b9350612ca9818560208601611af2565b612cb281611b1c565b840191505092915050565b6000604083016000830151612cd56000860182612653565b5060208301518482036020860152612ced8282612c84565b9150508091505092915050565b6000612d068383612cbd565b905092915050565b6000602082019050919050565b6000612d2682612c69565b612d3081856125f2565b935083602082028501612d4285612c74565b8060005b85811015612d7e5784840389528151612d5f8582612cfa565b9450612d6a83612d0e565b925060208a01995050600181019050612d46565b50829750879550505050505092915050565b60006060820190508181036000830152612daa8186612505565b90508181036020830152612dbe8185612563565b90508181036040830152612dd28184612d1b565b9050949350505050565b50565b6000612dec6000836129c0565b9150612df782612ddc565b600082019050919050565b6000610140820190508181036000830152612e1d818a612563565b9050612e2c602083018961192f565b612e396040830188612923565b612e466080830187612923565b612e5360c08301866129a6565b612e6060e0830185611b72565b612e6e610100830184611b72565b818103610120830152612e8081612ddf565b905098975050505050505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b6000612eea603383611ae1565b9150612ef582612e8e565b604082019050919050565b60006020820190508181036000830152612f1981612edd565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b6000612f7c602483611ae1565b9150612f8782612f20565b604082019050919050565b60006020820190508181036000830152612fab81612f6f565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b6000612fe8601883611ae1565b9150612ff382612fb2565b602082019050919050565b6000602082019050818103600083015261301781612fdb565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b600061307a603a83611ae1565b91506130858261301e565b604082019050919050565b600060208201905081810360008301526130a98161306d565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126130db576130da6130b0565b5b80830191505092915050565b6130f081612649565b81146130fb57600080fd5b50565b6000813561310b816130e7565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61314d84613114565b9350801983169250808416831791505092915050565b600061317e61317961317484612649565b612134565b612649565b9050919050565b6000819050919050565b61319882613163565b6131ab6131a482613185565b8354613121565b8255505050565b600080833560016020038436030381126131cf576131ce6130b0565b5b80840192508235915067ffffffffffffffff8211156131f1576131f06130b5565b5b60208301925060018202360383131561320d5761320c6130ba565b5b509250929050565b61322083838361225c565b505050565b600081016000830180613237816130fe565b9050613243818461318f565b505050600181016020830161325881856131b2565b613263818386613215565b505050505050565b6132758282613225565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b60006132af601a83611ae1565b91506132ba82613279565b602082019050919050565b600060208201905081810360008301526132de816132a2565b9050919050565b60006132f0826118a6565b91506132fb836118a6565b92508261330b5761330a61284a565b5b82820690509291505056fea2646970667358221220164153e9f6ad91835bb31f8713d71c0bdf6c641329056becf94f10475988c58f64736f6c63430008180033", - "deployedBytecode": "0x6080604052600436106100e85760003560e01c8063a035b1fe1161008a578063cf37625611610059578063cf376256146102de578063d0fae95f1461031c578063d5a44f8614610345578063d76b679414610385576100e8565b8063a035b1fe14610222578063b4e6a1d51461024d578063b5b20c001461028a578063c4a9e116146102b3576100e8565b8063815a0572116100c6578063815a05721461015d57806381d12c581461019a578063854b6a4f146101dd57806399ad6c5614610206576100e8565b80630d0271d6146100ed578063216ed6ad146101095780635badbe4c14610132575b600080fd5b610107600480360381019061010291906117fb565b6103b0565b005b34801561011557600080fd5b50610130600480360381019061012b91906118dc565b61049e565b005b34801561013e57600080fd5b506101476105b1565b604051610154919061193e565b60405180910390f35b34801561016957600080fd5b50610184600480360381019061017f91906119af565b6105b7565b604051610191919061193e565b60405180910390f35b3480156101a657600080fd5b506101c160048036038101906101bc9190611a23565b610636565b6040516101d49796959493929190611b81565b60405180910390f35b3480156101e957600080fd5b5061020460048036038101906101ff9190611c2a565b6107c2565b005b610220600480360381019061021b9190611c8c565b610c2c565b005b34801561022e57600080fd5b50610237610d75565b604051610244919061193e565b60405180910390f35b34801561025957600080fd5b50610274600480360381019061026f9190611d00565b610d7b565b604051610281919061193e565b60405180910390f35b34801561029657600080fd5b506102b160048036038101906102ac9190611d9a565b611127565b005b3480156102bf57600080fd5b506102c861129c565b6040516102d5919061193e565b60405180910390f35b3480156102ea57600080fd5b5061030560048036038101906103009190611a23565b6112a2565b604051610313929190611dda565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e9190611e59565b6112c6565b005b34801561035157600080fd5b5061036c60048036038101906103679190611a23565b6114ff565b60405161037c9493929190611eee565b60405180910390f35b34801561039157600080fd5b5061039a61155c565b6040516103a7919061193e565b60405180910390f35b6001543410156103f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ec90611f7f565b60405180910390fd5b60006007600081548092919061040a90611fce565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034816001018190555061047c82611562565b8160030181905550838382600401918261049792919061225c565b5050505050565b600082116104e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d890612378565b60405180910390fd5b6000600560008154809291906104f690611fce565b9190505590506000600460008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838160010181905550824261056b9190612398565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9826040516105a2919061193e565b60405180910390a15050505050565b60075481565b60008083838101906105c99190611a23565b9050600060026000838152602001908152602001600020905080600001546001819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f2082600154604051610620929190611dda565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461069e9061207f565b80601f01602080910402602001604051908101604052809291908181526020018280546106ca9061207f565b80156107175780601f106106ec57610100808354040283529160200191610717565b820191906000526020600020905b8154815290600101906020018083116106fa57829003601f168201915b50505050509080600501805461072c9061207f565b80601f01602080910402602001604051908101604052809291908181526020018280546107589061207f565b80156107a55780601f1061077a576101008083540402835291602001916107a5565b820191906000526020600020905b81548152906001019060200180831161078857829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b6000600660008481526020019081526020016000209050600160038111156107ed576107ec611a5f565b5b8160020160009054906101000a900460ff16600381111561081157610810611a5f565b5b14610851576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084890612418565b60405180910390fd5b60006004600083600301548152602001908152602001600020905060028260020160006101000a81548160ff0219169083600381111561089457610893611a5f565b5b0217905550828260070160006101000a81548160ff0219169083151502179055506000600167ffffffffffffffff8111156108d2576108d1612021565b5b60405190808252806020026020018201604052801561090b57816020015b6108f861175c565b8152602001906001900390816108f05790505b5090506040518060400160405280606481526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508160008151811061097257610971612438565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b81526004016109e0939291906127d5565b600060405180830381600087803b1580156109fa57600080fd5b505af1158015610a0e573d6000803e3d6000fd5b505050507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc8585604051610a43929190612821565b60405180910390a160007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73600a8660010154610a9a9190612879565b8660010154610aa991906128aa565b8660050160146040518060400160405280600181526020016003815250604051806040016040528060018152602001600281525060646001808f604051602001610af3919061193e565b6040516020818303038152906040526040518a63ffffffff1660e01b8152600401610b25989796959493929190612a0a565b60206040518083038185885af1158015610b43573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b689190612aad565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015460016040518563ffffffff1660e01b8152600401610bf29493929190612ada565b600060405180830381600087803b158015610c0c57600080fd5b505af1158015610c20573d6000803e3d6000fd5b50505050505050505050565b600060036000815480929190610c4190611fce565b919050559050600060026000838152602001908152602001600020905085816000018190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632805b5d93487873388600189604051602001610cbb919061193e565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401610ceb96959493929190612b74565b60206040518083038185885af1158015610d09573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d2e9190612aad565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610d65919061193e565b60405180910390a1505050505050565b60015481565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0290612c49565b60405180910390fd5b60008383810190610e1c9190611a23565b90506000600660008381526020019081526020016000209050881580610e40575087155b15610ecb578060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600a8360010154610e949190612879565b9081150290604051600060405180830381858888f19350505050158015610ebf573d6000803e3d6000fd5b5060019250505061111d565b60606000600167ffffffffffffffff811115610eea57610ee9612021565b5b604051908082528060200260200182016040528015610f2357816020015b610f1061175c565b815260200190600190039081610f085790505b5090506040518060400160405280606481526020018460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525081600081518110610f8a57610f89612438565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600401856040518463ffffffff1660e01b8152600401610ff593929190612d90565b600060405180830381600087803b15801561100f57600080fd5b505af1158015611023573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73600a85600101546110749190612879565b856004016014604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518963ffffffff1660e01b81526004016110d09796959493929190612e02565b60206040518083038185885af11580156110ee573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111139190612aad565b5060009450505050505b9695505050505050565b60006004600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c790612f00565b60405180910390fd5b8060030160009054906101000a900460ff1615611222576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121990612f92565b60405180910390fd5b806002015442111561124757814261123a9190612398565b8160020181905550611260565b8181600201546112579190612398565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e98360405161128f919061193e565b60405180910390a1505050565b60055481565b60026020528060005260406000206000915090508060000154908060010154905082565b6000600660008781526020019081526020016000209050600060038111156112f1576112f0611a5f565b5b8160020160009054906101000a900460ff16600381111561131557611314611a5f565b5b14611355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134c90612ffe565b60405180910390fd5b6000600460008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611402576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f990613090565b60405180910390fd5b60018260020160006101000a81548160ff0219169083600381111561142a57611429611a5f565b5b0217905550858583600501918261144292919061225c565b5060005b848490508110156114be578260060185858381811061146857611467612438565b5b905060200281019061147a91906130bf565b908060018154018082558091505060019003906000526020600020906002020160009091909190915081816114af919061326b565b50508080600101915050611446565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc876040516114ee919061193e565b60405180910390a150505050505050565b60046020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60035481565b600061156c6115e1565b9050600060046000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b483836040516115d3929190611dda565b60405180910390a150919050565b60008060005b600554811015611668576004600082815260200190815260200160002060030160009054906101000a900460ff1661165b576004600082815260200190815260200160002060020154421161165b576004600082815260200190815260200160002060010154826116589190612398565b91505b80806001019150506115e7565b50600081116116ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a3906132c5565b60405180910390fd5b600081446116ba91906132e5565b9050600080600090505b600554811015611755576004600082815260200190815260200160002060030160009054906101000a900460ff166117485760046000828152602001908152602001600020600201544211611748576004600082815260200190815260200160002060010154826117359190612398565b91508282111561174757809450611755565b5b80806001019150506116c4565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126117bb576117ba611796565b5b8235905067ffffffffffffffff8111156117d8576117d761179b565b5b6020830191508360018202830111156117f4576117f36117a0565b5b9250929050565b600080602083850312156118125761181161178c565b5b600083013567ffffffffffffffff8111156118305761182f611791565b5b61183c858286016117a5565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061187382611848565b9050919050565b61188381611868565b811461188e57600080fd5b50565b6000813590506118a08161187a565b92915050565b6000819050919050565b6118b9816118a6565b81146118c457600080fd5b50565b6000813590506118d6816118b0565b92915050565b6000806000606084860312156118f5576118f461178c565b5b600061190386828701611891565b9350506020611914868287016118c7565b9250506040611925868287016118c7565b9150509250925092565b611938816118a6565b82525050565b6000602082019050611953600083018461192f565b92915050565b60008083601f84011261196f5761196e611796565b5b8235905067ffffffffffffffff81111561198c5761198b61179b565b5b6020830191508360018202830111156119a8576119a76117a0565b5b9250929050565b600080600080606085870312156119c9576119c861178c565b5b60006119d7878288016118c7565b94505060206119e8878288016118c7565b935050604085013567ffffffffffffffff811115611a0957611a08611791565b5b611a1587828801611959565b925092505092959194509250565b600060208284031215611a3957611a3861178c565b5b6000611a47848285016118c7565b91505092915050565b611a5981611868565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110611a9f57611a9e611a5f565b5b50565b6000819050611ab082611a8e565b919050565b6000611ac082611aa2565b9050919050565b611ad081611ab5565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611b10578082015181840152602081019050611af5565b60008484015250505050565b6000601f19601f8301169050919050565b6000611b3882611ad6565b611b428185611ae1565b9350611b52818560208601611af2565b611b5b81611b1c565b840191505092915050565b60008115159050919050565b611b7b81611b66565b82525050565b600060e082019050611b96600083018a611a50565b611ba3602083018961192f565b611bb06040830188611ac7565b611bbd606083018761192f565b8181036080830152611bcf8186611b2d565b905081810360a0830152611be38185611b2d565b9050611bf260c0830184611b72565b98975050505050505050565b611c0781611b66565b8114611c1257600080fd5b50565b600081359050611c2481611bfe565b92915050565b60008060408385031215611c4157611c4061178c565b5b6000611c4f858286016118c7565b9250506020611c6085828601611c15565b9150509250929050565b600081905082602060030282011115611c8657611c856117a0565b5b92915050565b60008060008060a08587031215611ca657611ca561178c565b5b6000611cb4878288016118c7565b945050602085013567ffffffffffffffff811115611cd557611cd4611791565b5b611ce1878288016117a5565b93509350506040611cf487828801611c6a565b91505092959194509250565b60008060008060008060a08789031215611d1d57611d1c61178c565b5b6000611d2b89828a01611c15565b9650506020611d3c89828a01611c15565b9550506040611d4d89828a016118c7565b9450506060611d5e89828a016118c7565b935050608087013567ffffffffffffffff811115611d7f57611d7e611791565b5b611d8b89828a01611959565b92509250509295509295509295565b60008060408385031215611db157611db061178c565b5b6000611dbf858286016118c7565b9250506020611dd0858286016118c7565b9150509250929050565b6000604082019050611def600083018561192f565b611dfc602083018461192f565b9392505050565b60008083601f840112611e1957611e18611796565b5b8235905067ffffffffffffffff811115611e3657611e3561179b565b5b602083019150836020820283011115611e5257611e516117a0565b5b9250929050565b600080600080600060608688031215611e7557611e7461178c565b5b6000611e83888289016118c7565b955050602086013567ffffffffffffffff811115611ea457611ea3611791565b5b611eb0888289016117a5565b9450945050604086013567ffffffffffffffff811115611ed357611ed2611791565b5b611edf88828901611e03565b92509250509295509295909350565b6000608082019050611f036000830187611a50565b611f10602083018661192f565b611f1d604083018561192f565b611f2a6060830184611b72565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611f69601083611ae1565b9150611f7482611f33565b602082019050919050565b60006020820190508181036000830152611f9881611f5c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611fd9826118a6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361200b5761200a611f9f565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061209757607f821691505b6020821081036120aa576120a9612050565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026121127fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826120d5565b61211c86836120d5565b95508019841693508086168417925050509392505050565b6000819050919050565b600061215961215461214f846118a6565b612134565b6118a6565b9050919050565b6000819050919050565b6121738361213e565b61218761217f82612160565b8484546120e2565b825550505050565b600090565b61219c61218f565b6121a781848461216a565b505050565b5b818110156121cb576121c0600082612194565b6001810190506121ad565b5050565b601f821115612210576121e1816120b0565b6121ea846120c5565b810160208510156121f9578190505b61220d612205856120c5565b8301826121ac565b50505b505050565b600082821c905092915050565b600061223360001984600802612215565b1980831691505092915050565b600061224c8383612222565b9150826002028217905092915050565b6122668383612016565b67ffffffffffffffff81111561227f5761227e612021565b5b612289825461207f565b6122948282856121cf565b6000601f8311600181146122c357600084156122b1578287013590505b6122bb8582612240565b865550612323565b601f1984166122d1866120b0565b60005b828110156122f9578489013582556001820191506020850194506020810190506122d4565b868310156123165784890135612312601f891682612222565b8355505b6001600288020188555050505b50505050505050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b6000612362601183611ae1565b915061236d8261232c565b602082019050919050565b6000602082019050818103600083015261239181612355565b9050919050565b60006123a3826118a6565b91506123ae836118a6565b92508282019050808211156123c6576123c5611f9f565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b6000612402602083611ae1565b915061240d826123cc565b602082019050919050565b60006020820190508181036000830152612431816123f5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61249c816118a6565b82525050565b6124ab81611868565b82525050565b6040820160008201516124c76000850182612493565b5060208201516124da60208501826124a2565b50505050565b60006124ec83836124b1565b60408301905092915050565b6000602082019050919050565b600061251082612467565b61251a8185612472565b935061252583612483565b8060005b8381101561255657815161253d88826124e0565b9750612548836124f8565b925050600181019050612529565b5085935050505092915050565b600081546125708161207f565b61257a8186611ae1565b9450600182166000811461259557600181146125ab576125de565b60ff1983168652811515602002860193506125de565b6125b4856120b0565b60005b838110156125d6578154818901526001820191506020810190506125b7565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b600061264261263d83612618565b612625565b9050919050565b6000819050919050565b61265c81612649565b82525050565b600082825260208201905092915050565b600081546126808161207f565b61268a8186612662565b945060018216600081146126a557600181146126bb576126ee565b60ff1983168652811515602002860193506126ee565b6126c4856120b0565b60005b838110156126e6578154818901526001820191506020810190506126c7565b808801955050505b50505092915050565b600060408301600080840154905061270e8161262f565b61271b6000870182612653565b506001840185830360208701526127328382612673565b925050819250505092915050565b600061274c83836126f7565b905092915050565b6000600282019050919050565b600061276c826125e7565b61277681856125f2565b93508360208202850161278885612603565b8060005b858110156127c3578484038952816127a48582612740565b94506127af83612754565b925060208a0199505060018101905061278c565b50829750879550505050505092915050565b600060608201905081810360008301526127ef8186612505565b905081810360208301526128038185612563565b905081810360408301526128178184612761565b9050949350505050565b6000604082019050612836600083018561192f565b6128436020830184611b72565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612884826118a6565b915061288f836118a6565b92508261289f5761289e61284a565b5b828204905092915050565b60006128b5826118a6565b91506128c0836118a6565b92508282039050818111156128d8576128d7611f9f565b5b92915050565b600060029050919050565b600081905092915050565b6000819050919050565b600061290a8383612493565b60208301905092915050565b6000602082019050919050565b61292c816128de565b61293681846128e9565b9250612941826128f4565b8060005b8381101561297257815161295987826128fe565b965061296483612916565b925050600181019050612945565b505050505050565b6000819050919050565b600061299f61299a6129958461297a565b612134565b6118a6565b9050919050565b6129af81612984565b82525050565b600081519050919050565b600082825260208201905092915050565b60006129dc826129b5565b6129e681856129c0565b93506129f6818560208601611af2565b6129ff81611b1c565b840191505092915050565b6000610140820190508181036000830152612a25818b612563565b9050612a34602083018a61192f565b612a416040830189612923565b612a4e6080830188612923565b612a5b60c08301876129a6565b612a6860e0830186611b72565b612a76610100830185611b72565b818103610120830152612a8981846129d1565b90509998505050505050505050565b600081519050612aa7816118b0565b92915050565b600060208284031215612ac357612ac261178c565b5b6000612ad184828501612a98565b91505092915050565b6000608082019050612aef600083018761192f565b612afc6020830186611a50565b612b09604083018561192f565b612b166060830184611b72565b95945050505050565b82818337600083830152505050565b6000612b3a8385611ae1565b9350612b47838584612b1f565b612b5083611b1c565b840190509392505050565b82818337505050565b612b7060608383612b5b565b5050565b600060e0820190508181036000830152612b8f81888a612b2e565b9050612b9e6020830187611a50565b612bab6040830186612b64565b612bb860a0830185611b72565b81810360c0830152612bca81846129d1565b9050979650505050505050565b7f6f6e56616c6964617465206d6179206f6e6c792062652063616c6c656420627960008201527f207468652044414f20636f6e7472616374000000000000000000000000000000602082015250565b6000612c33603183611ae1565b9150612c3e82612bd7565b604082019050919050565b60006020820190508181036000830152612c6281612c26565b9050919050565b600081519050919050565b6000819050602082019050919050565b6000612c8f82611ad6565b612c998185612662565b9350612ca9818560208601611af2565b612cb281611b1c565b840191505092915050565b6000604083016000830151612cd56000860182612653565b5060208301518482036020860152612ced8282612c84565b9150508091505092915050565b6000612d068383612cbd565b905092915050565b6000602082019050919050565b6000612d2682612c69565b612d3081856125f2565b935083602082028501612d4285612c74565b8060005b85811015612d7e5784840389528151612d5f8582612cfa565b9450612d6a83612d0e565b925060208a01995050600181019050612d46565b50829750879550505050505092915050565b60006060820190508181036000830152612daa8186612505565b90508181036020830152612dbe8185612563565b90508181036040830152612dd28184612d1b565b9050949350505050565b50565b6000612dec6000836129c0565b9150612df782612ddc565b600082019050919050565b6000610140820190508181036000830152612e1d818a612563565b9050612e2c602083018961192f565b612e396040830188612923565b612e466080830187612923565b612e5360c08301866129a6565b612e6060e0830185611b72565b612e6e610100830184611b72565b818103610120830152612e8081612ddf565b905098975050505050505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b6000612eea603383611ae1565b9150612ef582612e8e565b604082019050919050565b60006020820190508181036000830152612f1981612edd565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b6000612f7c602483611ae1565b9150612f8782612f20565b604082019050919050565b60006020820190508181036000830152612fab81612f6f565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b6000612fe8601883611ae1565b9150612ff382612fb2565b602082019050919050565b6000602082019050818103600083015261301781612fdb565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b600061307a603a83611ae1565b91506130858261301e565b604082019050919050565b600060208201905081810360008301526130a98161306d565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126130db576130da6130b0565b5b80830191505092915050565b6130f081612649565b81146130fb57600080fd5b50565b6000813561310b816130e7565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61314d84613114565b9350801983169250808416831791505092915050565b600061317e61317961317484612649565b612134565b612649565b9050919050565b6000819050919050565b61319882613163565b6131ab6131a482613185565b8354613121565b8255505050565b600080833560016020038436030381126131cf576131ce6130b0565b5b80840192508235915067ffffffffffffffff8211156131f1576131f06130b5565b5b60208301925060018202360383131561320d5761320c6130ba565b5b509250929050565b61322083838361225c565b505050565b600081016000830180613237816130fe565b9050613243818461318f565b505050600181016020830161325881856131b2565b613263818386613215565b505050505050565b6132758282613225565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b60006132af601a83611ae1565b91506132ba82613279565b602082019050919050565b600060208201905081810360008301526132de816132a2565b9050919050565b60006132f0826118a6565b91506132fb836118a6565b92508261330b5761330a61284a565b5b82820690509291505056fea2646970667358221220164153e9f6ad91835bb31f8713d71c0bdf6c641329056becf94f10475988c58f64736f6c63430008180033", + "bytecode": "0x60a06040523480156200001157600080fd5b50604051620035ac380380620035ac8339818101604052810190620000379190620001c1565b828282828073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505080600181905550816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050506200021d565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620000f582620000c8565b9050919050565b60006200010982620000e8565b9050919050565b6200011b81620000fc565b81146200012757600080fd5b50565b6000815190506200013b8162000110565b92915050565b60006200014e82620000e8565b9050919050565b620001608162000141565b81146200016c57600080fd5b50565b600081519050620001808162000155565b92915050565b6000819050919050565b6200019b8162000186565b8114620001a757600080fd5b50565b600081519050620001bb8162000190565b92915050565b600080600060608486031215620001dd57620001dc620000c3565b5b6000620001ed868287016200012a565b935050602062000200868287016200016f565b92505060406200021386828701620001aa565b9150509250925092565b6080516133506200025c6000396000818161098101528181610a5101528181610b6e01528181610d8101528181610f9b015261102d01526133506000f3fe6080604052600436106100e85760003560e01c8063a035b1fe1161008a578063cf37625611610059578063cf376256146102de578063d0fae95f1461031c578063d5a44f8614610345578063d76b679414610385576100e8565b8063a035b1fe14610222578063b4e6a1d51461024d578063b5b20c001461028a578063c4a9e116146102b3576100e8565b8063815a0572116100c6578063815a05721461015d57806381d12c581461019a578063854b6a4f146101dd57806399ad6c5614610206576100e8565b80630d0271d6146100ed578063216ed6ad146101095780635badbe4c14610132575b600080fd5b610107600480360381019061010291906117ff565b6103b0565b005b34801561011557600080fd5b50610130600480360381019061012b91906118e0565b61049e565b005b34801561013e57600080fd5b506101476105b1565b6040516101549190611942565b60405180910390f35b34801561016957600080fd5b50610184600480360381019061017f91906119b3565b6105b7565b6040516101919190611942565b60405180910390f35b3480156101a657600080fd5b506101c160048036038101906101bc9190611a27565b610636565b6040516101d49796959493929190611b85565b60405180910390f35b3480156101e957600080fd5b5061020460048036038101906101ff9190611c2e565b6107c2565b005b610220600480360381019061021b9190611c90565b610c2e565b005b34801561022e57600080fd5b50610237610d77565b6040516102449190611942565b60405180910390f35b34801561025957600080fd5b50610274600480360381019061026f9190611d04565b610d7d565b6040516102819190611942565b60405180910390f35b34801561029657600080fd5b506102b160048036038101906102ac9190611d9e565b61112b565b005b3480156102bf57600080fd5b506102c86112a0565b6040516102d59190611942565b60405180910390f35b3480156102ea57600080fd5b5061030560048036038101906103009190611a27565b6112a6565b604051610313929190611dde565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e9190611e5d565b6112ca565b005b34801561035157600080fd5b5061036c60048036038101906103679190611a27565b611503565b60405161037c9493929190611ef2565b60405180910390f35b34801561039157600080fd5b5061039a611560565b6040516103a79190611942565b60405180910390f35b6001543410156103f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ec90611f83565b60405180910390fd5b60006007600081548092919061040a90611fd2565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034816001018190555061047c82611566565b81600301819055508383826004019182610497929190612260565b5050505050565b600082116104e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d89061237c565b60405180910390fd5b6000600560008154809291906104f690611fd2565b9190505590506000600460008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838160010181905550824261056b919061239c565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9826040516105a29190611942565b60405180910390a15050505050565b60075481565b60008083838101906105c99190611a27565b9050600060026000838152602001908152602001600020905080600001546001819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f2082600154604051610620929190611dde565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461069e90612083565b80601f01602080910402602001604051908101604052809291908181526020018280546106ca90612083565b80156107175780601f106106ec57610100808354040283529160200191610717565b820191906000526020600020905b8154815290600101906020018083116106fa57829003601f168201915b50505050509080600501805461072c90612083565b80601f016020809104026020016040519081016040528092919081815260200182805461075890612083565b80156107a55780601f1061077a576101008083540402835291602001916107a5565b820191906000526020600020905b81548152906001019060200180831161078857829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b6000600660008481526020019081526020016000209050600160038111156107ed576107ec611a63565b5b8160020160009054906101000a900460ff16600381111561081157610810611a63565b5b14610851576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108489061241c565b60405180910390fd5b60006004600083600301548152602001908152602001600020905060028260020160006101000a81548160ff0219169083600381111561089457610893611a63565b5b0217905550828260070160006101000a81548160ff0219169083151502179055506000600167ffffffffffffffff8111156108d2576108d1612025565b5b60405190808252806020026020018201604052801561090b57816020015b6108f8611760565b8152602001906001900390816108f05790505b5090506040518060400160405280620f424081526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250816000815181106109745761097361243c565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b81526004016109e2939291906127d9565b600060405180830381600087803b1580156109fc57600080fd5b505af1158015610a10573d6000803e3d6000fd5b505050507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc8585604051610a45929190612825565b60405180910390a160007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73600a8660010154610a9c919061287d565b8660010154610aab91906128ae565b8660050160146040518060400160405280600181526020016003815250604051806040016040528060018152602001600281525060646001808f604051602001610af59190611942565b6040516020818303038152906040526040518a63ffffffff1660e01b8152600401610b27989796959493929190612a0e565b60206040518083038185885af1158015610b45573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b6a9190612ab1565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015460016040518563ffffffff1660e01b8152600401610bf49493929190612ade565b600060405180830381600087803b158015610c0e57600080fd5b505af1158015610c22573d6000803e3d6000fd5b50505050505050505050565b600060036000815480929190610c4390611fd2565b919050559050600060026000838152602001908152602001600020905085816000018190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632805b5d93487873388600189604051602001610cbd9190611942565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401610ced96959493929190612b78565b60206040518083038185885af1158015610d0b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d309190612ab1565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610d679190611942565b60405180910390a1505050505050565b60015481565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0490612c4d565b60405180910390fd5b60008383810190610e1e9190611a27565b90506000600660008381526020019081526020016000209050881580610e42575087155b15610ecd578060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600a8360010154610e96919061287d565b9081150290604051600060405180830381858888f19350505050158015610ec1573d6000803e3d6000fd5b50600192505050611121565b60606000600167ffffffffffffffff811115610eec57610eeb612025565b5b604051908082528060200260200182016040528015610f2557816020015b610f12611760565b815260200190600190039081610f0a5790505b5090506040518060400160405280620f424081526020018460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525081600081518110610f8e57610f8d61243c565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600401856040518463ffffffff1660e01b8152600401610ff993929190612d94565b600060405180830381600087803b15801561101357600080fd5b505af1158015611027573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73600a8560010154611078919061287d565b856004016014604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518963ffffffff1660e01b81526004016110d49796959493929190612e06565b60206040518083038185885af11580156110f2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111179190612ab1565b5060009450505050505b9695505050505050565b60006004600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cb90612f04565b60405180910390fd5b8060030160009054906101000a900460ff1615611226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121d90612f96565b60405180910390fd5b806002015442111561124b57814261123e919061239c565b8160020181905550611264565b81816002015461125b919061239c565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9836040516112939190611942565b60405180910390a1505050565b60055481565b60026020528060005260406000206000915090508060000154908060010154905082565b6000600660008781526020019081526020016000209050600060038111156112f5576112f4611a63565b5b8160020160009054906101000a900460ff16600381111561131957611318611a63565b5b14611359576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135090613002565b60405180910390fd5b6000600460008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fd90613094565b60405180910390fd5b60018260020160006101000a81548160ff0219169083600381111561142e5761142d611a63565b5b02179055508585836005019182611446929190612260565b5060005b848490508110156114c2578260060185858381811061146c5761146b61243c565b5b905060200281019061147e91906130c3565b908060018154018082558091505060019003906000526020600020906002020160009091909190915081816114b3919061326f565b5050808060010191505061144a565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc876040516114f29190611942565b60405180910390a150505050505050565b60046020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60035481565b60006115706115e5565b9050600060046000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b483836040516115d7929190611dde565b60405180910390a150919050565b60008060005b60055481101561166c576004600082815260200190815260200160002060030160009054906101000a900460ff1661165f576004600082815260200190815260200160002060020154421161165f5760046000828152602001908152602001600020600101548261165c919061239c565b91505b80806001019150506115eb565b50600081116116b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a7906132c9565b60405180910390fd5b600081446116be91906132e9565b9050600080600090505b600554811015611759576004600082815260200190815260200160002060030160009054906101000a900460ff1661174c576004600082815260200190815260200160002060020154421161174c57600460008281526020019081526020016000206001015482611739919061239c565b91508282111561174b57809450611759565b5b80806001019150506116c8565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126117bf576117be61179a565b5b8235905067ffffffffffffffff8111156117dc576117db61179f565b5b6020830191508360018202830111156117f8576117f76117a4565b5b9250929050565b6000806020838503121561181657611815611790565b5b600083013567ffffffffffffffff81111561183457611833611795565b5b611840858286016117a9565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006118778261184c565b9050919050565b6118878161186c565b811461189257600080fd5b50565b6000813590506118a48161187e565b92915050565b6000819050919050565b6118bd816118aa565b81146118c857600080fd5b50565b6000813590506118da816118b4565b92915050565b6000806000606084860312156118f9576118f8611790565b5b600061190786828701611895565b9350506020611918868287016118cb565b9250506040611929868287016118cb565b9150509250925092565b61193c816118aa565b82525050565b60006020820190506119576000830184611933565b92915050565b60008083601f8401126119735761197261179a565b5b8235905067ffffffffffffffff8111156119905761198f61179f565b5b6020830191508360018202830111156119ac576119ab6117a4565b5b9250929050565b600080600080606085870312156119cd576119cc611790565b5b60006119db878288016118cb565b94505060206119ec878288016118cb565b935050604085013567ffffffffffffffff811115611a0d57611a0c611795565b5b611a198782880161195d565b925092505092959194509250565b600060208284031215611a3d57611a3c611790565b5b6000611a4b848285016118cb565b91505092915050565b611a5d8161186c565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110611aa357611aa2611a63565b5b50565b6000819050611ab482611a92565b919050565b6000611ac482611aa6565b9050919050565b611ad481611ab9565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611b14578082015181840152602081019050611af9565b60008484015250505050565b6000601f19601f8301169050919050565b6000611b3c82611ada565b611b468185611ae5565b9350611b56818560208601611af6565b611b5f81611b20565b840191505092915050565b60008115159050919050565b611b7f81611b6a565b82525050565b600060e082019050611b9a600083018a611a54565b611ba76020830189611933565b611bb46040830188611acb565b611bc16060830187611933565b8181036080830152611bd38186611b31565b905081810360a0830152611be78185611b31565b9050611bf660c0830184611b76565b98975050505050505050565b611c0b81611b6a565b8114611c1657600080fd5b50565b600081359050611c2881611c02565b92915050565b60008060408385031215611c4557611c44611790565b5b6000611c53858286016118cb565b9250506020611c6485828601611c19565b9150509250929050565b600081905082602060030282011115611c8a57611c896117a4565b5b92915050565b60008060008060a08587031215611caa57611ca9611790565b5b6000611cb8878288016118cb565b945050602085013567ffffffffffffffff811115611cd957611cd8611795565b5b611ce5878288016117a9565b93509350506040611cf887828801611c6e565b91505092959194509250565b60008060008060008060a08789031215611d2157611d20611790565b5b6000611d2f89828a01611c19565b9650506020611d4089828a01611c19565b9550506040611d5189828a016118cb565b9450506060611d6289828a016118cb565b935050608087013567ffffffffffffffff811115611d8357611d82611795565b5b611d8f89828a0161195d565b92509250509295509295509295565b60008060408385031215611db557611db4611790565b5b6000611dc3858286016118cb565b9250506020611dd4858286016118cb565b9150509250929050565b6000604082019050611df36000830185611933565b611e006020830184611933565b9392505050565b60008083601f840112611e1d57611e1c61179a565b5b8235905067ffffffffffffffff811115611e3a57611e3961179f565b5b602083019150836020820283011115611e5657611e556117a4565b5b9250929050565b600080600080600060608688031215611e7957611e78611790565b5b6000611e87888289016118cb565b955050602086013567ffffffffffffffff811115611ea857611ea7611795565b5b611eb4888289016117a9565b9450945050604086013567ffffffffffffffff811115611ed757611ed6611795565b5b611ee388828901611e07565b92509250509295509295909350565b6000608082019050611f076000830187611a54565b611f146020830186611933565b611f216040830185611933565b611f2e6060830184611b76565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611f6d601083611ae5565b9150611f7882611f37565b602082019050919050565b60006020820190508181036000830152611f9c81611f60565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611fdd826118aa565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361200f5761200e611fa3565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061209b57607f821691505b6020821081036120ae576120ad612054565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026121167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826120d9565b61212086836120d9565b95508019841693508086168417925050509392505050565b6000819050919050565b600061215d612158612153846118aa565b612138565b6118aa565b9050919050565b6000819050919050565b61217783612142565b61218b61218382612164565b8484546120e6565b825550505050565b600090565b6121a0612193565b6121ab81848461216e565b505050565b5b818110156121cf576121c4600082612198565b6001810190506121b1565b5050565b601f821115612214576121e5816120b4565b6121ee846120c9565b810160208510156121fd578190505b612211612209856120c9565b8301826121b0565b50505b505050565b600082821c905092915050565b600061223760001984600802612219565b1980831691505092915050565b60006122508383612226565b9150826002028217905092915050565b61226a838361201a565b67ffffffffffffffff81111561228357612282612025565b5b61228d8254612083565b6122988282856121d3565b6000601f8311600181146122c757600084156122b5578287013590505b6122bf8582612244565b865550612327565b601f1984166122d5866120b4565b60005b828110156122fd578489013582556001820191506020850194506020810190506122d8565b8683101561231a5784890135612316601f891682612226565b8355505b6001600288020188555050505b50505050505050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b6000612366601183611ae5565b915061237182612330565b602082019050919050565b6000602082019050818103600083015261239581612359565b9050919050565b60006123a7826118aa565b91506123b2836118aa565b92508282019050808211156123ca576123c9611fa3565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b6000612406602083611ae5565b9150612411826123d0565b602082019050919050565b60006020820190508181036000830152612435816123f9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6124a0816118aa565b82525050565b6124af8161186c565b82525050565b6040820160008201516124cb6000850182612497565b5060208201516124de60208501826124a6565b50505050565b60006124f083836124b5565b60408301905092915050565b6000602082019050919050565b60006125148261246b565b61251e8185612476565b935061252983612487565b8060005b8381101561255a57815161254188826124e4565b975061254c836124fc565b92505060018101905061252d565b5085935050505092915050565b6000815461257481612083565b61257e8186611ae5565b9450600182166000811461259957600181146125af576125e2565b60ff1983168652811515602002860193506125e2565b6125b8856120b4565b60005b838110156125da578154818901526001820191506020810190506125bb565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b60006126466126418361261c565b612629565b9050919050565b6000819050919050565b6126608161264d565b82525050565b600082825260208201905092915050565b6000815461268481612083565b61268e8186612666565b945060018216600081146126a957600181146126bf576126f2565b60ff1983168652811515602002860193506126f2565b6126c8856120b4565b60005b838110156126ea578154818901526001820191506020810190506126cb565b808801955050505b50505092915050565b600060408301600080840154905061271281612633565b61271f6000870182612657565b506001840185830360208701526127368382612677565b925050819250505092915050565b600061275083836126fb565b905092915050565b6000600282019050919050565b6000612770826125eb565b61277a81856125f6565b93508360208202850161278c85612607565b8060005b858110156127c7578484038952816127a88582612744565b94506127b383612758565b925060208a01995050600181019050612790565b50829750879550505050505092915050565b600060608201905081810360008301526127f38186612509565b905081810360208301526128078185612567565b9050818103604083015261281b8184612765565b9050949350505050565b600060408201905061283a6000830185611933565b6128476020830184611b76565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612888826118aa565b9150612893836118aa565b9250826128a3576128a261284e565b5b828204905092915050565b60006128b9826118aa565b91506128c4836118aa565b92508282039050818111156128dc576128db611fa3565b5b92915050565b600060029050919050565b600081905092915050565b6000819050919050565b600061290e8383612497565b60208301905092915050565b6000602082019050919050565b612930816128e2565b61293a81846128ed565b9250612945826128f8565b8060005b8381101561297657815161295d8782612902565b96506129688361291a565b925050600181019050612949565b505050505050565b6000819050919050565b60006129a361299e6129998461297e565b612138565b6118aa565b9050919050565b6129b381612988565b82525050565b600081519050919050565b600082825260208201905092915050565b60006129e0826129b9565b6129ea81856129c4565b93506129fa818560208601611af6565b612a0381611b20565b840191505092915050565b6000610140820190508181036000830152612a29818b612567565b9050612a38602083018a611933565b612a456040830189612927565b612a526080830188612927565b612a5f60c08301876129aa565b612a6c60e0830186611b76565b612a7a610100830185611b76565b818103610120830152612a8d81846129d5565b90509998505050505050505050565b600081519050612aab816118b4565b92915050565b600060208284031215612ac757612ac6611790565b5b6000612ad584828501612a9c565b91505092915050565b6000608082019050612af36000830187611933565b612b006020830186611a54565b612b0d6040830185611933565b612b1a6060830184611b76565b95945050505050565b82818337600083830152505050565b6000612b3e8385611ae5565b9350612b4b838584612b23565b612b5483611b20565b840190509392505050565b82818337505050565b612b7460608383612b5f565b5050565b600060e0820190508181036000830152612b9381888a612b32565b9050612ba26020830187611a54565b612baf6040830186612b68565b612bbc60a0830185611b76565b81810360c0830152612bce81846129d5565b9050979650505050505050565b7f6f6e56616c6964617465206d6179206f6e6c792062652063616c6c656420627960008201527f207468652044414f20636f6e7472616374000000000000000000000000000000602082015250565b6000612c37603183611ae5565b9150612c4282612bdb565b604082019050919050565b60006020820190508181036000830152612c6681612c2a565b9050919050565b600081519050919050565b6000819050602082019050919050565b6000612c9382611ada565b612c9d8185612666565b9350612cad818560208601611af6565b612cb681611b20565b840191505092915050565b6000604083016000830151612cd96000860182612657565b5060208301518482036020860152612cf18282612c88565b9150508091505092915050565b6000612d0a8383612cc1565b905092915050565b6000602082019050919050565b6000612d2a82612c6d565b612d3481856125f6565b935083602082028501612d4685612c78565b8060005b85811015612d825784840389528151612d638582612cfe565b9450612d6e83612d12565b925060208a01995050600181019050612d4a565b50829750879550505050505092915050565b60006060820190508181036000830152612dae8186612509565b90508181036020830152612dc28185612567565b90508181036040830152612dd68184612d1f565b9050949350505050565b50565b6000612df06000836129c4565b9150612dfb82612de0565b600082019050919050565b6000610140820190508181036000830152612e21818a612567565b9050612e306020830189611933565b612e3d6040830188612927565b612e4a6080830187612927565b612e5760c08301866129aa565b612e6460e0830185611b76565b612e72610100830184611b76565b818103610120830152612e8481612de3565b905098975050505050505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b6000612eee603383611ae5565b9150612ef982612e92565b604082019050919050565b60006020820190508181036000830152612f1d81612ee1565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b6000612f80602483611ae5565b9150612f8b82612f24565b604082019050919050565b60006020820190508181036000830152612faf81612f73565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b6000612fec601883611ae5565b9150612ff782612fb6565b602082019050919050565b6000602082019050818103600083015261301b81612fdf565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b600061307e603a83611ae5565b915061308982613022565b604082019050919050565b600060208201905081810360008301526130ad81613071565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126130df576130de6130b4565b5b80830191505092915050565b6130f48161264d565b81146130ff57600080fd5b50565b6000813561310f816130eb565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61315184613118565b9350801983169250808416831791505092915050565b600061318261317d6131788461264d565b612138565b61264d565b9050919050565b6000819050919050565b61319c82613167565b6131af6131a882613189565b8354613125565b8255505050565b600080833560016020038436030381126131d3576131d26130b4565b5b80840192508235915067ffffffffffffffff8211156131f5576131f46130b9565b5b602083019250600182023603831315613211576132106130be565b5b509250929050565b613224838383612260565b505050565b60008101600083018061323b81613102565b90506132478184613193565b505050600181016020830161325c81856131b6565b613267818386613219565b505050505050565b6132798282613229565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b60006132b3601a83611ae5565b91506132be8261327d565b602082019050919050565b600060208201905081810360008301526132e2816132a6565b9050919050565b60006132f4826118aa565b91506132ff836118aa565b92508261330f5761330e61284e565b5b82820690509291505056fea26469706673582212206e18b5b44c6fcdd479868a02ae8ae98200838357ab90af830d1b0e4af00035ba64736f6c63430008180033", + "deployedBytecode": "0x6080604052600436106100e85760003560e01c8063a035b1fe1161008a578063cf37625611610059578063cf376256146102de578063d0fae95f1461031c578063d5a44f8614610345578063d76b679414610385576100e8565b8063a035b1fe14610222578063b4e6a1d51461024d578063b5b20c001461028a578063c4a9e116146102b3576100e8565b8063815a0572116100c6578063815a05721461015d57806381d12c581461019a578063854b6a4f146101dd57806399ad6c5614610206576100e8565b80630d0271d6146100ed578063216ed6ad146101095780635badbe4c14610132575b600080fd5b610107600480360381019061010291906117ff565b6103b0565b005b34801561011557600080fd5b50610130600480360381019061012b91906118e0565b61049e565b005b34801561013e57600080fd5b506101476105b1565b6040516101549190611942565b60405180910390f35b34801561016957600080fd5b50610184600480360381019061017f91906119b3565b6105b7565b6040516101919190611942565b60405180910390f35b3480156101a657600080fd5b506101c160048036038101906101bc9190611a27565b610636565b6040516101d49796959493929190611b85565b60405180910390f35b3480156101e957600080fd5b5061020460048036038101906101ff9190611c2e565b6107c2565b005b610220600480360381019061021b9190611c90565b610c2e565b005b34801561022e57600080fd5b50610237610d77565b6040516102449190611942565b60405180910390f35b34801561025957600080fd5b50610274600480360381019061026f9190611d04565b610d7d565b6040516102819190611942565b60405180910390f35b34801561029657600080fd5b506102b160048036038101906102ac9190611d9e565b61112b565b005b3480156102bf57600080fd5b506102c86112a0565b6040516102d59190611942565b60405180910390f35b3480156102ea57600080fd5b5061030560048036038101906103009190611a27565b6112a6565b604051610313929190611dde565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e9190611e5d565b6112ca565b005b34801561035157600080fd5b5061036c60048036038101906103679190611a27565b611503565b60405161037c9493929190611ef2565b60405180910390f35b34801561039157600080fd5b5061039a611560565b6040516103a79190611942565b60405180910390f35b6001543410156103f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ec90611f83565b60405180910390fd5b60006007600081548092919061040a90611fd2565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034816001018190555061047c82611566565b81600301819055508383826004019182610497929190612260565b5050505050565b600082116104e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d89061237c565b60405180910390fd5b6000600560008154809291906104f690611fd2565b9190505590506000600460008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838160010181905550824261056b919061239c565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9826040516105a29190611942565b60405180910390a15050505050565b60075481565b60008083838101906105c99190611a27565b9050600060026000838152602001908152602001600020905080600001546001819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f2082600154604051610620929190611dde565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461069e90612083565b80601f01602080910402602001604051908101604052809291908181526020018280546106ca90612083565b80156107175780601f106106ec57610100808354040283529160200191610717565b820191906000526020600020905b8154815290600101906020018083116106fa57829003601f168201915b50505050509080600501805461072c90612083565b80601f016020809104026020016040519081016040528092919081815260200182805461075890612083565b80156107a55780601f1061077a576101008083540402835291602001916107a5565b820191906000526020600020905b81548152906001019060200180831161078857829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b6000600660008481526020019081526020016000209050600160038111156107ed576107ec611a63565b5b8160020160009054906101000a900460ff16600381111561081157610810611a63565b5b14610851576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108489061241c565b60405180910390fd5b60006004600083600301548152602001908152602001600020905060028260020160006101000a81548160ff0219169083600381111561089457610893611a63565b5b0217905550828260070160006101000a81548160ff0219169083151502179055506000600167ffffffffffffffff8111156108d2576108d1612025565b5b60405190808252806020026020018201604052801561090b57816020015b6108f8611760565b8152602001906001900390816108f05790505b5090506040518060400160405280620f424081526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250816000815181106109745761097361243c565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b81526004016109e2939291906127d9565b600060405180830381600087803b1580156109fc57600080fd5b505af1158015610a10573d6000803e3d6000fd5b505050507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc8585604051610a45929190612825565b60405180910390a160007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73600a8660010154610a9c919061287d565b8660010154610aab91906128ae565b8660050160146040518060400160405280600181526020016003815250604051806040016040528060018152602001600281525060646001808f604051602001610af59190611942565b6040516020818303038152906040526040518a63ffffffff1660e01b8152600401610b27989796959493929190612a0e565b60206040518083038185885af1158015610b45573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b6a9190612ab1565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015460016040518563ffffffff1660e01b8152600401610bf49493929190612ade565b600060405180830381600087803b158015610c0e57600080fd5b505af1158015610c22573d6000803e3d6000fd5b50505050505050505050565b600060036000815480929190610c4390611fd2565b919050559050600060026000838152602001908152602001600020905085816000018190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632805b5d93487873388600189604051602001610cbd9190611942565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401610ced96959493929190612b78565b60206040518083038185885af1158015610d0b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d309190612ab1565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610d679190611942565b60405180910390a1505050505050565b60015481565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0490612c4d565b60405180910390fd5b60008383810190610e1e9190611a27565b90506000600660008381526020019081526020016000209050881580610e42575087155b15610ecd578060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600a8360010154610e96919061287d565b9081150290604051600060405180830381858888f19350505050158015610ec1573d6000803e3d6000fd5b50600192505050611121565b60606000600167ffffffffffffffff811115610eec57610eeb612025565b5b604051908082528060200260200182016040528015610f2557816020015b610f12611760565b815260200190600190039081610f0a5790505b5090506040518060400160405280620f424081526020018460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525081600081518110610f8e57610f8d61243c565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600401856040518463ffffffff1660e01b8152600401610ff993929190612d94565b600060405180830381600087803b15801561101357600080fd5b505af1158015611027573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73600a8560010154611078919061287d565b856004016014604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518963ffffffff1660e01b81526004016110d49796959493929190612e06565b60206040518083038185885af11580156110f2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111179190612ab1565b5060009450505050505b9695505050505050565b60006004600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cb90612f04565b60405180910390fd5b8060030160009054906101000a900460ff1615611226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121d90612f96565b60405180910390fd5b806002015442111561124b57814261123e919061239c565b8160020181905550611264565b81816002015461125b919061239c565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9836040516112939190611942565b60405180910390a1505050565b60055481565b60026020528060005260406000206000915090508060000154908060010154905082565b6000600660008781526020019081526020016000209050600060038111156112f5576112f4611a63565b5b8160020160009054906101000a900460ff16600381111561131957611318611a63565b5b14611359576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135090613002565b60405180910390fd5b6000600460008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fd90613094565b60405180910390fd5b60018260020160006101000a81548160ff0219169083600381111561142e5761142d611a63565b5b02179055508585836005019182611446929190612260565b5060005b848490508110156114c2578260060185858381811061146c5761146b61243c565b5b905060200281019061147e91906130c3565b908060018154018082558091505060019003906000526020600020906002020160009091909190915081816114b3919061326f565b5050808060010191505061144a565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc876040516114f29190611942565b60405180910390a150505050505050565b60046020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60035481565b60006115706115e5565b9050600060046000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b483836040516115d7929190611dde565b60405180910390a150919050565b60008060005b60055481101561166c576004600082815260200190815260200160002060030160009054906101000a900460ff1661165f576004600082815260200190815260200160002060020154421161165f5760046000828152602001908152602001600020600101548261165c919061239c565b91505b80806001019150506115eb565b50600081116116b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a7906132c9565b60405180910390fd5b600081446116be91906132e9565b9050600080600090505b600554811015611759576004600082815260200190815260200160002060030160009054906101000a900460ff1661174c576004600082815260200190815260200160002060020154421161174c57600460008281526020019081526020016000206001015482611739919061239c565b91508282111561174b57809450611759565b5b80806001019150506116c8565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126117bf576117be61179a565b5b8235905067ffffffffffffffff8111156117dc576117db61179f565b5b6020830191508360018202830111156117f8576117f76117a4565b5b9250929050565b6000806020838503121561181657611815611790565b5b600083013567ffffffffffffffff81111561183457611833611795565b5b611840858286016117a9565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006118778261184c565b9050919050565b6118878161186c565b811461189257600080fd5b50565b6000813590506118a48161187e565b92915050565b6000819050919050565b6118bd816118aa565b81146118c857600080fd5b50565b6000813590506118da816118b4565b92915050565b6000806000606084860312156118f9576118f8611790565b5b600061190786828701611895565b9350506020611918868287016118cb565b9250506040611929868287016118cb565b9150509250925092565b61193c816118aa565b82525050565b60006020820190506119576000830184611933565b92915050565b60008083601f8401126119735761197261179a565b5b8235905067ffffffffffffffff8111156119905761198f61179f565b5b6020830191508360018202830111156119ac576119ab6117a4565b5b9250929050565b600080600080606085870312156119cd576119cc611790565b5b60006119db878288016118cb565b94505060206119ec878288016118cb565b935050604085013567ffffffffffffffff811115611a0d57611a0c611795565b5b611a198782880161195d565b925092505092959194509250565b600060208284031215611a3d57611a3c611790565b5b6000611a4b848285016118cb565b91505092915050565b611a5d8161186c565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110611aa357611aa2611a63565b5b50565b6000819050611ab482611a92565b919050565b6000611ac482611aa6565b9050919050565b611ad481611ab9565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611b14578082015181840152602081019050611af9565b60008484015250505050565b6000601f19601f8301169050919050565b6000611b3c82611ada565b611b468185611ae5565b9350611b56818560208601611af6565b611b5f81611b20565b840191505092915050565b60008115159050919050565b611b7f81611b6a565b82525050565b600060e082019050611b9a600083018a611a54565b611ba76020830189611933565b611bb46040830188611acb565b611bc16060830187611933565b8181036080830152611bd38186611b31565b905081810360a0830152611be78185611b31565b9050611bf660c0830184611b76565b98975050505050505050565b611c0b81611b6a565b8114611c1657600080fd5b50565b600081359050611c2881611c02565b92915050565b60008060408385031215611c4557611c44611790565b5b6000611c53858286016118cb565b9250506020611c6485828601611c19565b9150509250929050565b600081905082602060030282011115611c8a57611c896117a4565b5b92915050565b60008060008060a08587031215611caa57611ca9611790565b5b6000611cb8878288016118cb565b945050602085013567ffffffffffffffff811115611cd957611cd8611795565b5b611ce5878288016117a9565b93509350506040611cf887828801611c6e565b91505092959194509250565b60008060008060008060a08789031215611d2157611d20611790565b5b6000611d2f89828a01611c19565b9650506020611d4089828a01611c19565b9550506040611d5189828a016118cb565b9450506060611d6289828a016118cb565b935050608087013567ffffffffffffffff811115611d8357611d82611795565b5b611d8f89828a0161195d565b92509250509295509295509295565b60008060408385031215611db557611db4611790565b5b6000611dc3858286016118cb565b9250506020611dd4858286016118cb565b9150509250929050565b6000604082019050611df36000830185611933565b611e006020830184611933565b9392505050565b60008083601f840112611e1d57611e1c61179a565b5b8235905067ffffffffffffffff811115611e3a57611e3961179f565b5b602083019150836020820283011115611e5657611e556117a4565b5b9250929050565b600080600080600060608688031215611e7957611e78611790565b5b6000611e87888289016118cb565b955050602086013567ffffffffffffffff811115611ea857611ea7611795565b5b611eb4888289016117a9565b9450945050604086013567ffffffffffffffff811115611ed757611ed6611795565b5b611ee388828901611e07565b92509250509295509295909350565b6000608082019050611f076000830187611a54565b611f146020830186611933565b611f216040830185611933565b611f2e6060830184611b76565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611f6d601083611ae5565b9150611f7882611f37565b602082019050919050565b60006020820190508181036000830152611f9c81611f60565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611fdd826118aa565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361200f5761200e611fa3565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061209b57607f821691505b6020821081036120ae576120ad612054565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026121167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826120d9565b61212086836120d9565b95508019841693508086168417925050509392505050565b6000819050919050565b600061215d612158612153846118aa565b612138565b6118aa565b9050919050565b6000819050919050565b61217783612142565b61218b61218382612164565b8484546120e6565b825550505050565b600090565b6121a0612193565b6121ab81848461216e565b505050565b5b818110156121cf576121c4600082612198565b6001810190506121b1565b5050565b601f821115612214576121e5816120b4565b6121ee846120c9565b810160208510156121fd578190505b612211612209856120c9565b8301826121b0565b50505b505050565b600082821c905092915050565b600061223760001984600802612219565b1980831691505092915050565b60006122508383612226565b9150826002028217905092915050565b61226a838361201a565b67ffffffffffffffff81111561228357612282612025565b5b61228d8254612083565b6122988282856121d3565b6000601f8311600181146122c757600084156122b5578287013590505b6122bf8582612244565b865550612327565b601f1984166122d5866120b4565b60005b828110156122fd578489013582556001820191506020850194506020810190506122d8565b8683101561231a5784890135612316601f891682612226565b8355505b6001600288020188555050505b50505050505050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b6000612366601183611ae5565b915061237182612330565b602082019050919050565b6000602082019050818103600083015261239581612359565b9050919050565b60006123a7826118aa565b91506123b2836118aa565b92508282019050808211156123ca576123c9611fa3565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b6000612406602083611ae5565b9150612411826123d0565b602082019050919050565b60006020820190508181036000830152612435816123f9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6124a0816118aa565b82525050565b6124af8161186c565b82525050565b6040820160008201516124cb6000850182612497565b5060208201516124de60208501826124a6565b50505050565b60006124f083836124b5565b60408301905092915050565b6000602082019050919050565b60006125148261246b565b61251e8185612476565b935061252983612487565b8060005b8381101561255a57815161254188826124e4565b975061254c836124fc565b92505060018101905061252d565b5085935050505092915050565b6000815461257481612083565b61257e8186611ae5565b9450600182166000811461259957600181146125af576125e2565b60ff1983168652811515602002860193506125e2565b6125b8856120b4565b60005b838110156125da578154818901526001820191506020810190506125bb565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b60006126466126418361261c565b612629565b9050919050565b6000819050919050565b6126608161264d565b82525050565b600082825260208201905092915050565b6000815461268481612083565b61268e8186612666565b945060018216600081146126a957600181146126bf576126f2565b60ff1983168652811515602002860193506126f2565b6126c8856120b4565b60005b838110156126ea578154818901526001820191506020810190506126cb565b808801955050505b50505092915050565b600060408301600080840154905061271281612633565b61271f6000870182612657565b506001840185830360208701526127368382612677565b925050819250505092915050565b600061275083836126fb565b905092915050565b6000600282019050919050565b6000612770826125eb565b61277a81856125f6565b93508360208202850161278c85612607565b8060005b858110156127c7578484038952816127a88582612744565b94506127b383612758565b925060208a01995050600181019050612790565b50829750879550505050505092915050565b600060608201905081810360008301526127f38186612509565b905081810360208301526128078185612567565b9050818103604083015261281b8184612765565b9050949350505050565b600060408201905061283a6000830185611933565b6128476020830184611b76565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612888826118aa565b9150612893836118aa565b9250826128a3576128a261284e565b5b828204905092915050565b60006128b9826118aa565b91506128c4836118aa565b92508282039050818111156128dc576128db611fa3565b5b92915050565b600060029050919050565b600081905092915050565b6000819050919050565b600061290e8383612497565b60208301905092915050565b6000602082019050919050565b612930816128e2565b61293a81846128ed565b9250612945826128f8565b8060005b8381101561297657815161295d8782612902565b96506129688361291a565b925050600181019050612949565b505050505050565b6000819050919050565b60006129a361299e6129998461297e565b612138565b6118aa565b9050919050565b6129b381612988565b82525050565b600081519050919050565b600082825260208201905092915050565b60006129e0826129b9565b6129ea81856129c4565b93506129fa818560208601611af6565b612a0381611b20565b840191505092915050565b6000610140820190508181036000830152612a29818b612567565b9050612a38602083018a611933565b612a456040830189612927565b612a526080830188612927565b612a5f60c08301876129aa565b612a6c60e0830186611b76565b612a7a610100830185611b76565b818103610120830152612a8d81846129d5565b90509998505050505050505050565b600081519050612aab816118b4565b92915050565b600060208284031215612ac757612ac6611790565b5b6000612ad584828501612a9c565b91505092915050565b6000608082019050612af36000830187611933565b612b006020830186611a54565b612b0d6040830185611933565b612b1a6060830184611b76565b95945050505050565b82818337600083830152505050565b6000612b3e8385611ae5565b9350612b4b838584612b23565b612b5483611b20565b840190509392505050565b82818337505050565b612b7460608383612b5f565b5050565b600060e0820190508181036000830152612b9381888a612b32565b9050612ba26020830187611a54565b612baf6040830186612b68565b612bbc60a0830185611b76565b81810360c0830152612bce81846129d5565b9050979650505050505050565b7f6f6e56616c6964617465206d6179206f6e6c792062652063616c6c656420627960008201527f207468652044414f20636f6e7472616374000000000000000000000000000000602082015250565b6000612c37603183611ae5565b9150612c4282612bdb565b604082019050919050565b60006020820190508181036000830152612c6681612c2a565b9050919050565b600081519050919050565b6000819050602082019050919050565b6000612c9382611ada565b612c9d8185612666565b9350612cad818560208601611af6565b612cb681611b20565b840191505092915050565b6000604083016000830151612cd96000860182612657565b5060208301518482036020860152612cf18282612c88565b9150508091505092915050565b6000612d0a8383612cc1565b905092915050565b6000602082019050919050565b6000612d2a82612c6d565b612d3481856125f6565b935083602082028501612d4685612c78565b8060005b85811015612d825784840389528151612d638582612cfe565b9450612d6e83612d12565b925060208a01995050600181019050612d4a565b50829750879550505050505092915050565b60006060820190508181036000830152612dae8186612509565b90508181036020830152612dc28185612567565b90508181036040830152612dd68184612d1f565b9050949350505050565b50565b6000612df06000836129c4565b9150612dfb82612de0565b600082019050919050565b6000610140820190508181036000830152612e21818a612567565b9050612e306020830189611933565b612e3d6040830188612927565b612e4a6080830187612927565b612e5760c08301866129aa565b612e6460e0830185611b76565b612e72610100830184611b76565b818103610120830152612e8481612de3565b905098975050505050505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b6000612eee603383611ae5565b9150612ef982612e92565b604082019050919050565b60006020820190508181036000830152612f1d81612ee1565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b6000612f80602483611ae5565b9150612f8b82612f24565b604082019050919050565b60006020820190508181036000830152612faf81612f73565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b6000612fec601883611ae5565b9150612ff782612fb6565b602082019050919050565b6000602082019050818103600083015261301b81612fdf565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b600061307e603a83611ae5565b915061308982613022565b604082019050919050565b600060208201905081810360008301526130ad81613071565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126130df576130de6130b4565b5b80830191505092915050565b6130f48161264d565b81146130ff57600080fd5b50565b6000813561310f816130eb565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61315184613118565b9350801983169250808416831791505092915050565b600061318261317d6131788461264d565b612138565b61264d565b9050919050565b6000819050919050565b61319c82613167565b6131af6131a882613189565b8354613125565b8255505050565b600080833560016020038436030381126131d3576131d26130b4565b5b80840192508235915067ffffffffffffffff8211156131f5576131f46130b9565b5b602083019250600182023603831315613211576132106130be565b5b509250929050565b613224838383612260565b505050565b60008101600083018061323b81613102565b90506132478184613193565b505050600181016020830161325c81856131b6565b613267818386613219565b505050505050565b6132798282613229565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b60006132b3601a83611ae5565b91506132be8261327d565b602082019050919050565b600060208201905081810360008301526132e2816132a6565b9050919050565b60006132f4826118aa565b91506132ff836118aa565b92508261330f5761330e61284e565b5b82820690509291505056fea26469706673582212206e18b5b44c6fcdd479868a02ae8ae98200838357ab90af830d1b0e4af00035ba64736f6c63430008180033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/backend/contractArtifacts/Proposals.json b/backend/contractArtifacts/Proposals.json index 0491fe7..e7375c1 100644 --- a/backend/contractArtifacts/Proposals.json +++ b/backend/contractArtifacts/Proposals.json @@ -348,8 +348,8 @@ "type": "function" } ], - "bytecode": "0x60a06040526040518060600160405280600060ff168152602001600160ff168152602001606460ff1681525060029060036200003d929190620001ef565b5060405180606001604052806000151515158152602001600015151515815260200160011515151581525060059060036200007a92919062000239565b5060405180606001604052806040518060400160405280600160ff168152602001600a60ff1681525081526020016040518060400160405280600160ff168152602001600a60ff1681525081526020016040518060400160405280600160ff168152602001600a60ff168152508152506006906003620000fc929190620002d9565b5060405180606001604052806040518060400160405280600260ff168152602001600360ff1681525081526020016040518060400160405280600260ff168152602001600360ff1681525081526020016040518060400160405280600260ff168152602001600360ff16815250815250600c9060036200017e929190620002d9565b503480156200018c57600080fd5b50604051620039cf380380620039cf8339818101604052810190620001b291906200044e565b808073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050505062000480565b826003810192821562000226579160200282015b8281111562000225578251829060ff1690559160200191906001019062000203565b5b50905062000235919062000331565b5090565b826003601f01602090048101928215620002c65791602002820160005b838211156200029557835183826101000a81548160ff021916908315150217905550926020019260010160208160000104928301926001030262000256565b8015620002c45782816101000a81549060ff021916905560010160208160000104928301926001030262000295565b505b509050620002d5919062000331565b5090565b82600360020281019282156200031e579160200282015b828111156200031d578251829060026200030c92919062000350565b5091602001919060020190620002f0565b5b5090506200032d91906200039a565b5090565b5b808211156200034c57600081600090555060010162000332565b5090565b826002810192821562000387579160200282015b8281111562000386578251829060ff1690559160200191906001019062000364565b5b50905062000396919062000331565b5090565b5b80821115620003be5760008181620003b49190620003c2565b506002016200039b565b5090565b506000815560010160009055565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200040282620003d5565b9050919050565b60006200041682620003f5565b9050919050565b620004288162000409565b81146200043457600080fd5b50565b60008151905062000448816200041d565b92915050565b600060208284031215620004675762000466620003d0565b5b6000620004778482850162000437565b91505092915050565b608051613510620004bf6000396000818161046b01528181610a0101528181610bed01528181610de701528181611683015261185101526135106000f3fe60806040526004361061007b5760003560e01c8063b4e6a1d51161004e578063b4e6a1d51461015b578063c019faab14610198578063da35c664146101c1578063ea923e63146101ec5761007b565b8063013cf08b146100805780632805b5d9146100c557806362d26ed7146100f5578063a3bb24cc14610132575b600080fd5b34801561008c57600080fd5b506100a760048036038101906100a29190611b63565b610229565b6040516100bc99989796959493929190611d57565b60405180910390f35b6100df60048036038101906100da9190611f27565b6103c1565b6040516100ec9190611fe3565b60405180910390f35b34801561010157600080fd5b5061011c60048036038101906101179190611b63565b6106c5565b60405161012991906121e3565b60405180910390f35b34801561013e57600080fd5b50610159600480360381019061015491906121ff565b6109fe565b005b34801561016757600080fd5b50610182600480360381019061017d919061223f565b610be9565b60405161018f9190611fe3565b60405180910390f35b3480156101a457600080fd5b506101bf60048036038101906101ba9190611b63565b6114be565b005b3480156101cd57600080fd5b506101d66115ea565b6040516101e39190611fe3565b60405180910390f35b3480156101f857600080fd5b50610213600480360381019061020e9190611b63565b6115f0565b60405161022091906122d9565b60405180910390f35b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600101549080600201549080600301805461027e90612323565b80601f01602080910402602001604051908101604052809291908181526020018280546102aa90612323565b80156102f75780601f106102cc576101008083540402835291602001916102f7565b820191906000526020600020905b8154815290600101906020018083116102da57829003601f168201915b5050505050908060040154908060050160009054906101000a900460ff169080600701549080603b0160009054906101000a900460ff169080603c01805461033e90612323565b80601f016020809104026020016040519081016040528092919081815260200182805461036a90612323565b80156103b75780601f1061038c576101008083540402835291602001916103b7565b820191906000526020600020905b81548152906001019060200180831161039a57829003601f168201915b5050505050905089565b600060606000600167ffffffffffffffff8111156103e2576103e1612354565b5b60405190808252806020026020018201604052801561041b57816020015b610408611a54565b8152602001906001900390816104005790505b5090506040518060400160405280606481526020018973ffffffffffffffffffffffffffffffffffffffff168152508160008151811061045e5761045d612383565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d827828c8c866040518563ffffffff1660e01b81526004016104c8949392919061263d565b600060405180830381600087803b1580156104e257600080fd5b505af11580156104f6573d6000803e3d6000fd5b505050506001600081548092919061050d906126ba565b91905055925060008060008581526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508a8a82600301918261057f9291906128b9565b504281600401819055508760006003811061059d5761059c612383565b5b6020020135816008016000600381106105b9576105b8612383565b5b6011020160000181905550876001600381106105d8576105d7612383565b5b6020020135816008016001600381106105f4576105f3612383565b5b60110201600001819055508760026003811061061357610612612383565b5b60200201358160080160026003811061062f5761062e612383565b5b6011020160000181905550348160010181905550806001015481600201819055508681603b0160006101000a81548160ff021916908315150217905550858582603c01918261067f9291906129ef565b507f9a863892f20a6b9c6cec64d611b5864be6373191ce2cacc3b05a299bce3bf80e846040516106af9190611fe3565b60405180910390a1505050979650505050505050565b6106cd611a84565b60008060008481526020019081526020016000209050806008016000600381106106fa576106f9612383565b5b60110201600101600380602002604051908101604052809291906000905b828210156107ca578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff16151515158152505081526020019060010190610718565b50505050826000600381106107e2576107e1612383565b5b60200201819052508060080160016003811061080157610800612383565b5b60110201600101600380602002604051908101604052809291906000905b828210156108d1578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff1615151515815250508152602001906001019061081f565b50505050826001600381106108e9576108e8612383565b5b60200201819052508060080160026003811061090857610907612383565b5b60110201600101600380602002604051908101604052809291906000905b828210156109d8578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff16151515158152505081526020019060010190610926565b50505050826002600381106109f0576109ef612383565b5b602002018190525050919050565b807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610a589190612abf565b602060405180830381865afa158015610a75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a999190612aef565b1015610ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad190612b8e565b60405180910390fd5b600080600084815260200190815260200160002090508060060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054816007016000828254610b459190612bae565b92505081905550818160060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081816007016000828254610ba69190612be2565b925050819055507fc23775ba00d23f337b9f790bd67eb5194aa9b95876933f9ccd1887becbb55ccb83604051610bdc9190611fe3565b60405180910390a1505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7090612c88565b60405180910390fd5b60008060008585810190610c8d9190612ca8565b925092509250600080600085815260200190815260200160002090506000816008018460038110610cc157610cc0612383565b5b601102019050600081600101826010015460038110610ce357610ce2612383565b5b60050201905060018160010160016101000a81548160ff0219169083151502179055508a81600201819055508981600301819055508b8160040160016101000a81548160ff0219169083151502179055508c8160040160006101000a81548160ff0219169083151502179055508b610de35760048360050160006101000a81548160ff02191690836005811115610d7d57610d7c611c70565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb86604051610db19190612d47565b60405180910390a183836002016000828254610dcd9190612be2565b92505081905550600196505050505050506114b4565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e749190612aef565b8b8d610e809190612be2565b6002610e8c9190612d75565b1015905060016005811115610ea457610ea3611c70565b5b8460050160009054906101000a900460ff166005811115610ec857610ec7611c70565b5b03610fe95760008614610f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0790612e03565b60405180910390fd5b8d8015610f1a5750805b15610f515760028460050160006101000a81548160ff02191690836005811115610f4757610f46611c70565b5b0217905550610fe4565b6002836010015410610fc65760048460050160006101000a81548160ff02191690836005811115610f8557610f84611c70565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb87604051610fb99190612e6f565b60405180910390a1610fe3565b6001836010016000828254610fdb9190612be2565b925050819055505b5b611390565b60026005811115610ffd57610ffc611c70565b5b8460050160009054906101000a900460ff16600581111561102157611020611c70565b5b036111425760018614611069576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106090612ee9565b60405180910390fd5b8d80156110735750805b156110aa5760038460050160006101000a81548160ff021916908360058111156110a05761109f611c70565b5b021790555061113d565b600283601001541061111f5760048460050160006101000a81548160ff021916908360058111156110de576110dd611c70565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb876040516111129190612e6f565b60405180910390a161113c565b60018360100160008282546111349190612be2565b925050819055505b5b61138f565b6003600581111561115657611155611c70565b5b8460050160009054906101000a900460ff16600581111561117a57611179611c70565b5b0361138e57600286146111c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b990612f55565b60405180910390fd5b8d80156111cc5750805b156112fa5760058460050160006101000a81548160ff021916908360058111156111f9576111f8611c70565b5b02179055507fd24c2047577899547bacebb29e319fc7d73f6712b5adb401d45556f34bb2aa3b8760405161122d9190611fe3565b60405180910390a183603b0160009054906101000a900460ff16156112f5578360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663815a05728d8d87603c016040518463ffffffff1660e01b81526004016112b093929190612ff9565b6020604051808303816000875af11580156112cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f39190612aef565b505b61138d565b600283601001541061136f5760048460050160006101000a81548160ff0219169083600581111561132e5761132d611c70565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb876040516113629190612e6f565b60405180910390a161138c565b60018360100160008282546113849190612be2565b925050819055505b5b5b5b5b600160058111156113a4576113a3611c70565b5b8460050160009054906101000a900460ff1660058111156113c8576113c7611c70565b5b036113ee576113e9876000600a87600101546113e49190613066565b61181c565b6114a8565b6002600581111561140257611401611c70565b5b8460050160009054906101000a900460ff16600581111561142657611425611c70565b5b0361144c57611447876001600a87600101546114429190613066565b61181c565b6114a7565b600360058111156114605761145f611c70565b5b8460050160009054906101000a900460ff16600581111561148457611483611c70565b5b036114a6576114a5876002600a87600101546114a09190613066565b61181c565b5b5b5b60009750505050505050505b9695505050505050565b60008060008381526020019081526020016000209050600460058111156114e8576114e7611c70565b5b8160050160009054906101000a900460ff16600581111561150c5761150b611c70565b5b148061154c575060058081111561152657611525611c70565b5b8160050160009054906101000a900460ff16600581111561154a57611549611c70565b5b145b61158b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115829061312f565b60405180910390fd5b600081600201549050600082600201819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156115e4573d6000803e3d6000fd5b50505050565b60015481565b60008060008084815260200190815260200160002090506000600581111561161b5761161a611c70565b5b8160050160009054906101000a900460ff16600581111561163f5761163e611c70565b5b1461167f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611676906131c1565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117109190612aef565b8260070154600a6117219190612d75565b1015905060006301e13380836004015461173b9190612be2565b42119050816117c65780156117ba5760048360050160006101000a81548160ff0219169083600581111561177257611771611c70565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb856040516117a69190613253565b60405180910390a160009350505050611817565b60009350505050611817565b60018360050160006101000a81548160ff021916908360058111156117ee576117ed611c70565b5b021790555061180f856000600a866001015461180a9190613066565b61181c565b600193505050505b919050565b60008060008581526020019081526020016000209050818160020160008282546118469190612bae565b9250508190555060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c7384846003018560080188600381106118a6576118a5612383565b5b6011020160000154600689600381106118c2576118c1612383565b5b60020201600c8a600381106118da576118d9612383565b5b6002020160028b600381106118f2576118f1612383565b5b015460058c6003811061190857611907612383565b5b602091828204019190069054906101000a900460ff1660018e8e8e60405160200161193593929190613281565b6040516020818303038152906040526040518a63ffffffff1660e01b8152600401611967989796959493929190613423565b60206040518083038185885af1158015611985573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119aa9190612aef565b905060008260080185600381106119c4576119c3612383565b5b6011020190506000816001018260100154600381106119e6576119e5612383565b5b60050201905082816000018190555060018160010160006101000a81548160ff0219169083151502179055507f4c14e16a98683e5b8bd70d51192048d0499fb3999b27ff1e9dce7e4a2c6734798784604051611a439291906134b1565b60405180910390a150505050505050565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b60405180606001604052806003905b611a9b611ab1565b815260200190600190039081611a935790505090565b60405180606001604052806003905b611ac8611ade565b815260200190600190039081611ac05790505090565b6040518060e001604052806000815260200160001515815260200160001515815260200160008152602001600081526020016000151581526020016000151581525090565b600080fd5b600080fd5b6000819050919050565b611b4081611b2d565b8114611b4b57600080fd5b50565b600081359050611b5d81611b37565b92915050565b600060208284031215611b7957611b78611b23565b5b6000611b8784828501611b4e565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611bbb82611b90565b9050919050565b611bcb81611bb0565b82525050565b611bda81611b2d565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611c1a578082015181840152602081019050611bff565b60008484015250505050565b6000601f19601f8301169050919050565b6000611c4282611be0565b611c4c8185611beb565b9350611c5c818560208601611bfc565b611c6581611c26565b840191505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60068110611cb057611caf611c70565b5b50565b6000819050611cc182611c9f565b919050565b6000611cd182611cb3565b9050919050565b611ce181611cc6565b82525050565b60008115159050919050565b611cfc81611ce7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000611d2982611d02565b611d338185611d0d565b9350611d43818560208601611bfc565b611d4c81611c26565b840191505092915050565b600061012082019050611d6d600083018c611bc2565b611d7a602083018b611bd1565b611d87604083018a611bd1565b8181036060830152611d998189611c37565b9050611da86080830188611bd1565b611db560a0830187611cd8565b611dc260c0830186611bd1565b611dcf60e0830185611cf3565b818103610100830152611de28184611d1e565b90509a9950505050505050505050565b600080fd5b600080fd5b600080fd5b60008083601f840112611e1757611e16611df2565b5b8235905067ffffffffffffffff811115611e3457611e33611df7565b5b602083019150836001820283011115611e5057611e4f611dfc565b5b9250929050565b611e6081611bb0565b8114611e6b57600080fd5b50565b600081359050611e7d81611e57565b92915050565b600081905082602060030282011115611e9f57611e9e611dfc565b5b92915050565b611eae81611ce7565b8114611eb957600080fd5b50565b600081359050611ecb81611ea5565b92915050565b60008083601f840112611ee757611ee6611df2565b5b8235905067ffffffffffffffff811115611f0457611f03611df7565b5b602083019150836001820283011115611f2057611f1f611dfc565b5b9250929050565b600080600080600080600060e0888a031215611f4657611f45611b23565b5b600088013567ffffffffffffffff811115611f6457611f63611b28565b5b611f708a828b01611e01565b97509750506020611f838a828b01611e6e565b9550506040611f948a828b01611e83565b94505060a0611fa58a828b01611ebc565b93505060c088013567ffffffffffffffff811115611fc657611fc5611b28565b5b611fd28a828b01611ed1565b925092505092959891949750929550565b6000602082019050611ff86000830184611bd1565b92915050565b600060039050919050565b600081905092915050565b6000819050919050565b600060039050919050565b600081905092915050565b6000819050919050565b61204781611b2d565b82525050565b61205681611ce7565b82525050565b60e082016000820151612072600085018261203e565b506020820151612085602085018261204d565b506040820151612098604085018261204d565b5060608201516120ab606085018261203e565b5060808201516120be608085018261203e565b5060a08201516120d160a085018261204d565b5060c08201516120e460c085018261204d565b50505050565b60006120f6838361205c565b60e08301905092915050565b6000602082019050919050565b6121188161201e565b6121228184612029565b925061212d82612034565b8060005b8381101561215e57815161214587826120ea565b965061215083612102565b925050600181019050612131565b505050505050565b6000612172838361210f565b6102a08301905092915050565b6000602082019050919050565b61219581611ffe565b61219f8184612009565b92506121aa82612014565b8060005b838110156121db5781516121c28782612166565b96506121cd8361217f565b9250506001810190506121ae565b505050505050565b60006107e0820190506121f9600083018461218c565b92915050565b6000806040838503121561221657612215611b23565b5b600061222485828601611b4e565b925050602061223585828601611b4e565b9150509250929050565b60008060008060008060a0878903121561225c5761225b611b23565b5b600061226a89828a01611ebc565b965050602061227b89828a01611ebc565b955050604061228c89828a01611b4e565b945050606061229d89828a01611b4e565b935050608087013567ffffffffffffffff8111156122be576122bd611b28565b5b6122ca89828a01611ed1565b92509250509295509295509295565b60006020820190506122ee6000830184611cf3565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061233b57607f821691505b60208210810361234e5761234d6122f4565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6123e781611bb0565b82525050565b604082016000820151612403600085018261203e565b50602082015161241660208501826123de565b50505050565b600061242883836123ed565b60408301905092915050565b6000602082019050919050565b600061244c826123b2565b61245681856123bd565b9350612461836123ce565b8060005b83811015612492578151612479888261241c565b975061248483612434565b925050600181019050612465565b5085935050505092915050565b82818337600083830152505050565b60006124ba8385611beb565b93506124c783858461249f565b6124d083611c26565b840190509392505050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000819050919050565b61251a81612507565b82525050565b600082825260208201905092915050565b600061253c82611be0565b6125468185612520565b9350612556818560208601611bfc565b61255f81611c26565b840191505092915050565b60006040830160008301516125826000860182612511565b506020830151848203602086015261259a8282612531565b9150508091505092915050565b60006125b3838361256a565b905092915050565b6000602082019050919050565b60006125d3826124db565b6125dd81856124e6565b9350836020820285016125ef856124f7565b8060005b8581101561262b578484038952815161260c85826125a7565b9450612617836125bb565b925060208a019950506001810190506125f3565b50829750879550505050505092915050565b600060608201905081810360008301526126578187612441565b9050818103602083015261266c8185876124ae565b9050818103604083015261268081846125c8565b905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006126c582611b2d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036126f7576126f661268b565b5b600182019050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261276f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612732565b6127798683612732565b95508019841693508086168417925050509392505050565b6000819050919050565b60006127b66127b16127ac84611b2d565b612791565b611b2d565b9050919050565b6000819050919050565b6127d08361279b565b6127e46127dc826127bd565b84845461273f565b825550505050565b600090565b6127f96127ec565b6128048184846127c7565b505050565b5b818110156128285761281d6000826127f1565b60018101905061280a565b5050565b601f82111561286d5761283e8161270d565b61284784612722565b81016020851015612856578190505b61286a61286285612722565b830182612809565b50505b505050565b600082821c905092915050565b600061289060001984600802612872565b1980831691505092915050565b60006128a9838361287f565b9150826002028217905092915050565b6128c38383612702565b67ffffffffffffffff8111156128dc576128db612354565b5b6128e68254612323565b6128f182828561282c565b6000601f831160018114612920576000841561290e578287013590505b612918858261289d565b865550612980565b601f19841661292e8661270d565b60005b8281101561295657848901358255600182019150602085019450602081019050612931565b86831015612973578489013561296f601f89168261287f565b8355505b6001600288020188555050505b50505050505050565b600082905092915050565b60008190508160005260206000209050919050565b601f8211156129ea576129bb81612994565b6129c484612722565b810160208510156129d3578190505b6129e76129df85612722565b830182612809565b50505b505050565b6129f98383612989565b67ffffffffffffffff811115612a1257612a11612354565b5b612a1c8254612323565b612a278282856129a9565b6000601f831160018114612a565760008415612a44578287013590505b612a4e858261289d565b865550612ab6565b601f198416612a6486612994565b60005b82811015612a8c57848901358255600182019150602085019450602081019050612a67565b86831015612aa95784890135612aa5601f89168261287f565b8355505b6001600288020188555050505b50505050505050565b6000602082019050612ad46000830184611bc2565b92915050565b600081519050612ae981611b37565b92915050565b600060208284031215612b0557612b04611b23565b5b6000612b1384828501612ada565b91505092915050565b7f53656e6465722068617320696e73756666696369656e74205245502062616c6160008201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b6000612b78602383611beb565b9150612b8382612b1c565b604082019050919050565b60006020820190508181036000830152612ba781612b6b565b9050919050565b6000612bb982611b2d565b9150612bc483611b2d565b9250828203905081811115612bdc57612bdb61268b565b5b92915050565b6000612bed82611b2d565b9150612bf883611b2d565b9250828201905080821115612c1057612c0f61268b565b5b92915050565b7f6f6e56616c6964617465206d6179206f6e6c792062652063616c6c656420627960008201527f207468652044414f20636f6e7472616374000000000000000000000000000000602082015250565b6000612c72603183611beb565b9150612c7d82612c16565b604082019050919050565b60006020820190508181036000830152612ca181612c65565b9050919050565b600080600060608486031215612cc157612cc0611b23565b5b6000612ccf86828701611b4e565b9350506020612ce086828701611b4e565b9250506040612cf186828701611b4e565b9150509250925092565b7f51756f72756d206e6f74206d6574000000000000000000000000000000000000600082015250565b6000612d31600e83611beb565b9150612d3c82612cfb565b602082019050919050565b6000604082019050612d5c6000830184611bd1565b8181036020830152612d6d81612d24565b905092915050565b6000612d8082611b2d565b9150612d8b83611b2d565b9250828202612d9981611b2d565b91508282048414831517612db057612daf61268b565b5b5092915050565b7f5374616765203020696e646578206d69736d6174636800000000000000000000600082015250565b6000612ded601683611beb565b9150612df882612db7565b602082019050919050565b60006020820190508181036000830152612e1c81612de0565b9050919050565b7f526574727920636f756e74206578636565646564000000000000000000000000600082015250565b6000612e59601483611beb565b9150612e6482612e23565b602082019050919050565b6000604082019050612e846000830184611bd1565b8181036020830152612e9581612e4c565b905092915050565b7f5374616765203120696e646578206d69736d6174636800000000000000000000600082015250565b6000612ed3601683611beb565b9150612ede82612e9d565b602082019050919050565b60006020820190508181036000830152612f0281612ec6565b9050919050565b7f5374616765203220696e646578206d69736d6174636800000000000000000000600082015250565b6000612f3f601683611beb565b9150612f4a82612f09565b602082019050919050565b60006020820190508181036000830152612f6e81612f32565b9050919050565b60008154612f8281612323565b612f8c8186611d0d565b94506001821660008114612fa75760018114612fbd57612ff0565b60ff198316865281151560200286019350612ff0565b612fc685612994565b60005b83811015612fe857815481890152600182019150602081019050612fc9565b808801955050505b50505092915050565b600060608201905061300e6000830186611bd1565b61301b6020830185611bd1565b818103604083015261302d8184612f75565b9050949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061307182611b2d565b915061307c83611b2d565b92508261308c5761308b613037565b5b828204905092915050565b7f52656d61696e696e6720666565732063616e206f6e6c79206265207265636c6160008201527f696d6564207768656e2070726f706f73616c20686173206265656e206163636560208201527f70746564206f72206661696c6564000000000000000000000000000000000000604082015250565b6000613119604e83611beb565b915061312482613097565b606082019050919050565b600060208201905081810360008301526131488161310c565b9050919050565b7f4174746573746174696f6e206f6e6c79207065727461696e7320746f2050726f60008201527f706f73616c207374616765000000000000000000000000000000000000000000602082015250565b60006131ab602b83611beb565b91506131b68261314f565b604082019050919050565b600060208201905081810360008301526131da8161319e565b9050919050565b7f4578706972656420776974686f7574206d656574696e6720617474657374617460008201527f696f6e207468726573686f6c6400000000000000000000000000000000000000602082015250565b600061323d602d83611beb565b9150613248826131e1565b604082019050919050565b60006040820190506132686000830184611bd1565b818103602083015261327981613230565b905092915050565b60006060820190506132966000830186611bd1565b6132a36020830185611bd1565b6132b06040830184611bd1565b949350505050565b600081546132c581612323565b6132cf8186611beb565b945060018216600081146132ea576001811461330057613333565b60ff198316865281151560200286019350613333565b6133098561270d565b60005b8381101561332b5781548189015260018201915060208101905061330c565b808801955050505b50505092915050565b600060029050919050565b600081905092915050565b6000819050919050565b6000613368838361203e565b60208301905092915050565b60008160001c9050919050565b6000819050919050565b600061339e61339983613374565b613381565b9050919050565b60006133b1825461338b565b9050919050565b6000600182019050919050565b6133ce8161333c565b6133d88184613347565b92506133e382613352565b8060005b8381101561341b576133f8826133a5565b613402878261335c565b965061340d836133b8565b9250506001810190506133e7565b505050505050565b600061014082019050818103600083015261343e818b6132b8565b905061344d602083018a611bd1565b61345a60408301896133c5565b61346760808301886133c5565b61347460c0830187611bd1565b61348160e0830186611cf3565b61348f610100830185611cf3565b8181036101208301526134a28184611d1e565b90509998505050505050505050565b60006040820190506134c66000830185611bd1565b6134d36020830184611bd1565b939250505056fea26469706673582212206762b0e3b407cd420cb9bdf0883517503c54ce561ac6228459ea6d2de0d1511d64736f6c63430008180033", - "deployedBytecode": "0x60806040526004361061007b5760003560e01c8063b4e6a1d51161004e578063b4e6a1d51461015b578063c019faab14610198578063da35c664146101c1578063ea923e63146101ec5761007b565b8063013cf08b146100805780632805b5d9146100c557806362d26ed7146100f5578063a3bb24cc14610132575b600080fd5b34801561008c57600080fd5b506100a760048036038101906100a29190611b63565b610229565b6040516100bc99989796959493929190611d57565b60405180910390f35b6100df60048036038101906100da9190611f27565b6103c1565b6040516100ec9190611fe3565b60405180910390f35b34801561010157600080fd5b5061011c60048036038101906101179190611b63565b6106c5565b60405161012991906121e3565b60405180910390f35b34801561013e57600080fd5b50610159600480360381019061015491906121ff565b6109fe565b005b34801561016757600080fd5b50610182600480360381019061017d919061223f565b610be9565b60405161018f9190611fe3565b60405180910390f35b3480156101a457600080fd5b506101bf60048036038101906101ba9190611b63565b6114be565b005b3480156101cd57600080fd5b506101d66115ea565b6040516101e39190611fe3565b60405180910390f35b3480156101f857600080fd5b50610213600480360381019061020e9190611b63565b6115f0565b60405161022091906122d9565b60405180910390f35b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600101549080600201549080600301805461027e90612323565b80601f01602080910402602001604051908101604052809291908181526020018280546102aa90612323565b80156102f75780601f106102cc576101008083540402835291602001916102f7565b820191906000526020600020905b8154815290600101906020018083116102da57829003601f168201915b5050505050908060040154908060050160009054906101000a900460ff169080600701549080603b0160009054906101000a900460ff169080603c01805461033e90612323565b80601f016020809104026020016040519081016040528092919081815260200182805461036a90612323565b80156103b75780601f1061038c576101008083540402835291602001916103b7565b820191906000526020600020905b81548152906001019060200180831161039a57829003601f168201915b5050505050905089565b600060606000600167ffffffffffffffff8111156103e2576103e1612354565b5b60405190808252806020026020018201604052801561041b57816020015b610408611a54565b8152602001906001900390816104005790505b5090506040518060400160405280606481526020018973ffffffffffffffffffffffffffffffffffffffff168152508160008151811061045e5761045d612383565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d827828c8c866040518563ffffffff1660e01b81526004016104c8949392919061263d565b600060405180830381600087803b1580156104e257600080fd5b505af11580156104f6573d6000803e3d6000fd5b505050506001600081548092919061050d906126ba565b91905055925060008060008581526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508a8a82600301918261057f9291906128b9565b504281600401819055508760006003811061059d5761059c612383565b5b6020020135816008016000600381106105b9576105b8612383565b5b6011020160000181905550876001600381106105d8576105d7612383565b5b6020020135816008016001600381106105f4576105f3612383565b5b60110201600001819055508760026003811061061357610612612383565b5b60200201358160080160026003811061062f5761062e612383565b5b6011020160000181905550348160010181905550806001015481600201819055508681603b0160006101000a81548160ff021916908315150217905550858582603c01918261067f9291906129ef565b507f9a863892f20a6b9c6cec64d611b5864be6373191ce2cacc3b05a299bce3bf80e846040516106af9190611fe3565b60405180910390a1505050979650505050505050565b6106cd611a84565b60008060008481526020019081526020016000209050806008016000600381106106fa576106f9612383565b5b60110201600101600380602002604051908101604052809291906000905b828210156107ca578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff16151515158152505081526020019060010190610718565b50505050826000600381106107e2576107e1612383565b5b60200201819052508060080160016003811061080157610800612383565b5b60110201600101600380602002604051908101604052809291906000905b828210156108d1578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff1615151515815250508152602001906001019061081f565b50505050826001600381106108e9576108e8612383565b5b60200201819052508060080160026003811061090857610907612383565b5b60110201600101600380602002604051908101604052809291906000905b828210156109d8578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff16151515158152505081526020019060010190610926565b50505050826002600381106109f0576109ef612383565b5b602002018190525050919050565b807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610a589190612abf565b602060405180830381865afa158015610a75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a999190612aef565b1015610ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad190612b8e565b60405180910390fd5b600080600084815260200190815260200160002090508060060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054816007016000828254610b459190612bae565b92505081905550818160060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081816007016000828254610ba69190612be2565b925050819055507fc23775ba00d23f337b9f790bd67eb5194aa9b95876933f9ccd1887becbb55ccb83604051610bdc9190611fe3565b60405180910390a1505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7090612c88565b60405180910390fd5b60008060008585810190610c8d9190612ca8565b925092509250600080600085815260200190815260200160002090506000816008018460038110610cc157610cc0612383565b5b601102019050600081600101826010015460038110610ce357610ce2612383565b5b60050201905060018160010160016101000a81548160ff0219169083151502179055508a81600201819055508981600301819055508b8160040160016101000a81548160ff0219169083151502179055508c8160040160006101000a81548160ff0219169083151502179055508b610de35760048360050160006101000a81548160ff02191690836005811115610d7d57610d7c611c70565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb86604051610db19190612d47565b60405180910390a183836002016000828254610dcd9190612be2565b92505081905550600196505050505050506114b4565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e749190612aef565b8b8d610e809190612be2565b6002610e8c9190612d75565b1015905060016005811115610ea457610ea3611c70565b5b8460050160009054906101000a900460ff166005811115610ec857610ec7611c70565b5b03610fe95760008614610f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0790612e03565b60405180910390fd5b8d8015610f1a5750805b15610f515760028460050160006101000a81548160ff02191690836005811115610f4757610f46611c70565b5b0217905550610fe4565b6002836010015410610fc65760048460050160006101000a81548160ff02191690836005811115610f8557610f84611c70565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb87604051610fb99190612e6f565b60405180910390a1610fe3565b6001836010016000828254610fdb9190612be2565b925050819055505b5b611390565b60026005811115610ffd57610ffc611c70565b5b8460050160009054906101000a900460ff16600581111561102157611020611c70565b5b036111425760018614611069576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106090612ee9565b60405180910390fd5b8d80156110735750805b156110aa5760038460050160006101000a81548160ff021916908360058111156110a05761109f611c70565b5b021790555061113d565b600283601001541061111f5760048460050160006101000a81548160ff021916908360058111156110de576110dd611c70565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb876040516111129190612e6f565b60405180910390a161113c565b60018360100160008282546111349190612be2565b925050819055505b5b61138f565b6003600581111561115657611155611c70565b5b8460050160009054906101000a900460ff16600581111561117a57611179611c70565b5b0361138e57600286146111c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b990612f55565b60405180910390fd5b8d80156111cc5750805b156112fa5760058460050160006101000a81548160ff021916908360058111156111f9576111f8611c70565b5b02179055507fd24c2047577899547bacebb29e319fc7d73f6712b5adb401d45556f34bb2aa3b8760405161122d9190611fe3565b60405180910390a183603b0160009054906101000a900460ff16156112f5578360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663815a05728d8d87603c016040518463ffffffff1660e01b81526004016112b093929190612ff9565b6020604051808303816000875af11580156112cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f39190612aef565b505b61138d565b600283601001541061136f5760048460050160006101000a81548160ff0219169083600581111561132e5761132d611c70565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb876040516113629190612e6f565b60405180910390a161138c565b60018360100160008282546113849190612be2565b925050819055505b5b5b5b5b600160058111156113a4576113a3611c70565b5b8460050160009054906101000a900460ff1660058111156113c8576113c7611c70565b5b036113ee576113e9876000600a87600101546113e49190613066565b61181c565b6114a8565b6002600581111561140257611401611c70565b5b8460050160009054906101000a900460ff16600581111561142657611425611c70565b5b0361144c57611447876001600a87600101546114429190613066565b61181c565b6114a7565b600360058111156114605761145f611c70565b5b8460050160009054906101000a900460ff16600581111561148457611483611c70565b5b036114a6576114a5876002600a87600101546114a09190613066565b61181c565b5b5b5b60009750505050505050505b9695505050505050565b60008060008381526020019081526020016000209050600460058111156114e8576114e7611c70565b5b8160050160009054906101000a900460ff16600581111561150c5761150b611c70565b5b148061154c575060058081111561152657611525611c70565b5b8160050160009054906101000a900460ff16600581111561154a57611549611c70565b5b145b61158b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115829061312f565b60405180910390fd5b600081600201549050600082600201819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156115e4573d6000803e3d6000fd5b50505050565b60015481565b60008060008084815260200190815260200160002090506000600581111561161b5761161a611c70565b5b8160050160009054906101000a900460ff16600581111561163f5761163e611c70565b5b1461167f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611676906131c1565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117109190612aef565b8260070154600a6117219190612d75565b1015905060006301e13380836004015461173b9190612be2565b42119050816117c65780156117ba5760048360050160006101000a81548160ff0219169083600581111561177257611771611c70565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb856040516117a69190613253565b60405180910390a160009350505050611817565b60009350505050611817565b60018360050160006101000a81548160ff021916908360058111156117ee576117ed611c70565b5b021790555061180f856000600a866001015461180a9190613066565b61181c565b600193505050505b919050565b60008060008581526020019081526020016000209050818160020160008282546118469190612bae565b9250508190555060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c7384846003018560080188600381106118a6576118a5612383565b5b6011020160000154600689600381106118c2576118c1612383565b5b60020201600c8a600381106118da576118d9612383565b5b6002020160028b600381106118f2576118f1612383565b5b015460058c6003811061190857611907612383565b5b602091828204019190069054906101000a900460ff1660018e8e8e60405160200161193593929190613281565b6040516020818303038152906040526040518a63ffffffff1660e01b8152600401611967989796959493929190613423565b60206040518083038185885af1158015611985573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119aa9190612aef565b905060008260080185600381106119c4576119c3612383565b5b6011020190506000816001018260100154600381106119e6576119e5612383565b5b60050201905082816000018190555060018160010160006101000a81548160ff0219169083151502179055507f4c14e16a98683e5b8bd70d51192048d0499fb3999b27ff1e9dce7e4a2c6734798784604051611a439291906134b1565b60405180910390a150505050505050565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b60405180606001604052806003905b611a9b611ab1565b815260200190600190039081611a935790505090565b60405180606001604052806003905b611ac8611ade565b815260200190600190039081611ac05790505090565b6040518060e001604052806000815260200160001515815260200160001515815260200160008152602001600081526020016000151581526020016000151581525090565b600080fd5b600080fd5b6000819050919050565b611b4081611b2d565b8114611b4b57600080fd5b50565b600081359050611b5d81611b37565b92915050565b600060208284031215611b7957611b78611b23565b5b6000611b8784828501611b4e565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611bbb82611b90565b9050919050565b611bcb81611bb0565b82525050565b611bda81611b2d565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611c1a578082015181840152602081019050611bff565b60008484015250505050565b6000601f19601f8301169050919050565b6000611c4282611be0565b611c4c8185611beb565b9350611c5c818560208601611bfc565b611c6581611c26565b840191505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60068110611cb057611caf611c70565b5b50565b6000819050611cc182611c9f565b919050565b6000611cd182611cb3565b9050919050565b611ce181611cc6565b82525050565b60008115159050919050565b611cfc81611ce7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000611d2982611d02565b611d338185611d0d565b9350611d43818560208601611bfc565b611d4c81611c26565b840191505092915050565b600061012082019050611d6d600083018c611bc2565b611d7a602083018b611bd1565b611d87604083018a611bd1565b8181036060830152611d998189611c37565b9050611da86080830188611bd1565b611db560a0830187611cd8565b611dc260c0830186611bd1565b611dcf60e0830185611cf3565b818103610100830152611de28184611d1e565b90509a9950505050505050505050565b600080fd5b600080fd5b600080fd5b60008083601f840112611e1757611e16611df2565b5b8235905067ffffffffffffffff811115611e3457611e33611df7565b5b602083019150836001820283011115611e5057611e4f611dfc565b5b9250929050565b611e6081611bb0565b8114611e6b57600080fd5b50565b600081359050611e7d81611e57565b92915050565b600081905082602060030282011115611e9f57611e9e611dfc565b5b92915050565b611eae81611ce7565b8114611eb957600080fd5b50565b600081359050611ecb81611ea5565b92915050565b60008083601f840112611ee757611ee6611df2565b5b8235905067ffffffffffffffff811115611f0457611f03611df7565b5b602083019150836001820283011115611f2057611f1f611dfc565b5b9250929050565b600080600080600080600060e0888a031215611f4657611f45611b23565b5b600088013567ffffffffffffffff811115611f6457611f63611b28565b5b611f708a828b01611e01565b97509750506020611f838a828b01611e6e565b9550506040611f948a828b01611e83565b94505060a0611fa58a828b01611ebc565b93505060c088013567ffffffffffffffff811115611fc657611fc5611b28565b5b611fd28a828b01611ed1565b925092505092959891949750929550565b6000602082019050611ff86000830184611bd1565b92915050565b600060039050919050565b600081905092915050565b6000819050919050565b600060039050919050565b600081905092915050565b6000819050919050565b61204781611b2d565b82525050565b61205681611ce7565b82525050565b60e082016000820151612072600085018261203e565b506020820151612085602085018261204d565b506040820151612098604085018261204d565b5060608201516120ab606085018261203e565b5060808201516120be608085018261203e565b5060a08201516120d160a085018261204d565b5060c08201516120e460c085018261204d565b50505050565b60006120f6838361205c565b60e08301905092915050565b6000602082019050919050565b6121188161201e565b6121228184612029565b925061212d82612034565b8060005b8381101561215e57815161214587826120ea565b965061215083612102565b925050600181019050612131565b505050505050565b6000612172838361210f565b6102a08301905092915050565b6000602082019050919050565b61219581611ffe565b61219f8184612009565b92506121aa82612014565b8060005b838110156121db5781516121c28782612166565b96506121cd8361217f565b9250506001810190506121ae565b505050505050565b60006107e0820190506121f9600083018461218c565b92915050565b6000806040838503121561221657612215611b23565b5b600061222485828601611b4e565b925050602061223585828601611b4e565b9150509250929050565b60008060008060008060a0878903121561225c5761225b611b23565b5b600061226a89828a01611ebc565b965050602061227b89828a01611ebc565b955050604061228c89828a01611b4e565b945050606061229d89828a01611b4e565b935050608087013567ffffffffffffffff8111156122be576122bd611b28565b5b6122ca89828a01611ed1565b92509250509295509295509295565b60006020820190506122ee6000830184611cf3565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061233b57607f821691505b60208210810361234e5761234d6122f4565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6123e781611bb0565b82525050565b604082016000820151612403600085018261203e565b50602082015161241660208501826123de565b50505050565b600061242883836123ed565b60408301905092915050565b6000602082019050919050565b600061244c826123b2565b61245681856123bd565b9350612461836123ce565b8060005b83811015612492578151612479888261241c565b975061248483612434565b925050600181019050612465565b5085935050505092915050565b82818337600083830152505050565b60006124ba8385611beb565b93506124c783858461249f565b6124d083611c26565b840190509392505050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000819050919050565b61251a81612507565b82525050565b600082825260208201905092915050565b600061253c82611be0565b6125468185612520565b9350612556818560208601611bfc565b61255f81611c26565b840191505092915050565b60006040830160008301516125826000860182612511565b506020830151848203602086015261259a8282612531565b9150508091505092915050565b60006125b3838361256a565b905092915050565b6000602082019050919050565b60006125d3826124db565b6125dd81856124e6565b9350836020820285016125ef856124f7565b8060005b8581101561262b578484038952815161260c85826125a7565b9450612617836125bb565b925060208a019950506001810190506125f3565b50829750879550505050505092915050565b600060608201905081810360008301526126578187612441565b9050818103602083015261266c8185876124ae565b9050818103604083015261268081846125c8565b905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006126c582611b2d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036126f7576126f661268b565b5b600182019050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261276f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612732565b6127798683612732565b95508019841693508086168417925050509392505050565b6000819050919050565b60006127b66127b16127ac84611b2d565b612791565b611b2d565b9050919050565b6000819050919050565b6127d08361279b565b6127e46127dc826127bd565b84845461273f565b825550505050565b600090565b6127f96127ec565b6128048184846127c7565b505050565b5b818110156128285761281d6000826127f1565b60018101905061280a565b5050565b601f82111561286d5761283e8161270d565b61284784612722565b81016020851015612856578190505b61286a61286285612722565b830182612809565b50505b505050565b600082821c905092915050565b600061289060001984600802612872565b1980831691505092915050565b60006128a9838361287f565b9150826002028217905092915050565b6128c38383612702565b67ffffffffffffffff8111156128dc576128db612354565b5b6128e68254612323565b6128f182828561282c565b6000601f831160018114612920576000841561290e578287013590505b612918858261289d565b865550612980565b601f19841661292e8661270d565b60005b8281101561295657848901358255600182019150602085019450602081019050612931565b86831015612973578489013561296f601f89168261287f565b8355505b6001600288020188555050505b50505050505050565b600082905092915050565b60008190508160005260206000209050919050565b601f8211156129ea576129bb81612994565b6129c484612722565b810160208510156129d3578190505b6129e76129df85612722565b830182612809565b50505b505050565b6129f98383612989565b67ffffffffffffffff811115612a1257612a11612354565b5b612a1c8254612323565b612a278282856129a9565b6000601f831160018114612a565760008415612a44578287013590505b612a4e858261289d565b865550612ab6565b601f198416612a6486612994565b60005b82811015612a8c57848901358255600182019150602085019450602081019050612a67565b86831015612aa95784890135612aa5601f89168261287f565b8355505b6001600288020188555050505b50505050505050565b6000602082019050612ad46000830184611bc2565b92915050565b600081519050612ae981611b37565b92915050565b600060208284031215612b0557612b04611b23565b5b6000612b1384828501612ada565b91505092915050565b7f53656e6465722068617320696e73756666696369656e74205245502062616c6160008201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b6000612b78602383611beb565b9150612b8382612b1c565b604082019050919050565b60006020820190508181036000830152612ba781612b6b565b9050919050565b6000612bb982611b2d565b9150612bc483611b2d565b9250828203905081811115612bdc57612bdb61268b565b5b92915050565b6000612bed82611b2d565b9150612bf883611b2d565b9250828201905080821115612c1057612c0f61268b565b5b92915050565b7f6f6e56616c6964617465206d6179206f6e6c792062652063616c6c656420627960008201527f207468652044414f20636f6e7472616374000000000000000000000000000000602082015250565b6000612c72603183611beb565b9150612c7d82612c16565b604082019050919050565b60006020820190508181036000830152612ca181612c65565b9050919050565b600080600060608486031215612cc157612cc0611b23565b5b6000612ccf86828701611b4e565b9350506020612ce086828701611b4e565b9250506040612cf186828701611b4e565b9150509250925092565b7f51756f72756d206e6f74206d6574000000000000000000000000000000000000600082015250565b6000612d31600e83611beb565b9150612d3c82612cfb565b602082019050919050565b6000604082019050612d5c6000830184611bd1565b8181036020830152612d6d81612d24565b905092915050565b6000612d8082611b2d565b9150612d8b83611b2d565b9250828202612d9981611b2d565b91508282048414831517612db057612daf61268b565b5b5092915050565b7f5374616765203020696e646578206d69736d6174636800000000000000000000600082015250565b6000612ded601683611beb565b9150612df882612db7565b602082019050919050565b60006020820190508181036000830152612e1c81612de0565b9050919050565b7f526574727920636f756e74206578636565646564000000000000000000000000600082015250565b6000612e59601483611beb565b9150612e6482612e23565b602082019050919050565b6000604082019050612e846000830184611bd1565b8181036020830152612e9581612e4c565b905092915050565b7f5374616765203120696e646578206d69736d6174636800000000000000000000600082015250565b6000612ed3601683611beb565b9150612ede82612e9d565b602082019050919050565b60006020820190508181036000830152612f0281612ec6565b9050919050565b7f5374616765203220696e646578206d69736d6174636800000000000000000000600082015250565b6000612f3f601683611beb565b9150612f4a82612f09565b602082019050919050565b60006020820190508181036000830152612f6e81612f32565b9050919050565b60008154612f8281612323565b612f8c8186611d0d565b94506001821660008114612fa75760018114612fbd57612ff0565b60ff198316865281151560200286019350612ff0565b612fc685612994565b60005b83811015612fe857815481890152600182019150602081019050612fc9565b808801955050505b50505092915050565b600060608201905061300e6000830186611bd1565b61301b6020830185611bd1565b818103604083015261302d8184612f75565b9050949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061307182611b2d565b915061307c83611b2d565b92508261308c5761308b613037565b5b828204905092915050565b7f52656d61696e696e6720666565732063616e206f6e6c79206265207265636c6160008201527f696d6564207768656e2070726f706f73616c20686173206265656e206163636560208201527f70746564206f72206661696c6564000000000000000000000000000000000000604082015250565b6000613119604e83611beb565b915061312482613097565b606082019050919050565b600060208201905081810360008301526131488161310c565b9050919050565b7f4174746573746174696f6e206f6e6c79207065727461696e7320746f2050726f60008201527f706f73616c207374616765000000000000000000000000000000000000000000602082015250565b60006131ab602b83611beb565b91506131b68261314f565b604082019050919050565b600060208201905081810360008301526131da8161319e565b9050919050565b7f4578706972656420776974686f7574206d656574696e6720617474657374617460008201527f696f6e207468726573686f6c6400000000000000000000000000000000000000602082015250565b600061323d602d83611beb565b9150613248826131e1565b604082019050919050565b60006040820190506132686000830184611bd1565b818103602083015261327981613230565b905092915050565b60006060820190506132966000830186611bd1565b6132a36020830185611bd1565b6132b06040830184611bd1565b949350505050565b600081546132c581612323565b6132cf8186611beb565b945060018216600081146132ea576001811461330057613333565b60ff198316865281151560200286019350613333565b6133098561270d565b60005b8381101561332b5781548189015260018201915060208101905061330c565b808801955050505b50505092915050565b600060029050919050565b600081905092915050565b6000819050919050565b6000613368838361203e565b60208301905092915050565b60008160001c9050919050565b6000819050919050565b600061339e61339983613374565b613381565b9050919050565b60006133b1825461338b565b9050919050565b6000600182019050919050565b6133ce8161333c565b6133d88184613347565b92506133e382613352565b8060005b8381101561341b576133f8826133a5565b613402878261335c565b965061340d836133b8565b9250506001810190506133e7565b505050505050565b600061014082019050818103600083015261343e818b6132b8565b905061344d602083018a611bd1565b61345a60408301896133c5565b61346760808301886133c5565b61347460c0830187611bd1565b61348160e0830186611cf3565b61348f610100830185611cf3565b8181036101208301526134a28184611d1e565b90509998505050505050505050565b60006040820190506134c66000830185611bd1565b6134d36020830184611bd1565b939250505056fea26469706673582212206762b0e3b407cd420cb9bdf0883517503c54ce561ac6228459ea6d2de0d1511d64736f6c63430008180033", + "bytecode": "0x60a06040526040518060600160405280600060ff168152602001600160ff168152602001606460ff1681525060029060036200003d929190620001ef565b5060405180606001604052806000151515158152602001600015151515815260200160011515151581525060059060036200007a92919062000239565b5060405180606001604052806040518060400160405280600160ff168152602001600a60ff1681525081526020016040518060400160405280600160ff168152602001600a60ff1681525081526020016040518060400160405280600160ff168152602001600a60ff168152508152506006906003620000fc929190620002d9565b5060405180606001604052806040518060400160405280600260ff168152602001600360ff1681525081526020016040518060400160405280600260ff168152602001600360ff1681525081526020016040518060400160405280600260ff168152602001600360ff16815250815250600c9060036200017e929190620002d9565b503480156200018c57600080fd5b50604051620039d1380380620039d18339818101604052810190620001b291906200044e565b808073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050505062000480565b826003810192821562000226579160200282015b8281111562000225578251829060ff1690559160200191906001019062000203565b5b50905062000235919062000331565b5090565b826003601f01602090048101928215620002c65791602002820160005b838211156200029557835183826101000a81548160ff021916908315150217905550926020019260010160208160000104928301926001030262000256565b8015620002c45782816101000a81549060ff021916905560010160208160000104928301926001030262000295565b505b509050620002d5919062000331565b5090565b82600360020281019282156200031e579160200282015b828111156200031d578251829060026200030c92919062000350565b5091602001919060020190620002f0565b5b5090506200032d91906200039a565b5090565b5b808211156200034c57600081600090555060010162000332565b5090565b826002810192821562000387579160200282015b8281111562000386578251829060ff1690559160200191906001019062000364565b5b50905062000396919062000331565b5090565b5b80821115620003be5760008181620003b49190620003c2565b506002016200039b565b5090565b506000815560010160009055565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200040282620003d5565b9050919050565b60006200041682620003f5565b9050919050565b620004288162000409565b81146200043457600080fd5b50565b60008151905062000448816200041d565b92915050565b600060208284031215620004675762000466620003d0565b5b6000620004778482850162000437565b91505092915050565b608051613512620004bf6000396000818161046d01528181610a0301528181610bef01528181610de901528181611685015261185301526135126000f3fe60806040526004361061007b5760003560e01c8063b4e6a1d51161004e578063b4e6a1d51461015b578063c019faab14610198578063da35c664146101c1578063ea923e63146101ec5761007b565b8063013cf08b146100805780632805b5d9146100c557806362d26ed7146100f5578063a3bb24cc14610132575b600080fd5b34801561008c57600080fd5b506100a760048036038101906100a29190611b65565b610229565b6040516100bc99989796959493929190611d59565b60405180910390f35b6100df60048036038101906100da9190611f29565b6103c1565b6040516100ec9190611fe5565b60405180910390f35b34801561010157600080fd5b5061011c60048036038101906101179190611b65565b6106c7565b60405161012991906121e5565b60405180910390f35b34801561013e57600080fd5b5061015960048036038101906101549190612201565b610a00565b005b34801561016757600080fd5b50610182600480360381019061017d9190612241565b610beb565b60405161018f9190611fe5565b60405180910390f35b3480156101a457600080fd5b506101bf60048036038101906101ba9190611b65565b6114c0565b005b3480156101cd57600080fd5b506101d66115ec565b6040516101e39190611fe5565b60405180910390f35b3480156101f857600080fd5b50610213600480360381019061020e9190611b65565b6115f2565b60405161022091906122db565b60405180910390f35b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600101549080600201549080600301805461027e90612325565b80601f01602080910402602001604051908101604052809291908181526020018280546102aa90612325565b80156102f75780601f106102cc576101008083540402835291602001916102f7565b820191906000526020600020905b8154815290600101906020018083116102da57829003601f168201915b5050505050908060040154908060050160009054906101000a900460ff169080600701549080603b0160009054906101000a900460ff169080603c01805461033e90612325565b80601f016020809104026020016040519081016040528092919081815260200182805461036a90612325565b80156103b75780601f1061038c576101008083540402835291602001916103b7565b820191906000526020600020905b81548152906001019060200180831161039a57829003601f168201915b5050505050905089565b600060606000600167ffffffffffffffff8111156103e2576103e1612356565b5b60405190808252806020026020018201604052801561041b57816020015b610408611a56565b8152602001906001900390816104005790505b5090506040518060400160405280620f424081526020018973ffffffffffffffffffffffffffffffffffffffff16815250816000815181106104605761045f612385565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d827828c8c866040518563ffffffff1660e01b81526004016104ca949392919061263f565b600060405180830381600087803b1580156104e457600080fd5b505af11580156104f8573d6000803e3d6000fd5b505050506001600081548092919061050f906126bc565b91905055925060008060008581526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508a8a8260030191826105819291906128bb565b504281600401819055508760006003811061059f5761059e612385565b5b6020020135816008016000600381106105bb576105ba612385565b5b6011020160000181905550876001600381106105da576105d9612385565b5b6020020135816008016001600381106105f6576105f5612385565b5b60110201600001819055508760026003811061061557610614612385565b5b60200201358160080160026003811061063157610630612385565b5b6011020160000181905550348160010181905550806001015481600201819055508681603b0160006101000a81548160ff021916908315150217905550858582603c0191826106819291906129f1565b507f9a863892f20a6b9c6cec64d611b5864be6373191ce2cacc3b05a299bce3bf80e846040516106b19190611fe5565b60405180910390a1505050979650505050505050565b6106cf611a86565b60008060008481526020019081526020016000209050806008016000600381106106fc576106fb612385565b5b60110201600101600380602002604051908101604052809291906000905b828210156107cc578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff1615151515815250508152602001906001019061071a565b50505050826000600381106107e4576107e3612385565b5b60200201819052508060080160016003811061080357610802612385565b5b60110201600101600380602002604051908101604052809291906000905b828210156108d3578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff16151515158152505081526020019060010190610821565b50505050826001600381106108eb576108ea612385565b5b60200201819052508060080160026003811061090a57610909612385565b5b60110201600101600380602002604051908101604052809291906000905b828210156109da578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff16151515158152505081526020019060010190610928565b50505050826002600381106109f2576109f1612385565b5b602002018190525050919050565b807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610a5a9190612ac1565b602060405180830381865afa158015610a77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9b9190612af1565b1015610adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad390612b90565b60405180910390fd5b600080600084815260200190815260200160002090508060060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054816007016000828254610b479190612bb0565b92505081905550818160060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081816007016000828254610ba89190612be4565b925050819055507fc23775ba00d23f337b9f790bd67eb5194aa9b95876933f9ccd1887becbb55ccb83604051610bde9190611fe5565b60405180910390a1505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7290612c8a565b60405180910390fd5b60008060008585810190610c8f9190612caa565b925092509250600080600085815260200190815260200160002090506000816008018460038110610cc357610cc2612385565b5b601102019050600081600101826010015460038110610ce557610ce4612385565b5b60050201905060018160010160016101000a81548160ff0219169083151502179055508a81600201819055508981600301819055508b8160040160016101000a81548160ff0219169083151502179055508c8160040160006101000a81548160ff0219169083151502179055508b610de55760048360050160006101000a81548160ff02191690836005811115610d7f57610d7e611c72565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb86604051610db39190612d49565b60405180910390a183836002016000828254610dcf9190612be4565b92505081905550600196505050505050506114b6565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e769190612af1565b8b8d610e829190612be4565b6002610e8e9190612d77565b1015905060016005811115610ea657610ea5611c72565b5b8460050160009054906101000a900460ff166005811115610eca57610ec9611c72565b5b03610feb5760008614610f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0990612e05565b60405180910390fd5b8d8015610f1c5750805b15610f535760028460050160006101000a81548160ff02191690836005811115610f4957610f48611c72565b5b0217905550610fe6565b6002836010015410610fc85760048460050160006101000a81548160ff02191690836005811115610f8757610f86611c72565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb87604051610fbb9190612e71565b60405180910390a1610fe5565b6001836010016000828254610fdd9190612be4565b925050819055505b5b611392565b60026005811115610fff57610ffe611c72565b5b8460050160009054906101000a900460ff16600581111561102357611022611c72565b5b03611144576001861461106b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106290612eeb565b60405180910390fd5b8d80156110755750805b156110ac5760038460050160006101000a81548160ff021916908360058111156110a2576110a1611c72565b5b021790555061113f565b60028360100154106111215760048460050160006101000a81548160ff021916908360058111156110e0576110df611c72565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb876040516111149190612e71565b60405180910390a161113e565b60018360100160008282546111369190612be4565b925050819055505b5b611391565b6003600581111561115857611157611c72565b5b8460050160009054906101000a900460ff16600581111561117c5761117b611c72565b5b0361139057600286146111c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bb90612f57565b60405180910390fd5b8d80156111ce5750805b156112fc5760058460050160006101000a81548160ff021916908360058111156111fb576111fa611c72565b5b02179055507fd24c2047577899547bacebb29e319fc7d73f6712b5adb401d45556f34bb2aa3b8760405161122f9190611fe5565b60405180910390a183603b0160009054906101000a900460ff16156112f7578360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663815a05728d8d87603c016040518463ffffffff1660e01b81526004016112b293929190612ffb565b6020604051808303816000875af11580156112d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f59190612af1565b505b61138f565b60028360100154106113715760048460050160006101000a81548160ff021916908360058111156113305761132f611c72565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb876040516113649190612e71565b60405180910390a161138e565b60018360100160008282546113869190612be4565b925050819055505b5b5b5b5b600160058111156113a6576113a5611c72565b5b8460050160009054906101000a900460ff1660058111156113ca576113c9611c72565b5b036113f0576113eb876000600a87600101546113e69190613068565b61181e565b6114aa565b6002600581111561140457611403611c72565b5b8460050160009054906101000a900460ff16600581111561142857611427611c72565b5b0361144e57611449876001600a87600101546114449190613068565b61181e565b6114a9565b6003600581111561146257611461611c72565b5b8460050160009054906101000a900460ff16600581111561148657611485611c72565b5b036114a8576114a7876002600a87600101546114a29190613068565b61181e565b5b5b5b60009750505050505050505b9695505050505050565b60008060008381526020019081526020016000209050600460058111156114ea576114e9611c72565b5b8160050160009054906101000a900460ff16600581111561150e5761150d611c72565b5b148061154e575060058081111561152857611527611c72565b5b8160050160009054906101000a900460ff16600581111561154c5761154b611c72565b5b145b61158d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158490613131565b60405180910390fd5b600081600201549050600082600201819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156115e6573d6000803e3d6000fd5b50505050565b60015481565b60008060008084815260200190815260200160002090506000600581111561161d5761161c611c72565b5b8160050160009054906101000a900460ff16600581111561164157611640611c72565b5b14611681576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611678906131c3565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117129190612af1565b8260070154600a6117239190612d77565b1015905060006301e13380836004015461173d9190612be4565b42119050816117c85780156117bc5760048360050160006101000a81548160ff0219169083600581111561177457611773611c72565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb856040516117a89190613255565b60405180910390a160009350505050611819565b60009350505050611819565b60018360050160006101000a81548160ff021916908360058111156117f0576117ef611c72565b5b0217905550611811856000600a866001015461180c9190613068565b61181e565b600193505050505b919050565b60008060008581526020019081526020016000209050818160020160008282546118489190612bb0565b9250508190555060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c7384846003018560080188600381106118a8576118a7612385565b5b6011020160000154600689600381106118c4576118c3612385565b5b60020201600c8a600381106118dc576118db612385565b5b6002020160028b600381106118f4576118f3612385565b5b015460058c6003811061190a57611909612385565b5b602091828204019190069054906101000a900460ff1660018e8e8e60405160200161193793929190613283565b6040516020818303038152906040526040518a63ffffffff1660e01b8152600401611969989796959493929190613425565b60206040518083038185885af1158015611987573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119ac9190612af1565b905060008260080185600381106119c6576119c5612385565b5b6011020190506000816001018260100154600381106119e8576119e7612385565b5b60050201905082816000018190555060018160010160006101000a81548160ff0219169083151502179055507f4c14e16a98683e5b8bd70d51192048d0499fb3999b27ff1e9dce7e4a2c6734798784604051611a459291906134b3565b60405180910390a150505050505050565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b60405180606001604052806003905b611a9d611ab3565b815260200190600190039081611a955790505090565b60405180606001604052806003905b611aca611ae0565b815260200190600190039081611ac25790505090565b6040518060e001604052806000815260200160001515815260200160001515815260200160008152602001600081526020016000151581526020016000151581525090565b600080fd5b600080fd5b6000819050919050565b611b4281611b2f565b8114611b4d57600080fd5b50565b600081359050611b5f81611b39565b92915050565b600060208284031215611b7b57611b7a611b25565b5b6000611b8984828501611b50565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611bbd82611b92565b9050919050565b611bcd81611bb2565b82525050565b611bdc81611b2f565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611c1c578082015181840152602081019050611c01565b60008484015250505050565b6000601f19601f8301169050919050565b6000611c4482611be2565b611c4e8185611bed565b9350611c5e818560208601611bfe565b611c6781611c28565b840191505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60068110611cb257611cb1611c72565b5b50565b6000819050611cc382611ca1565b919050565b6000611cd382611cb5565b9050919050565b611ce381611cc8565b82525050565b60008115159050919050565b611cfe81611ce9565b82525050565b600081519050919050565b600082825260208201905092915050565b6000611d2b82611d04565b611d358185611d0f565b9350611d45818560208601611bfe565b611d4e81611c28565b840191505092915050565b600061012082019050611d6f600083018c611bc4565b611d7c602083018b611bd3565b611d89604083018a611bd3565b8181036060830152611d9b8189611c39565b9050611daa6080830188611bd3565b611db760a0830187611cda565b611dc460c0830186611bd3565b611dd160e0830185611cf5565b818103610100830152611de48184611d20565b90509a9950505050505050505050565b600080fd5b600080fd5b600080fd5b60008083601f840112611e1957611e18611df4565b5b8235905067ffffffffffffffff811115611e3657611e35611df9565b5b602083019150836001820283011115611e5257611e51611dfe565b5b9250929050565b611e6281611bb2565b8114611e6d57600080fd5b50565b600081359050611e7f81611e59565b92915050565b600081905082602060030282011115611ea157611ea0611dfe565b5b92915050565b611eb081611ce9565b8114611ebb57600080fd5b50565b600081359050611ecd81611ea7565b92915050565b60008083601f840112611ee957611ee8611df4565b5b8235905067ffffffffffffffff811115611f0657611f05611df9565b5b602083019150836001820283011115611f2257611f21611dfe565b5b9250929050565b600080600080600080600060e0888a031215611f4857611f47611b25565b5b600088013567ffffffffffffffff811115611f6657611f65611b2a565b5b611f728a828b01611e03565b97509750506020611f858a828b01611e70565b9550506040611f968a828b01611e85565b94505060a0611fa78a828b01611ebe565b93505060c088013567ffffffffffffffff811115611fc857611fc7611b2a565b5b611fd48a828b01611ed3565b925092505092959891949750929550565b6000602082019050611ffa6000830184611bd3565b92915050565b600060039050919050565b600081905092915050565b6000819050919050565b600060039050919050565b600081905092915050565b6000819050919050565b61204981611b2f565b82525050565b61205881611ce9565b82525050565b60e0820160008201516120746000850182612040565b506020820151612087602085018261204f565b50604082015161209a604085018261204f565b5060608201516120ad6060850182612040565b5060808201516120c06080850182612040565b5060a08201516120d360a085018261204f565b5060c08201516120e660c085018261204f565b50505050565b60006120f8838361205e565b60e08301905092915050565b6000602082019050919050565b61211a81612020565b612124818461202b565b925061212f82612036565b8060005b8381101561216057815161214787826120ec565b965061215283612104565b925050600181019050612133565b505050505050565b60006121748383612111565b6102a08301905092915050565b6000602082019050919050565b61219781612000565b6121a1818461200b565b92506121ac82612016565b8060005b838110156121dd5781516121c48782612168565b96506121cf83612181565b9250506001810190506121b0565b505050505050565b60006107e0820190506121fb600083018461218e565b92915050565b6000806040838503121561221857612217611b25565b5b600061222685828601611b50565b925050602061223785828601611b50565b9150509250929050565b60008060008060008060a0878903121561225e5761225d611b25565b5b600061226c89828a01611ebe565b965050602061227d89828a01611ebe565b955050604061228e89828a01611b50565b945050606061229f89828a01611b50565b935050608087013567ffffffffffffffff8111156122c0576122bf611b2a565b5b6122cc89828a01611ed3565b92509250509295509295509295565b60006020820190506122f06000830184611cf5565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061233d57607f821691505b6020821081036123505761234f6122f6565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6123e981611bb2565b82525050565b6040820160008201516124056000850182612040565b50602082015161241860208501826123e0565b50505050565b600061242a83836123ef565b60408301905092915050565b6000602082019050919050565b600061244e826123b4565b61245881856123bf565b9350612463836123d0565b8060005b8381101561249457815161247b888261241e565b975061248683612436565b925050600181019050612467565b5085935050505092915050565b82818337600083830152505050565b60006124bc8385611bed565b93506124c98385846124a1565b6124d283611c28565b840190509392505050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000819050919050565b61251c81612509565b82525050565b600082825260208201905092915050565b600061253e82611be2565b6125488185612522565b9350612558818560208601611bfe565b61256181611c28565b840191505092915050565b60006040830160008301516125846000860182612513565b506020830151848203602086015261259c8282612533565b9150508091505092915050565b60006125b5838361256c565b905092915050565b6000602082019050919050565b60006125d5826124dd565b6125df81856124e8565b9350836020820285016125f1856124f9565b8060005b8581101561262d578484038952815161260e85826125a9565b9450612619836125bd565b925060208a019950506001810190506125f5565b50829750879550505050505092915050565b600060608201905081810360008301526126598187612443565b9050818103602083015261266e8185876124b0565b9050818103604083015261268281846125ca565b905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006126c782611b2f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036126f9576126f861268d565b5b600182019050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026127717fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612734565b61277b8683612734565b95508019841693508086168417925050509392505050565b6000819050919050565b60006127b86127b36127ae84611b2f565b612793565b611b2f565b9050919050565b6000819050919050565b6127d28361279d565b6127e66127de826127bf565b848454612741565b825550505050565b600090565b6127fb6127ee565b6128068184846127c9565b505050565b5b8181101561282a5761281f6000826127f3565b60018101905061280c565b5050565b601f82111561286f576128408161270f565b61284984612724565b81016020851015612858578190505b61286c61286485612724565b83018261280b565b50505b505050565b600082821c905092915050565b600061289260001984600802612874565b1980831691505092915050565b60006128ab8383612881565b9150826002028217905092915050565b6128c58383612704565b67ffffffffffffffff8111156128de576128dd612356565b5b6128e88254612325565b6128f382828561282e565b6000601f8311600181146129225760008415612910578287013590505b61291a858261289f565b865550612982565b601f1984166129308661270f565b60005b8281101561295857848901358255600182019150602085019450602081019050612933565b868310156129755784890135612971601f891682612881565b8355505b6001600288020188555050505b50505050505050565b600082905092915050565b60008190508160005260206000209050919050565b601f8211156129ec576129bd81612996565b6129c684612724565b810160208510156129d5578190505b6129e96129e185612724565b83018261280b565b50505b505050565b6129fb838361298b565b67ffffffffffffffff811115612a1457612a13612356565b5b612a1e8254612325565b612a298282856129ab565b6000601f831160018114612a585760008415612a46578287013590505b612a50858261289f565b865550612ab8565b601f198416612a6686612996565b60005b82811015612a8e57848901358255600182019150602085019450602081019050612a69565b86831015612aab5784890135612aa7601f891682612881565b8355505b6001600288020188555050505b50505050505050565b6000602082019050612ad66000830184611bc4565b92915050565b600081519050612aeb81611b39565b92915050565b600060208284031215612b0757612b06611b25565b5b6000612b1584828501612adc565b91505092915050565b7f53656e6465722068617320696e73756666696369656e74205245502062616c6160008201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b6000612b7a602383611bed565b9150612b8582612b1e565b604082019050919050565b60006020820190508181036000830152612ba981612b6d565b9050919050565b6000612bbb82611b2f565b9150612bc683611b2f565b9250828203905081811115612bde57612bdd61268d565b5b92915050565b6000612bef82611b2f565b9150612bfa83611b2f565b9250828201905080821115612c1257612c1161268d565b5b92915050565b7f6f6e56616c6964617465206d6179206f6e6c792062652063616c6c656420627960008201527f207468652044414f20636f6e7472616374000000000000000000000000000000602082015250565b6000612c74603183611bed565b9150612c7f82612c18565b604082019050919050565b60006020820190508181036000830152612ca381612c67565b9050919050565b600080600060608486031215612cc357612cc2611b25565b5b6000612cd186828701611b50565b9350506020612ce286828701611b50565b9250506040612cf386828701611b50565b9150509250925092565b7f51756f72756d206e6f74206d6574000000000000000000000000000000000000600082015250565b6000612d33600e83611bed565b9150612d3e82612cfd565b602082019050919050565b6000604082019050612d5e6000830184611bd3565b8181036020830152612d6f81612d26565b905092915050565b6000612d8282611b2f565b9150612d8d83611b2f565b9250828202612d9b81611b2f565b91508282048414831517612db257612db161268d565b5b5092915050565b7f5374616765203020696e646578206d69736d6174636800000000000000000000600082015250565b6000612def601683611bed565b9150612dfa82612db9565b602082019050919050565b60006020820190508181036000830152612e1e81612de2565b9050919050565b7f526574727920636f756e74206578636565646564000000000000000000000000600082015250565b6000612e5b601483611bed565b9150612e6682612e25565b602082019050919050565b6000604082019050612e866000830184611bd3565b8181036020830152612e9781612e4e565b905092915050565b7f5374616765203120696e646578206d69736d6174636800000000000000000000600082015250565b6000612ed5601683611bed565b9150612ee082612e9f565b602082019050919050565b60006020820190508181036000830152612f0481612ec8565b9050919050565b7f5374616765203220696e646578206d69736d6174636800000000000000000000600082015250565b6000612f41601683611bed565b9150612f4c82612f0b565b602082019050919050565b60006020820190508181036000830152612f7081612f34565b9050919050565b60008154612f8481612325565b612f8e8186611d0f565b94506001821660008114612fa95760018114612fbf57612ff2565b60ff198316865281151560200286019350612ff2565b612fc885612996565b60005b83811015612fea57815481890152600182019150602081019050612fcb565b808801955050505b50505092915050565b60006060820190506130106000830186611bd3565b61301d6020830185611bd3565b818103604083015261302f8184612f77565b9050949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061307382611b2f565b915061307e83611b2f565b92508261308e5761308d613039565b5b828204905092915050565b7f52656d61696e696e6720666565732063616e206f6e6c79206265207265636c6160008201527f696d6564207768656e2070726f706f73616c20686173206265656e206163636560208201527f70746564206f72206661696c6564000000000000000000000000000000000000604082015250565b600061311b604e83611bed565b915061312682613099565b606082019050919050565b6000602082019050818103600083015261314a8161310e565b9050919050565b7f4174746573746174696f6e206f6e6c79207065727461696e7320746f2050726f60008201527f706f73616c207374616765000000000000000000000000000000000000000000602082015250565b60006131ad602b83611bed565b91506131b882613151565b604082019050919050565b600060208201905081810360008301526131dc816131a0565b9050919050565b7f4578706972656420776974686f7574206d656574696e6720617474657374617460008201527f696f6e207468726573686f6c6400000000000000000000000000000000000000602082015250565b600061323f602d83611bed565b915061324a826131e3565b604082019050919050565b600060408201905061326a6000830184611bd3565b818103602083015261327b81613232565b905092915050565b60006060820190506132986000830186611bd3565b6132a56020830185611bd3565b6132b26040830184611bd3565b949350505050565b600081546132c781612325565b6132d18186611bed565b945060018216600081146132ec576001811461330257613335565b60ff198316865281151560200286019350613335565b61330b8561270f565b60005b8381101561332d5781548189015260018201915060208101905061330e565b808801955050505b50505092915050565b600060029050919050565b600081905092915050565b6000819050919050565b600061336a8383612040565b60208301905092915050565b60008160001c9050919050565b6000819050919050565b60006133a061339b83613376565b613383565b9050919050565b60006133b3825461338d565b9050919050565b6000600182019050919050565b6133d08161333e565b6133da8184613349565b92506133e582613354565b8060005b8381101561341d576133fa826133a7565b613404878261335e565b965061340f836133ba565b9250506001810190506133e9565b505050505050565b6000610140820190508181036000830152613440818b6132ba565b905061344f602083018a611bd3565b61345c60408301896133c7565b61346960808301886133c7565b61347660c0830187611bd3565b61348360e0830186611cf5565b613491610100830185611cf5565b8181036101208301526134a48184611d20565b90509998505050505050505050565b60006040820190506134c86000830185611bd3565b6134d56020830184611bd3565b939250505056fea26469706673582212201d58ad841ab3f497dc4dea4ae300f38d6bdbcc8e2ce2c13aa171bea2125b7f0b64736f6c63430008180033", + "deployedBytecode": "0x60806040526004361061007b5760003560e01c8063b4e6a1d51161004e578063b4e6a1d51461015b578063c019faab14610198578063da35c664146101c1578063ea923e63146101ec5761007b565b8063013cf08b146100805780632805b5d9146100c557806362d26ed7146100f5578063a3bb24cc14610132575b600080fd5b34801561008c57600080fd5b506100a760048036038101906100a29190611b65565b610229565b6040516100bc99989796959493929190611d59565b60405180910390f35b6100df60048036038101906100da9190611f29565b6103c1565b6040516100ec9190611fe5565b60405180910390f35b34801561010157600080fd5b5061011c60048036038101906101179190611b65565b6106c7565b60405161012991906121e5565b60405180910390f35b34801561013e57600080fd5b5061015960048036038101906101549190612201565b610a00565b005b34801561016757600080fd5b50610182600480360381019061017d9190612241565b610beb565b60405161018f9190611fe5565b60405180910390f35b3480156101a457600080fd5b506101bf60048036038101906101ba9190611b65565b6114c0565b005b3480156101cd57600080fd5b506101d66115ec565b6040516101e39190611fe5565b60405180910390f35b3480156101f857600080fd5b50610213600480360381019061020e9190611b65565b6115f2565b60405161022091906122db565b60405180910390f35b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600101549080600201549080600301805461027e90612325565b80601f01602080910402602001604051908101604052809291908181526020018280546102aa90612325565b80156102f75780601f106102cc576101008083540402835291602001916102f7565b820191906000526020600020905b8154815290600101906020018083116102da57829003601f168201915b5050505050908060040154908060050160009054906101000a900460ff169080600701549080603b0160009054906101000a900460ff169080603c01805461033e90612325565b80601f016020809104026020016040519081016040528092919081815260200182805461036a90612325565b80156103b75780601f1061038c576101008083540402835291602001916103b7565b820191906000526020600020905b81548152906001019060200180831161039a57829003601f168201915b5050505050905089565b600060606000600167ffffffffffffffff8111156103e2576103e1612356565b5b60405190808252806020026020018201604052801561041b57816020015b610408611a56565b8152602001906001900390816104005790505b5090506040518060400160405280620f424081526020018973ffffffffffffffffffffffffffffffffffffffff16815250816000815181106104605761045f612385565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d827828c8c866040518563ffffffff1660e01b81526004016104ca949392919061263f565b600060405180830381600087803b1580156104e457600080fd5b505af11580156104f8573d6000803e3d6000fd5b505050506001600081548092919061050f906126bc565b91905055925060008060008581526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508a8a8260030191826105819291906128bb565b504281600401819055508760006003811061059f5761059e612385565b5b6020020135816008016000600381106105bb576105ba612385565b5b6011020160000181905550876001600381106105da576105d9612385565b5b6020020135816008016001600381106105f6576105f5612385565b5b60110201600001819055508760026003811061061557610614612385565b5b60200201358160080160026003811061063157610630612385565b5b6011020160000181905550348160010181905550806001015481600201819055508681603b0160006101000a81548160ff021916908315150217905550858582603c0191826106819291906129f1565b507f9a863892f20a6b9c6cec64d611b5864be6373191ce2cacc3b05a299bce3bf80e846040516106b19190611fe5565b60405180910390a1505050979650505050505050565b6106cf611a86565b60008060008481526020019081526020016000209050806008016000600381106106fc576106fb612385565b5b60110201600101600380602002604051908101604052809291906000905b828210156107cc578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff1615151515815250508152602001906001019061071a565b50505050826000600381106107e4576107e3612385565b5b60200201819052508060080160016003811061080357610802612385565b5b60110201600101600380602002604051908101604052809291906000905b828210156108d3578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff16151515158152505081526020019060010190610821565b50505050826001600381106108eb576108ea612385565b5b60200201819052508060080160026003811061090a57610909612385565b5b60110201600101600380602002604051908101604052809291906000905b828210156109da578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff16151515158152505081526020019060010190610928565b50505050826002600381106109f2576109f1612385565b5b602002018190525050919050565b807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610a5a9190612ac1565b602060405180830381865afa158015610a77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9b9190612af1565b1015610adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad390612b90565b60405180910390fd5b600080600084815260200190815260200160002090508060060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054816007016000828254610b479190612bb0565b92505081905550818160060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081816007016000828254610ba89190612be4565b925050819055507fc23775ba00d23f337b9f790bd67eb5194aa9b95876933f9ccd1887becbb55ccb83604051610bde9190611fe5565b60405180910390a1505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7290612c8a565b60405180910390fd5b60008060008585810190610c8f9190612caa565b925092509250600080600085815260200190815260200160002090506000816008018460038110610cc357610cc2612385565b5b601102019050600081600101826010015460038110610ce557610ce4612385565b5b60050201905060018160010160016101000a81548160ff0219169083151502179055508a81600201819055508981600301819055508b8160040160016101000a81548160ff0219169083151502179055508c8160040160006101000a81548160ff0219169083151502179055508b610de55760048360050160006101000a81548160ff02191690836005811115610d7f57610d7e611c72565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb86604051610db39190612d49565b60405180910390a183836002016000828254610dcf9190612be4565b92505081905550600196505050505050506114b6565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e769190612af1565b8b8d610e829190612be4565b6002610e8e9190612d77565b1015905060016005811115610ea657610ea5611c72565b5b8460050160009054906101000a900460ff166005811115610eca57610ec9611c72565b5b03610feb5760008614610f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0990612e05565b60405180910390fd5b8d8015610f1c5750805b15610f535760028460050160006101000a81548160ff02191690836005811115610f4957610f48611c72565b5b0217905550610fe6565b6002836010015410610fc85760048460050160006101000a81548160ff02191690836005811115610f8757610f86611c72565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb87604051610fbb9190612e71565b60405180910390a1610fe5565b6001836010016000828254610fdd9190612be4565b925050819055505b5b611392565b60026005811115610fff57610ffe611c72565b5b8460050160009054906101000a900460ff16600581111561102357611022611c72565b5b03611144576001861461106b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106290612eeb565b60405180910390fd5b8d80156110755750805b156110ac5760038460050160006101000a81548160ff021916908360058111156110a2576110a1611c72565b5b021790555061113f565b60028360100154106111215760048460050160006101000a81548160ff021916908360058111156110e0576110df611c72565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb876040516111149190612e71565b60405180910390a161113e565b60018360100160008282546111369190612be4565b925050819055505b5b611391565b6003600581111561115857611157611c72565b5b8460050160009054906101000a900460ff16600581111561117c5761117b611c72565b5b0361139057600286146111c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bb90612f57565b60405180910390fd5b8d80156111ce5750805b156112fc5760058460050160006101000a81548160ff021916908360058111156111fb576111fa611c72565b5b02179055507fd24c2047577899547bacebb29e319fc7d73f6712b5adb401d45556f34bb2aa3b8760405161122f9190611fe5565b60405180910390a183603b0160009054906101000a900460ff16156112f7578360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663815a05728d8d87603c016040518463ffffffff1660e01b81526004016112b293929190612ffb565b6020604051808303816000875af11580156112d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f59190612af1565b505b61138f565b60028360100154106113715760048460050160006101000a81548160ff021916908360058111156113305761132f611c72565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb876040516113649190612e71565b60405180910390a161138e565b60018360100160008282546113869190612be4565b925050819055505b5b5b5b5b600160058111156113a6576113a5611c72565b5b8460050160009054906101000a900460ff1660058111156113ca576113c9611c72565b5b036113f0576113eb876000600a87600101546113e69190613068565b61181e565b6114aa565b6002600581111561140457611403611c72565b5b8460050160009054906101000a900460ff16600581111561142857611427611c72565b5b0361144e57611449876001600a87600101546114449190613068565b61181e565b6114a9565b6003600581111561146257611461611c72565b5b8460050160009054906101000a900460ff16600581111561148657611485611c72565b5b036114a8576114a7876002600a87600101546114a29190613068565b61181e565b5b5b5b60009750505050505050505b9695505050505050565b60008060008381526020019081526020016000209050600460058111156114ea576114e9611c72565b5b8160050160009054906101000a900460ff16600581111561150e5761150d611c72565b5b148061154e575060058081111561152857611527611c72565b5b8160050160009054906101000a900460ff16600581111561154c5761154b611c72565b5b145b61158d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158490613131565b60405180910390fd5b600081600201549050600082600201819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156115e6573d6000803e3d6000fd5b50505050565b60015481565b60008060008084815260200190815260200160002090506000600581111561161d5761161c611c72565b5b8160050160009054906101000a900460ff16600581111561164157611640611c72565b5b14611681576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611678906131c3565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117129190612af1565b8260070154600a6117239190612d77565b1015905060006301e13380836004015461173d9190612be4565b42119050816117c85780156117bc5760048360050160006101000a81548160ff0219169083600581111561177457611773611c72565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb856040516117a89190613255565b60405180910390a160009350505050611819565b60009350505050611819565b60018360050160006101000a81548160ff021916908360058111156117f0576117ef611c72565b5b0217905550611811856000600a866001015461180c9190613068565b61181e565b600193505050505b919050565b60008060008581526020019081526020016000209050818160020160008282546118489190612bb0565b9250508190555060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c7384846003018560080188600381106118a8576118a7612385565b5b6011020160000154600689600381106118c4576118c3612385565b5b60020201600c8a600381106118dc576118db612385565b5b6002020160028b600381106118f4576118f3612385565b5b015460058c6003811061190a57611909612385565b5b602091828204019190069054906101000a900460ff1660018e8e8e60405160200161193793929190613283565b6040516020818303038152906040526040518a63ffffffff1660e01b8152600401611969989796959493929190613425565b60206040518083038185885af1158015611987573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119ac9190612af1565b905060008260080185600381106119c6576119c5612385565b5b6011020190506000816001018260100154600381106119e8576119e7612385565b5b60050201905082816000018190555060018160010160006101000a81548160ff0219169083151502179055507f4c14e16a98683e5b8bd70d51192048d0499fb3999b27ff1e9dce7e4a2c6734798784604051611a459291906134b3565b60405180910390a150505050505050565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b60405180606001604052806003905b611a9d611ab3565b815260200190600190039081611a955790505090565b60405180606001604052806003905b611aca611ae0565b815260200190600190039081611ac25790505090565b6040518060e001604052806000815260200160001515815260200160001515815260200160008152602001600081526020016000151581526020016000151581525090565b600080fd5b600080fd5b6000819050919050565b611b4281611b2f565b8114611b4d57600080fd5b50565b600081359050611b5f81611b39565b92915050565b600060208284031215611b7b57611b7a611b25565b5b6000611b8984828501611b50565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611bbd82611b92565b9050919050565b611bcd81611bb2565b82525050565b611bdc81611b2f565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611c1c578082015181840152602081019050611c01565b60008484015250505050565b6000601f19601f8301169050919050565b6000611c4482611be2565b611c4e8185611bed565b9350611c5e818560208601611bfe565b611c6781611c28565b840191505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60068110611cb257611cb1611c72565b5b50565b6000819050611cc382611ca1565b919050565b6000611cd382611cb5565b9050919050565b611ce381611cc8565b82525050565b60008115159050919050565b611cfe81611ce9565b82525050565b600081519050919050565b600082825260208201905092915050565b6000611d2b82611d04565b611d358185611d0f565b9350611d45818560208601611bfe565b611d4e81611c28565b840191505092915050565b600061012082019050611d6f600083018c611bc4565b611d7c602083018b611bd3565b611d89604083018a611bd3565b8181036060830152611d9b8189611c39565b9050611daa6080830188611bd3565b611db760a0830187611cda565b611dc460c0830186611bd3565b611dd160e0830185611cf5565b818103610100830152611de48184611d20565b90509a9950505050505050505050565b600080fd5b600080fd5b600080fd5b60008083601f840112611e1957611e18611df4565b5b8235905067ffffffffffffffff811115611e3657611e35611df9565b5b602083019150836001820283011115611e5257611e51611dfe565b5b9250929050565b611e6281611bb2565b8114611e6d57600080fd5b50565b600081359050611e7f81611e59565b92915050565b600081905082602060030282011115611ea157611ea0611dfe565b5b92915050565b611eb081611ce9565b8114611ebb57600080fd5b50565b600081359050611ecd81611ea7565b92915050565b60008083601f840112611ee957611ee8611df4565b5b8235905067ffffffffffffffff811115611f0657611f05611df9565b5b602083019150836001820283011115611f2257611f21611dfe565b5b9250929050565b600080600080600080600060e0888a031215611f4857611f47611b25565b5b600088013567ffffffffffffffff811115611f6657611f65611b2a565b5b611f728a828b01611e03565b97509750506020611f858a828b01611e70565b9550506040611f968a828b01611e85565b94505060a0611fa78a828b01611ebe565b93505060c088013567ffffffffffffffff811115611fc857611fc7611b2a565b5b611fd48a828b01611ed3565b925092505092959891949750929550565b6000602082019050611ffa6000830184611bd3565b92915050565b600060039050919050565b600081905092915050565b6000819050919050565b600060039050919050565b600081905092915050565b6000819050919050565b61204981611b2f565b82525050565b61205881611ce9565b82525050565b60e0820160008201516120746000850182612040565b506020820151612087602085018261204f565b50604082015161209a604085018261204f565b5060608201516120ad6060850182612040565b5060808201516120c06080850182612040565b5060a08201516120d360a085018261204f565b5060c08201516120e660c085018261204f565b50505050565b60006120f8838361205e565b60e08301905092915050565b6000602082019050919050565b61211a81612020565b612124818461202b565b925061212f82612036565b8060005b8381101561216057815161214787826120ec565b965061215283612104565b925050600181019050612133565b505050505050565b60006121748383612111565b6102a08301905092915050565b6000602082019050919050565b61219781612000565b6121a1818461200b565b92506121ac82612016565b8060005b838110156121dd5781516121c48782612168565b96506121cf83612181565b9250506001810190506121b0565b505050505050565b60006107e0820190506121fb600083018461218e565b92915050565b6000806040838503121561221857612217611b25565b5b600061222685828601611b50565b925050602061223785828601611b50565b9150509250929050565b60008060008060008060a0878903121561225e5761225d611b25565b5b600061226c89828a01611ebe565b965050602061227d89828a01611ebe565b955050604061228e89828a01611b50565b945050606061229f89828a01611b50565b935050608087013567ffffffffffffffff8111156122c0576122bf611b2a565b5b6122cc89828a01611ed3565b92509250509295509295509295565b60006020820190506122f06000830184611cf5565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061233d57607f821691505b6020821081036123505761234f6122f6565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6123e981611bb2565b82525050565b6040820160008201516124056000850182612040565b50602082015161241860208501826123e0565b50505050565b600061242a83836123ef565b60408301905092915050565b6000602082019050919050565b600061244e826123b4565b61245881856123bf565b9350612463836123d0565b8060005b8381101561249457815161247b888261241e565b975061248683612436565b925050600181019050612467565b5085935050505092915050565b82818337600083830152505050565b60006124bc8385611bed565b93506124c98385846124a1565b6124d283611c28565b840190509392505050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000819050919050565b61251c81612509565b82525050565b600082825260208201905092915050565b600061253e82611be2565b6125488185612522565b9350612558818560208601611bfe565b61256181611c28565b840191505092915050565b60006040830160008301516125846000860182612513565b506020830151848203602086015261259c8282612533565b9150508091505092915050565b60006125b5838361256c565b905092915050565b6000602082019050919050565b60006125d5826124dd565b6125df81856124e8565b9350836020820285016125f1856124f9565b8060005b8581101561262d578484038952815161260e85826125a9565b9450612619836125bd565b925060208a019950506001810190506125f5565b50829750879550505050505092915050565b600060608201905081810360008301526126598187612443565b9050818103602083015261266e8185876124b0565b9050818103604083015261268281846125ca565b905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006126c782611b2f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036126f9576126f861268d565b5b600182019050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026127717fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612734565b61277b8683612734565b95508019841693508086168417925050509392505050565b6000819050919050565b60006127b86127b36127ae84611b2f565b612793565b611b2f565b9050919050565b6000819050919050565b6127d28361279d565b6127e66127de826127bf565b848454612741565b825550505050565b600090565b6127fb6127ee565b6128068184846127c9565b505050565b5b8181101561282a5761281f6000826127f3565b60018101905061280c565b5050565b601f82111561286f576128408161270f565b61284984612724565b81016020851015612858578190505b61286c61286485612724565b83018261280b565b50505b505050565b600082821c905092915050565b600061289260001984600802612874565b1980831691505092915050565b60006128ab8383612881565b9150826002028217905092915050565b6128c58383612704565b67ffffffffffffffff8111156128de576128dd612356565b5b6128e88254612325565b6128f382828561282e565b6000601f8311600181146129225760008415612910578287013590505b61291a858261289f565b865550612982565b601f1984166129308661270f565b60005b8281101561295857848901358255600182019150602085019450602081019050612933565b868310156129755784890135612971601f891682612881565b8355505b6001600288020188555050505b50505050505050565b600082905092915050565b60008190508160005260206000209050919050565b601f8211156129ec576129bd81612996565b6129c684612724565b810160208510156129d5578190505b6129e96129e185612724565b83018261280b565b50505b505050565b6129fb838361298b565b67ffffffffffffffff811115612a1457612a13612356565b5b612a1e8254612325565b612a298282856129ab565b6000601f831160018114612a585760008415612a46578287013590505b612a50858261289f565b865550612ab8565b601f198416612a6686612996565b60005b82811015612a8e57848901358255600182019150602085019450602081019050612a69565b86831015612aab5784890135612aa7601f891682612881565b8355505b6001600288020188555050505b50505050505050565b6000602082019050612ad66000830184611bc4565b92915050565b600081519050612aeb81611b39565b92915050565b600060208284031215612b0757612b06611b25565b5b6000612b1584828501612adc565b91505092915050565b7f53656e6465722068617320696e73756666696369656e74205245502062616c6160008201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b6000612b7a602383611bed565b9150612b8582612b1e565b604082019050919050565b60006020820190508181036000830152612ba981612b6d565b9050919050565b6000612bbb82611b2f565b9150612bc683611b2f565b9250828203905081811115612bde57612bdd61268d565b5b92915050565b6000612bef82611b2f565b9150612bfa83611b2f565b9250828201905080821115612c1257612c1161268d565b5b92915050565b7f6f6e56616c6964617465206d6179206f6e6c792062652063616c6c656420627960008201527f207468652044414f20636f6e7472616374000000000000000000000000000000602082015250565b6000612c74603183611bed565b9150612c7f82612c18565b604082019050919050565b60006020820190508181036000830152612ca381612c67565b9050919050565b600080600060608486031215612cc357612cc2611b25565b5b6000612cd186828701611b50565b9350506020612ce286828701611b50565b9250506040612cf386828701611b50565b9150509250925092565b7f51756f72756d206e6f74206d6574000000000000000000000000000000000000600082015250565b6000612d33600e83611bed565b9150612d3e82612cfd565b602082019050919050565b6000604082019050612d5e6000830184611bd3565b8181036020830152612d6f81612d26565b905092915050565b6000612d8282611b2f565b9150612d8d83611b2f565b9250828202612d9b81611b2f565b91508282048414831517612db257612db161268d565b5b5092915050565b7f5374616765203020696e646578206d69736d6174636800000000000000000000600082015250565b6000612def601683611bed565b9150612dfa82612db9565b602082019050919050565b60006020820190508181036000830152612e1e81612de2565b9050919050565b7f526574727920636f756e74206578636565646564000000000000000000000000600082015250565b6000612e5b601483611bed565b9150612e6682612e25565b602082019050919050565b6000604082019050612e866000830184611bd3565b8181036020830152612e9781612e4e565b905092915050565b7f5374616765203120696e646578206d69736d6174636800000000000000000000600082015250565b6000612ed5601683611bed565b9150612ee082612e9f565b602082019050919050565b60006020820190508181036000830152612f0481612ec8565b9050919050565b7f5374616765203220696e646578206d69736d6174636800000000000000000000600082015250565b6000612f41601683611bed565b9150612f4c82612f0b565b602082019050919050565b60006020820190508181036000830152612f7081612f34565b9050919050565b60008154612f8481612325565b612f8e8186611d0f565b94506001821660008114612fa95760018114612fbf57612ff2565b60ff198316865281151560200286019350612ff2565b612fc885612996565b60005b83811015612fea57815481890152600182019150602081019050612fcb565b808801955050505b50505092915050565b60006060820190506130106000830186611bd3565b61301d6020830185611bd3565b818103604083015261302f8184612f77565b9050949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061307382611b2f565b915061307e83611b2f565b92508261308e5761308d613039565b5b828204905092915050565b7f52656d61696e696e6720666565732063616e206f6e6c79206265207265636c6160008201527f696d6564207768656e2070726f706f73616c20686173206265656e206163636560208201527f70746564206f72206661696c6564000000000000000000000000000000000000604082015250565b600061311b604e83611bed565b915061312682613099565b606082019050919050565b6000602082019050818103600083015261314a8161310e565b9050919050565b7f4174746573746174696f6e206f6e6c79207065727461696e7320746f2050726f60008201527f706f73616c207374616765000000000000000000000000000000000000000000602082015250565b60006131ad602b83611bed565b91506131b882613151565b604082019050919050565b600060208201905081810360008301526131dc816131a0565b9050919050565b7f4578706972656420776974686f7574206d656574696e6720617474657374617460008201527f696f6e207468726573686f6c6400000000000000000000000000000000000000602082015250565b600061323f602d83611bed565b915061324a826131e3565b604082019050919050565b600060408201905061326a6000830184611bd3565b818103602083015261327b81613232565b905092915050565b60006060820190506132986000830186611bd3565b6132a56020830185611bd3565b6132b26040830184611bd3565b949350505050565b600081546132c781612325565b6132d18186611bed565b945060018216600081146132ec576001811461330257613335565b60ff198316865281151560200286019350613335565b61330b8561270f565b60005b8381101561332d5781548189015260018201915060208101905061330e565b808801955050505b50505092915050565b600060029050919050565b600081905092915050565b6000819050919050565b600061336a8383612040565b60208301905092915050565b60008160001c9050919050565b6000819050919050565b60006133a061339b83613376565b613383565b9050919050565b60006133b3825461338d565b9050919050565b6000600182019050919050565b6133d08161333e565b6133da8184613349565b92506133e582613354565b8060005b8381101561341d576133fa826133a7565b613404878261335e565b965061340f836133ba565b9250506001810190506133e9565b505050505050565b6000610140820190508181036000830152613440818b6132ba565b905061344f602083018a611bd3565b61345c60408301896133c7565b61346960808301886133c7565b61347660c0830187611bd3565b61348360e0830186611cf5565b613491610100830185611cf5565b8181036101208301526134a48184611d20565b90509998505050505050505050565b60006040820190506134c86000830185611bd3565b6134d56020830184611bd3565b939250505056fea26469706673582212201d58ad841ab3f497dc4dea4ae300f38d6bdbcc8e2ce2c13aa171bea2125b7f0b64736f6c63430008180033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/backend/contractArtifacts/Work1.json b/backend/contractArtifacts/Work1.json index 45449e3..2b50703 100644 --- a/backend/contractArtifacts/Work1.json +++ b/backend/contractArtifacts/Work1.json @@ -419,7 +419,7 @@ "components": [ { "internalType": "int256", - "name": "weightPercent", + "name": "weightPPM", "type": "int256" }, { @@ -439,8 +439,8 @@ "type": "function" } ], - "bytecode": "0x60a06040523480156200001157600080fd5b5060405162002dd238038062002dd28339818101604052810190620000379190620001c1565b828282828073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505080600181905550816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050506200021d565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620000f582620000c8565b9050919050565b60006200010982620000e8565b9050919050565b6200011b81620000fc565b81146200012757600080fd5b50565b6000815190506200013b8162000110565b92915050565b60006200014e82620000e8565b9050919050565b620001608162000141565b81146200016c57600080fd5b50565b600081519050620001808162000155565b92915050565b6000819050919050565b6200019b8162000186565b8114620001a757600080fd5b50565b600081519050620001bb8162000190565b92915050565b600080600060608486031215620001dd57620001dc620000c3565b5b6000620001ed868287016200012a565b935050602062000200868287016200016f565b92505060406200021386828701620001aa565b9150509250925092565b608051612b8b620002476000396000818161093701528181610a070152610ae90152612b8b6000f3fe6080604052600436106100dd5760003560e01c8063a035b1fe1161007f578063cf37625611610059578063cf37625614610296578063d0fae95f146102d4578063d5a44f86146102fd578063d76b67941461033d576100dd565b8063a035b1fe14610217578063b5b20c0014610242578063c4a9e1161461026b576100dd565b8063815a0572116100bb578063815a05721461015257806381d12c581461018f578063854b6a4f146101d257806399ad6c56146101fb576100dd565b80630d0271d6146100e2578063216ed6ad146100fe5780635badbe4c14610127575b600080fd5b6100fc60048036038101906100f791906113cc565b610368565b005b34801561010a57600080fd5b50610125600480360381019061012091906114ad565b610456565b005b34801561013357600080fd5b5061013c610569565b604051610149919061150f565b60405180910390f35b34801561015e57600080fd5b5061017960048036038101906101749190611580565b61056f565b604051610186919061150f565b60405180910390f35b34801561019b57600080fd5b506101b660048036038101906101b191906115f4565b6105ee565b6040516101c99796959493929190611752565b60405180910390f35b3480156101de57600080fd5b506101f960048036038101906101f491906117fb565b61077a565b005b6102156004803603810190610210919061185d565b610ba9565b005b34801561022357600080fd5b5061022c610cf2565b604051610239919061150f565b60405180910390f35b34801561024e57600080fd5b50610269600480360381019061026491906118d1565b610cf8565b005b34801561027757600080fd5b50610280610e6d565b60405161028d919061150f565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b891906115f4565b610e73565b6040516102cb929190611911565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f69190611990565b610e97565b005b34801561030957600080fd5b50610324600480360381019061031f91906115f4565b6110d0565b6040516103349493929190611a25565b60405180910390f35b34801561034957600080fd5b5061035261112d565b60405161035f919061150f565b60405180910390f35b6001543410156103ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a490611ab6565b60405180910390fd5b6000600760008154809291906103c290611b05565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034816001018190555061043482611133565b8160030181905550838382600401918261044f929190611d93565b5050505050565b60008211610499576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049090611eaf565b60405180910390fd5b6000600560008154809291906104ae90611b05565b9190505590506000600460008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426105239190611ecf565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e98260405161055a919061150f565b60405180910390a15050505050565b60075481565b600080838381019061058191906115f4565b9050600060026000838152602001908152602001600020905080600001546001819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f20826001546040516105d8929190611911565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461065690611bb6565b80601f016020809104026020016040519081016040528092919081815260200182805461068290611bb6565b80156106cf5780601f106106a4576101008083540402835291602001916106cf565b820191906000526020600020905b8154815290600101906020018083116106b257829003601f168201915b5050505050908060050180546106e490611bb6565b80601f016020809104026020016040519081016040528092919081815260200182805461071090611bb6565b801561075d5780601f106107325761010080835404028352916020019161075d565b820191906000526020600020905b81548152906001019060200180831161074057829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b6000600660008481526020019081526020016000209050600160038111156107a5576107a4611630565b5b8160020160009054906101000a900460ff1660038111156107c9576107c8611630565b5b14610809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080090611f4f565b60405180910390fd5b60006004600083600301548152602001908152602001600020905060028260020160006101000a81548160ff0219169083600381111561084c5761084b611630565b5b0217905550828260070160006101000a81548160ff0219169083151502179055506000600167ffffffffffffffff81111561088a57610889611b58565b5b6040519080825280602002602001820160405280156108c357816020015b6108b061132d565b8152602001906001900390816108a85790505b5090506040518060400160405280606481526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508160008151811061092a57610929611f6f565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b81526004016109989392919061230c565b600060405180830381600087803b1580156109b257600080fd5b505af11580156109c6573d6000803e3d6000fd5b505050507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc85856040516109fb929190612358565b60405180910390a160007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c738560010154866005016014604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518963ffffffff1660e01b8152600401610aa2979695949392919061248f565b60206040518083038185885af1158015610ac0573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ae59190612530565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015460016040518563ffffffff1660e01b8152600401610b6f949392919061255d565b600060405180830381600087803b158015610b8957600080fd5b505af1158015610b9d573d6000803e3d6000fd5b50505050505050505050565b600060036000815480929190610bbe90611b05565b919050559050600060026000838152602001908152602001600020905085816000018190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632805b5d93487873388600189604051602001610c38919061150f565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401610c689695949392919061263b565b60206040518083038185885af1158015610c86573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610cab9190612530565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610ce2919061150f565b60405180910390a1505050505050565b60015481565b60006004600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610da1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9890612710565b60405180910390fd5b8060030160009054906101000a900460ff1615610df3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dea906127a2565b60405180910390fd5b8060020154421115610e18578142610e0b9190611ecf565b8160020181905550610e31565b818160020154610e289190611ecf565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e983604051610e60919061150f565b60405180910390a1505050565b60055481565b60026020528060005260406000206000915090508060000154908060010154905082565b600060066000878152602001908152602001600020905060006003811115610ec257610ec1611630565b5b8160020160009054906101000a900460ff166003811115610ee657610ee5611630565b5b14610f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1d9061280e565b60405180910390fd5b6000600460008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fca906128a0565b60405180910390fd5b60018260020160006101000a81548160ff02191690836003811115610ffb57610ffa611630565b5b02179055508585836005019182611013929190611d93565b5060005b8484905081101561108f578260060185858381811061103957611038611f6f565b5b905060200281019061104b91906128cf565b908060018154018082558091505060019003906000526020600020906002020160009091909190915081816110809190612a7b565b50508080600101915050611017565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc876040516110bf919061150f565b60405180910390a150505050505050565b60046020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60035481565b600061113d6111b2565b9050600060046000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b483836040516111a4929190611911565b60405180910390a150919050565b60008060005b600554811015611239576004600082815260200190815260200160002060030160009054906101000a900460ff1661122c576004600082815260200190815260200160002060020154421161122c576004600082815260200190815260200160002060010154826112299190611ecf565b91505b80806001019150506111b8565b506000811161127d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127490612ad5565b60405180910390fd5b6000814461128b9190612b24565b9050600080600090505b600554811015611326576004600082815260200190815260200160002060030160009054906101000a900460ff166113195760046000828152602001908152602001600020600201544211611319576004600082815260200190815260200160002060010154826113069190611ecf565b91508282111561131857809450611326565b5b8080600101915050611295565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f84011261138c5761138b611367565b5b8235905067ffffffffffffffff8111156113a9576113a861136c565b5b6020830191508360018202830111156113c5576113c4611371565b5b9250929050565b600080602083850312156113e3576113e261135d565b5b600083013567ffffffffffffffff81111561140157611400611362565b5b61140d85828601611376565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061144482611419565b9050919050565b61145481611439565b811461145f57600080fd5b50565b6000813590506114718161144b565b92915050565b6000819050919050565b61148a81611477565b811461149557600080fd5b50565b6000813590506114a781611481565b92915050565b6000806000606084860312156114c6576114c561135d565b5b60006114d486828701611462565b93505060206114e586828701611498565b92505060406114f686828701611498565b9150509250925092565b61150981611477565b82525050565b60006020820190506115246000830184611500565b92915050565b60008083601f8401126115405761153f611367565b5b8235905067ffffffffffffffff81111561155d5761155c61136c565b5b60208301915083600182028301111561157957611578611371565b5b9250929050565b6000806000806060858703121561159a5761159961135d565b5b60006115a887828801611498565b94505060206115b987828801611498565b935050604085013567ffffffffffffffff8111156115da576115d9611362565b5b6115e68782880161152a565b925092505092959194509250565b60006020828403121561160a5761160961135d565b5b600061161884828501611498565b91505092915050565b61162a81611439565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600481106116705761166f611630565b5b50565b60008190506116818261165f565b919050565b600061169182611673565b9050919050565b6116a181611686565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b838110156116e15780820151818401526020810190506116c6565b60008484015250505050565b6000601f19601f8301169050919050565b6000611709826116a7565b61171381856116b2565b93506117238185602086016116c3565b61172c816116ed565b840191505092915050565b60008115159050919050565b61174c81611737565b82525050565b600060e082019050611767600083018a611621565b6117746020830189611500565b6117816040830188611698565b61178e6060830187611500565b81810360808301526117a081866116fe565b905081810360a08301526117b481856116fe565b90506117c360c0830184611743565b98975050505050505050565b6117d881611737565b81146117e357600080fd5b50565b6000813590506117f5816117cf565b92915050565b600080604083850312156118125761181161135d565b5b600061182085828601611498565b9250506020611831858286016117e6565b9150509250929050565b60008190508260206003028201111561185757611856611371565b5b92915050565b60008060008060a085870312156118775761187661135d565b5b600061188587828801611498565b945050602085013567ffffffffffffffff8111156118a6576118a5611362565b5b6118b287828801611376565b935093505060406118c58782880161183b565b91505092959194509250565b600080604083850312156118e8576118e761135d565b5b60006118f685828601611498565b925050602061190785828601611498565b9150509250929050565b60006040820190506119266000830185611500565b6119336020830184611500565b9392505050565b60008083601f8401126119505761194f611367565b5b8235905067ffffffffffffffff81111561196d5761196c61136c565b5b60208301915083602082028301111561198957611988611371565b5b9250929050565b6000806000806000606086880312156119ac576119ab61135d565b5b60006119ba88828901611498565b955050602086013567ffffffffffffffff8111156119db576119da611362565b5b6119e788828901611376565b9450945050604086013567ffffffffffffffff811115611a0a57611a09611362565b5b611a168882890161193a565b92509250509295509295909350565b6000608082019050611a3a6000830187611621565b611a476020830186611500565b611a546040830185611500565b611a616060830184611743565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611aa06010836116b2565b9150611aab82611a6a565b602082019050919050565b60006020820190508181036000830152611acf81611a93565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611b1082611477565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611b4257611b41611ad6565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611bce57607f821691505b602082108103611be157611be0611b87565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302611c497fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611c0c565b611c538683611c0c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000611c90611c8b611c8684611477565b611c6b565b611477565b9050919050565b6000819050919050565b611caa83611c75565b611cbe611cb682611c97565b848454611c19565b825550505050565b600090565b611cd3611cc6565b611cde818484611ca1565b505050565b5b81811015611d0257611cf7600082611ccb565b600181019050611ce4565b5050565b601f821115611d4757611d1881611be7565b611d2184611bfc565b81016020851015611d30578190505b611d44611d3c85611bfc565b830182611ce3565b50505b505050565b600082821c905092915050565b6000611d6a60001984600802611d4c565b1980831691505092915050565b6000611d838383611d59565b9150826002028217905092915050565b611d9d8383611b4d565b67ffffffffffffffff811115611db657611db5611b58565b5b611dc08254611bb6565b611dcb828285611d06565b6000601f831160018114611dfa5760008415611de8578287013590505b611df28582611d77565b865550611e5a565b601f198416611e0886611be7565b60005b82811015611e3057848901358255600182019150602085019450602081019050611e0b565b86831015611e4d5784890135611e49601f891682611d59565b8355505b6001600288020188555050505b50505050505050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b6000611e996011836116b2565b9150611ea482611e63565b602082019050919050565b60006020820190508181036000830152611ec881611e8c565b9050919050565b6000611eda82611477565b9150611ee583611477565b9250828201905080821115611efd57611efc611ad6565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b6000611f396020836116b2565b9150611f4482611f03565b602082019050919050565b60006020820190508181036000830152611f6881611f2c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611fd381611477565b82525050565b611fe281611439565b82525050565b604082016000820151611ffe6000850182611fca565b5060208201516120116020850182611fd9565b50505050565b60006120238383611fe8565b60408301905092915050565b6000602082019050919050565b600061204782611f9e565b6120518185611fa9565b935061205c83611fba565b8060005b8381101561208d5781516120748882612017565b975061207f8361202f565b925050600181019050612060565b5085935050505092915050565b600081546120a781611bb6565b6120b181866116b2565b945060018216600081146120cc57600181146120e257612115565b60ff198316865281151560200286019350612115565b6120eb85611be7565b60005b8381101561210d578154818901526001820191506020810190506120ee565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b60006121796121748361214f565b61215c565b9050919050565b6000819050919050565b61219381612180565b82525050565b600082825260208201905092915050565b600081546121b781611bb6565b6121c18186612199565b945060018216600081146121dc57600181146121f257612225565b60ff198316865281151560200286019350612225565b6121fb85611be7565b60005b8381101561221d578154818901526001820191506020810190506121fe565b808801955050505b50505092915050565b600060408301600080840154905061224581612166565b612252600087018261218a565b5060018401858303602087015261226983826121aa565b925050819250505092915050565b6000612283838361222e565b905092915050565b6000600282019050919050565b60006122a38261211e565b6122ad8185612129565b9350836020820285016122bf8561213a565b8060005b858110156122fa578484038952816122db8582612277565b94506122e68361228b565b925060208a019950506001810190506122c3565b50829750879550505050505092915050565b60006060820190508181036000830152612326818661203c565b9050818103602083015261233a818561209a565b9050818103604083015261234e8184612298565b9050949350505050565b600060408201905061236d6000830185611500565b61237a6020830184611743565b9392505050565b600060029050919050565b600081905092915050565b6000819050919050565b60006123ad8383611fca565b60208301905092915050565b6000602082019050919050565b6123cf81612381565b6123d9818461238c565b92506123e482612397565b8060005b838110156124155781516123fc87826123a1565b9650612407836123b9565b9250506001810190506123e8565b505050505050565b6000819050919050565b600061244261243d6124388461241d565b611c6b565b611477565b9050919050565b61245281612427565b82525050565b600082825260208201905092915050565b50565b6000612479600083612458565b915061248482612469565b600082019050919050565b60006101408201905081810360008301526124aa818a61209a565b90506124b96020830189611500565b6124c660408301886123c6565b6124d360808301876123c6565b6124e060c0830186612449565b6124ed60e0830185611743565b6124fb610100830184611743565b81810361012083015261250d8161246c565b905098975050505050505050565b60008151905061252a81611481565b92915050565b6000602082840312156125465761254561135d565b5b60006125548482850161251b565b91505092915050565b60006080820190506125726000830187611500565b61257f6020830186611621565b61258c6040830185611500565b6125996060830184611743565b95945050505050565b82818337600083830152505050565b60006125bd83856116b2565b93506125ca8385846125a2565b6125d3836116ed565b840190509392505050565b82818337505050565b6125f3606083836125de565b5050565b600081519050919050565b600061260d826125f7565b6126178185612458565b93506126278185602086016116c3565b612630816116ed565b840191505092915050565b600060e082019050818103600083015261265681888a6125b1565b90506126656020830187611621565b61267260408301866125e7565b61267f60a0830185611743565b81810360c08301526126918184612602565b9050979650505050505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b60006126fa6033836116b2565b91506127058261269e565b604082019050919050565b60006020820190508181036000830152612729816126ed565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b600061278c6024836116b2565b915061279782612730565b604082019050919050565b600060208201905081810360008301526127bb8161277f565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b60006127f86018836116b2565b9150612803826127c2565b602082019050919050565b60006020820190508181036000830152612827816127eb565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b600061288a603a836116b2565b91506128958261282e565b604082019050919050565b600060208201905081810360008301526128b98161287d565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126128eb576128ea6128c0565b5b80830191505092915050565b61290081612180565b811461290b57600080fd5b50565b6000813561291b816128f7565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61295d84612924565b9350801983169250808416831791505092915050565b600061298e61298961298484612180565b611c6b565b612180565b9050919050565b6000819050919050565b6129a882612973565b6129bb6129b482612995565b8354612931565b8255505050565b600080833560016020038436030381126129df576129de6128c0565b5b80840192508235915067ffffffffffffffff821115612a0157612a006128c5565b5b602083019250600182023603831315612a1d57612a1c6128ca565b5b509250929050565b612a30838383611d93565b505050565b600081016000830180612a478161290e565b9050612a53818461299f565b5050506001810160208301612a6881856129c2565b612a73818386612a25565b505050505050565b612a858282612a35565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000612abf601a836116b2565b9150612aca82612a89565b602082019050919050565b60006020820190508181036000830152612aee81612ab2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612b2f82611477565b9150612b3a83611477565b925082612b4a57612b49612af5565b5b82820690509291505056fea264697066735822122008f9002425189e4161a3cf0f7fd8bd3d43a2d4371de965d2c9fd34b7b70ed9e964736f6c63430008180033", - "deployedBytecode": "0x6080604052600436106100dd5760003560e01c8063a035b1fe1161007f578063cf37625611610059578063cf37625614610296578063d0fae95f146102d4578063d5a44f86146102fd578063d76b67941461033d576100dd565b8063a035b1fe14610217578063b5b20c0014610242578063c4a9e1161461026b576100dd565b8063815a0572116100bb578063815a05721461015257806381d12c581461018f578063854b6a4f146101d257806399ad6c56146101fb576100dd565b80630d0271d6146100e2578063216ed6ad146100fe5780635badbe4c14610127575b600080fd5b6100fc60048036038101906100f791906113cc565b610368565b005b34801561010a57600080fd5b50610125600480360381019061012091906114ad565b610456565b005b34801561013357600080fd5b5061013c610569565b604051610149919061150f565b60405180910390f35b34801561015e57600080fd5b5061017960048036038101906101749190611580565b61056f565b604051610186919061150f565b60405180910390f35b34801561019b57600080fd5b506101b660048036038101906101b191906115f4565b6105ee565b6040516101c99796959493929190611752565b60405180910390f35b3480156101de57600080fd5b506101f960048036038101906101f491906117fb565b61077a565b005b6102156004803603810190610210919061185d565b610ba9565b005b34801561022357600080fd5b5061022c610cf2565b604051610239919061150f565b60405180910390f35b34801561024e57600080fd5b50610269600480360381019061026491906118d1565b610cf8565b005b34801561027757600080fd5b50610280610e6d565b60405161028d919061150f565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b891906115f4565b610e73565b6040516102cb929190611911565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f69190611990565b610e97565b005b34801561030957600080fd5b50610324600480360381019061031f91906115f4565b6110d0565b6040516103349493929190611a25565b60405180910390f35b34801561034957600080fd5b5061035261112d565b60405161035f919061150f565b60405180910390f35b6001543410156103ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a490611ab6565b60405180910390fd5b6000600760008154809291906103c290611b05565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034816001018190555061043482611133565b8160030181905550838382600401918261044f929190611d93565b5050505050565b60008211610499576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049090611eaf565b60405180910390fd5b6000600560008154809291906104ae90611b05565b9190505590506000600460008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426105239190611ecf565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e98260405161055a919061150f565b60405180910390a15050505050565b60075481565b600080838381019061058191906115f4565b9050600060026000838152602001908152602001600020905080600001546001819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f20826001546040516105d8929190611911565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461065690611bb6565b80601f016020809104026020016040519081016040528092919081815260200182805461068290611bb6565b80156106cf5780601f106106a4576101008083540402835291602001916106cf565b820191906000526020600020905b8154815290600101906020018083116106b257829003601f168201915b5050505050908060050180546106e490611bb6565b80601f016020809104026020016040519081016040528092919081815260200182805461071090611bb6565b801561075d5780601f106107325761010080835404028352916020019161075d565b820191906000526020600020905b81548152906001019060200180831161074057829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b6000600660008481526020019081526020016000209050600160038111156107a5576107a4611630565b5b8160020160009054906101000a900460ff1660038111156107c9576107c8611630565b5b14610809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080090611f4f565b60405180910390fd5b60006004600083600301548152602001908152602001600020905060028260020160006101000a81548160ff0219169083600381111561084c5761084b611630565b5b0217905550828260070160006101000a81548160ff0219169083151502179055506000600167ffffffffffffffff81111561088a57610889611b58565b5b6040519080825280602002602001820160405280156108c357816020015b6108b061132d565b8152602001906001900390816108a85790505b5090506040518060400160405280606481526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508160008151811061092a57610929611f6f565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b81526004016109989392919061230c565b600060405180830381600087803b1580156109b257600080fd5b505af11580156109c6573d6000803e3d6000fd5b505050507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc85856040516109fb929190612358565b60405180910390a160007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c738560010154866005016014604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518963ffffffff1660e01b8152600401610aa2979695949392919061248f565b60206040518083038185885af1158015610ac0573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ae59190612530565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015460016040518563ffffffff1660e01b8152600401610b6f949392919061255d565b600060405180830381600087803b158015610b8957600080fd5b505af1158015610b9d573d6000803e3d6000fd5b50505050505050505050565b600060036000815480929190610bbe90611b05565b919050559050600060026000838152602001908152602001600020905085816000018190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632805b5d93487873388600189604051602001610c38919061150f565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401610c689695949392919061263b565b60206040518083038185885af1158015610c86573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610cab9190612530565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610ce2919061150f565b60405180910390a1505050505050565b60015481565b60006004600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610da1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9890612710565b60405180910390fd5b8060030160009054906101000a900460ff1615610df3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dea906127a2565b60405180910390fd5b8060020154421115610e18578142610e0b9190611ecf565b8160020181905550610e31565b818160020154610e289190611ecf565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e983604051610e60919061150f565b60405180910390a1505050565b60055481565b60026020528060005260406000206000915090508060000154908060010154905082565b600060066000878152602001908152602001600020905060006003811115610ec257610ec1611630565b5b8160020160009054906101000a900460ff166003811115610ee657610ee5611630565b5b14610f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1d9061280e565b60405180910390fd5b6000600460008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fca906128a0565b60405180910390fd5b60018260020160006101000a81548160ff02191690836003811115610ffb57610ffa611630565b5b02179055508585836005019182611013929190611d93565b5060005b8484905081101561108f578260060185858381811061103957611038611f6f565b5b905060200281019061104b91906128cf565b908060018154018082558091505060019003906000526020600020906002020160009091909190915081816110809190612a7b565b50508080600101915050611017565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc876040516110bf919061150f565b60405180910390a150505050505050565b60046020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60035481565b600061113d6111b2565b9050600060046000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b483836040516111a4929190611911565b60405180910390a150919050565b60008060005b600554811015611239576004600082815260200190815260200160002060030160009054906101000a900460ff1661122c576004600082815260200190815260200160002060020154421161122c576004600082815260200190815260200160002060010154826112299190611ecf565b91505b80806001019150506111b8565b506000811161127d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127490612ad5565b60405180910390fd5b6000814461128b9190612b24565b9050600080600090505b600554811015611326576004600082815260200190815260200160002060030160009054906101000a900460ff166113195760046000828152602001908152602001600020600201544211611319576004600082815260200190815260200160002060010154826113069190611ecf565b91508282111561131857809450611326565b5b8080600101915050611295565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f84011261138c5761138b611367565b5b8235905067ffffffffffffffff8111156113a9576113a861136c565b5b6020830191508360018202830111156113c5576113c4611371565b5b9250929050565b600080602083850312156113e3576113e261135d565b5b600083013567ffffffffffffffff81111561140157611400611362565b5b61140d85828601611376565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061144482611419565b9050919050565b61145481611439565b811461145f57600080fd5b50565b6000813590506114718161144b565b92915050565b6000819050919050565b61148a81611477565b811461149557600080fd5b50565b6000813590506114a781611481565b92915050565b6000806000606084860312156114c6576114c561135d565b5b60006114d486828701611462565b93505060206114e586828701611498565b92505060406114f686828701611498565b9150509250925092565b61150981611477565b82525050565b60006020820190506115246000830184611500565b92915050565b60008083601f8401126115405761153f611367565b5b8235905067ffffffffffffffff81111561155d5761155c61136c565b5b60208301915083600182028301111561157957611578611371565b5b9250929050565b6000806000806060858703121561159a5761159961135d565b5b60006115a887828801611498565b94505060206115b987828801611498565b935050604085013567ffffffffffffffff8111156115da576115d9611362565b5b6115e68782880161152a565b925092505092959194509250565b60006020828403121561160a5761160961135d565b5b600061161884828501611498565b91505092915050565b61162a81611439565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600481106116705761166f611630565b5b50565b60008190506116818261165f565b919050565b600061169182611673565b9050919050565b6116a181611686565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b838110156116e15780820151818401526020810190506116c6565b60008484015250505050565b6000601f19601f8301169050919050565b6000611709826116a7565b61171381856116b2565b93506117238185602086016116c3565b61172c816116ed565b840191505092915050565b60008115159050919050565b61174c81611737565b82525050565b600060e082019050611767600083018a611621565b6117746020830189611500565b6117816040830188611698565b61178e6060830187611500565b81810360808301526117a081866116fe565b905081810360a08301526117b481856116fe565b90506117c360c0830184611743565b98975050505050505050565b6117d881611737565b81146117e357600080fd5b50565b6000813590506117f5816117cf565b92915050565b600080604083850312156118125761181161135d565b5b600061182085828601611498565b9250506020611831858286016117e6565b9150509250929050565b60008190508260206003028201111561185757611856611371565b5b92915050565b60008060008060a085870312156118775761187661135d565b5b600061188587828801611498565b945050602085013567ffffffffffffffff8111156118a6576118a5611362565b5b6118b287828801611376565b935093505060406118c58782880161183b565b91505092959194509250565b600080604083850312156118e8576118e761135d565b5b60006118f685828601611498565b925050602061190785828601611498565b9150509250929050565b60006040820190506119266000830185611500565b6119336020830184611500565b9392505050565b60008083601f8401126119505761194f611367565b5b8235905067ffffffffffffffff81111561196d5761196c61136c565b5b60208301915083602082028301111561198957611988611371565b5b9250929050565b6000806000806000606086880312156119ac576119ab61135d565b5b60006119ba88828901611498565b955050602086013567ffffffffffffffff8111156119db576119da611362565b5b6119e788828901611376565b9450945050604086013567ffffffffffffffff811115611a0a57611a09611362565b5b611a168882890161193a565b92509250509295509295909350565b6000608082019050611a3a6000830187611621565b611a476020830186611500565b611a546040830185611500565b611a616060830184611743565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611aa06010836116b2565b9150611aab82611a6a565b602082019050919050565b60006020820190508181036000830152611acf81611a93565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611b1082611477565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611b4257611b41611ad6565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611bce57607f821691505b602082108103611be157611be0611b87565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302611c497fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611c0c565b611c538683611c0c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000611c90611c8b611c8684611477565b611c6b565b611477565b9050919050565b6000819050919050565b611caa83611c75565b611cbe611cb682611c97565b848454611c19565b825550505050565b600090565b611cd3611cc6565b611cde818484611ca1565b505050565b5b81811015611d0257611cf7600082611ccb565b600181019050611ce4565b5050565b601f821115611d4757611d1881611be7565b611d2184611bfc565b81016020851015611d30578190505b611d44611d3c85611bfc565b830182611ce3565b50505b505050565b600082821c905092915050565b6000611d6a60001984600802611d4c565b1980831691505092915050565b6000611d838383611d59565b9150826002028217905092915050565b611d9d8383611b4d565b67ffffffffffffffff811115611db657611db5611b58565b5b611dc08254611bb6565b611dcb828285611d06565b6000601f831160018114611dfa5760008415611de8578287013590505b611df28582611d77565b865550611e5a565b601f198416611e0886611be7565b60005b82811015611e3057848901358255600182019150602085019450602081019050611e0b565b86831015611e4d5784890135611e49601f891682611d59565b8355505b6001600288020188555050505b50505050505050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b6000611e996011836116b2565b9150611ea482611e63565b602082019050919050565b60006020820190508181036000830152611ec881611e8c565b9050919050565b6000611eda82611477565b9150611ee583611477565b9250828201905080821115611efd57611efc611ad6565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b6000611f396020836116b2565b9150611f4482611f03565b602082019050919050565b60006020820190508181036000830152611f6881611f2c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611fd381611477565b82525050565b611fe281611439565b82525050565b604082016000820151611ffe6000850182611fca565b5060208201516120116020850182611fd9565b50505050565b60006120238383611fe8565b60408301905092915050565b6000602082019050919050565b600061204782611f9e565b6120518185611fa9565b935061205c83611fba565b8060005b8381101561208d5781516120748882612017565b975061207f8361202f565b925050600181019050612060565b5085935050505092915050565b600081546120a781611bb6565b6120b181866116b2565b945060018216600081146120cc57600181146120e257612115565b60ff198316865281151560200286019350612115565b6120eb85611be7565b60005b8381101561210d578154818901526001820191506020810190506120ee565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b60006121796121748361214f565b61215c565b9050919050565b6000819050919050565b61219381612180565b82525050565b600082825260208201905092915050565b600081546121b781611bb6565b6121c18186612199565b945060018216600081146121dc57600181146121f257612225565b60ff198316865281151560200286019350612225565b6121fb85611be7565b60005b8381101561221d578154818901526001820191506020810190506121fe565b808801955050505b50505092915050565b600060408301600080840154905061224581612166565b612252600087018261218a565b5060018401858303602087015261226983826121aa565b925050819250505092915050565b6000612283838361222e565b905092915050565b6000600282019050919050565b60006122a38261211e565b6122ad8185612129565b9350836020820285016122bf8561213a565b8060005b858110156122fa578484038952816122db8582612277565b94506122e68361228b565b925060208a019950506001810190506122c3565b50829750879550505050505092915050565b60006060820190508181036000830152612326818661203c565b9050818103602083015261233a818561209a565b9050818103604083015261234e8184612298565b9050949350505050565b600060408201905061236d6000830185611500565b61237a6020830184611743565b9392505050565b600060029050919050565b600081905092915050565b6000819050919050565b60006123ad8383611fca565b60208301905092915050565b6000602082019050919050565b6123cf81612381565b6123d9818461238c565b92506123e482612397565b8060005b838110156124155781516123fc87826123a1565b9650612407836123b9565b9250506001810190506123e8565b505050505050565b6000819050919050565b600061244261243d6124388461241d565b611c6b565b611477565b9050919050565b61245281612427565b82525050565b600082825260208201905092915050565b50565b6000612479600083612458565b915061248482612469565b600082019050919050565b60006101408201905081810360008301526124aa818a61209a565b90506124b96020830189611500565b6124c660408301886123c6565b6124d360808301876123c6565b6124e060c0830186612449565b6124ed60e0830185611743565b6124fb610100830184611743565b81810361012083015261250d8161246c565b905098975050505050505050565b60008151905061252a81611481565b92915050565b6000602082840312156125465761254561135d565b5b60006125548482850161251b565b91505092915050565b60006080820190506125726000830187611500565b61257f6020830186611621565b61258c6040830185611500565b6125996060830184611743565b95945050505050565b82818337600083830152505050565b60006125bd83856116b2565b93506125ca8385846125a2565b6125d3836116ed565b840190509392505050565b82818337505050565b6125f3606083836125de565b5050565b600081519050919050565b600061260d826125f7565b6126178185612458565b93506126278185602086016116c3565b612630816116ed565b840191505092915050565b600060e082019050818103600083015261265681888a6125b1565b90506126656020830187611621565b61267260408301866125e7565b61267f60a0830185611743565b81810360c08301526126918184612602565b9050979650505050505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b60006126fa6033836116b2565b91506127058261269e565b604082019050919050565b60006020820190508181036000830152612729816126ed565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b600061278c6024836116b2565b915061279782612730565b604082019050919050565b600060208201905081810360008301526127bb8161277f565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b60006127f86018836116b2565b9150612803826127c2565b602082019050919050565b60006020820190508181036000830152612827816127eb565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b600061288a603a836116b2565b91506128958261282e565b604082019050919050565b600060208201905081810360008301526128b98161287d565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126128eb576128ea6128c0565b5b80830191505092915050565b61290081612180565b811461290b57600080fd5b50565b6000813561291b816128f7565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61295d84612924565b9350801983169250808416831791505092915050565b600061298e61298961298484612180565b611c6b565b612180565b9050919050565b6000819050919050565b6129a882612973565b6129bb6129b482612995565b8354612931565b8255505050565b600080833560016020038436030381126129df576129de6128c0565b5b80840192508235915067ffffffffffffffff821115612a0157612a006128c5565b5b602083019250600182023603831315612a1d57612a1c6128ca565b5b509250929050565b612a30838383611d93565b505050565b600081016000830180612a478161290e565b9050612a53818461299f565b5050506001810160208301612a6881856129c2565b612a73818386612a25565b505050505050565b612a858282612a35565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000612abf601a836116b2565b9150612aca82612a89565b602082019050919050565b60006020820190508181036000830152612aee81612ab2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612b2f82611477565b9150612b3a83611477565b925082612b4a57612b49612af5565b5b82820690509291505056fea264697066735822122008f9002425189e4161a3cf0f7fd8bd3d43a2d4371de965d2c9fd34b7b70ed9e964736f6c63430008180033", + "bytecode": "0x60a06040523480156200001157600080fd5b5060405162002dd438038062002dd48339818101604052810190620000379190620001c1565b828282828073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505080600181905550816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050506200021d565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620000f582620000c8565b9050919050565b60006200010982620000e8565b9050919050565b6200011b81620000fc565b81146200012757600080fd5b50565b6000815190506200013b8162000110565b92915050565b60006200014e82620000e8565b9050919050565b620001608162000141565b81146200016c57600080fd5b50565b600081519050620001808162000155565b92915050565b6000819050919050565b6200019b8162000186565b8114620001a757600080fd5b50565b600081519050620001bb8162000190565b92915050565b600080600060608486031215620001dd57620001dc620000c3565b5b6000620001ed868287016200012a565b935050602062000200868287016200016f565b92505060406200021386828701620001aa565b9150509250925092565b608051612b8d620002476000396000818161093901528181610a090152610aeb0152612b8d6000f3fe6080604052600436106100dd5760003560e01c8063a035b1fe1161007f578063cf37625611610059578063cf37625614610296578063d0fae95f146102d4578063d5a44f86146102fd578063d76b67941461033d576100dd565b8063a035b1fe14610217578063b5b20c0014610242578063c4a9e1161461026b576100dd565b8063815a0572116100bb578063815a05721461015257806381d12c581461018f578063854b6a4f146101d257806399ad6c56146101fb576100dd565b80630d0271d6146100e2578063216ed6ad146100fe5780635badbe4c14610127575b600080fd5b6100fc60048036038101906100f791906113ce565b610368565b005b34801561010a57600080fd5b50610125600480360381019061012091906114af565b610456565b005b34801561013357600080fd5b5061013c610569565b6040516101499190611511565b60405180910390f35b34801561015e57600080fd5b5061017960048036038101906101749190611582565b61056f565b6040516101869190611511565b60405180910390f35b34801561019b57600080fd5b506101b660048036038101906101b191906115f6565b6105ee565b6040516101c99796959493929190611754565b60405180910390f35b3480156101de57600080fd5b506101f960048036038101906101f491906117fd565b61077a565b005b6102156004803603810190610210919061185f565b610bab565b005b34801561022357600080fd5b5061022c610cf4565b6040516102399190611511565b60405180910390f35b34801561024e57600080fd5b50610269600480360381019061026491906118d3565b610cfa565b005b34801561027757600080fd5b50610280610e6f565b60405161028d9190611511565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b891906115f6565b610e75565b6040516102cb929190611913565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f69190611992565b610e99565b005b34801561030957600080fd5b50610324600480360381019061031f91906115f6565b6110d2565b6040516103349493929190611a27565b60405180910390f35b34801561034957600080fd5b5061035261112f565b60405161035f9190611511565b60405180910390f35b6001543410156103ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a490611ab8565b60405180910390fd5b6000600760008154809291906103c290611b07565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034816001018190555061043482611135565b8160030181905550838382600401918261044f929190611d95565b5050505050565b60008211610499576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049090611eb1565b60405180910390fd5b6000600560008154809291906104ae90611b07565b9190505590506000600460008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426105239190611ed1565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e98260405161055a9190611511565b60405180910390a15050505050565b60075481565b600080838381019061058191906115f6565b9050600060026000838152602001908152602001600020905080600001546001819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f20826001546040516105d8929190611913565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461065690611bb8565b80601f016020809104026020016040519081016040528092919081815260200182805461068290611bb8565b80156106cf5780601f106106a4576101008083540402835291602001916106cf565b820191906000526020600020905b8154815290600101906020018083116106b257829003601f168201915b5050505050908060050180546106e490611bb8565b80601f016020809104026020016040519081016040528092919081815260200182805461071090611bb8565b801561075d5780601f106107325761010080835404028352916020019161075d565b820191906000526020600020905b81548152906001019060200180831161074057829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b6000600660008481526020019081526020016000209050600160038111156107a5576107a4611632565b5b8160020160009054906101000a900460ff1660038111156107c9576107c8611632565b5b14610809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080090611f51565b60405180910390fd5b60006004600083600301548152602001908152602001600020905060028260020160006101000a81548160ff0219169083600381111561084c5761084b611632565b5b0217905550828260070160006101000a81548160ff0219169083151502179055506000600167ffffffffffffffff81111561088a57610889611b5a565b5b6040519080825280602002602001820160405280156108c357816020015b6108b061132f565b8152602001906001900390816108a85790505b5090506040518060400160405280620f424081526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508160008151811061092c5761092b611f71565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b815260040161099a9392919061230e565b600060405180830381600087803b1580156109b457600080fd5b505af11580156109c8573d6000803e3d6000fd5b505050507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc85856040516109fd92919061235a565b60405180910390a160007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c738560010154866005016014604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518963ffffffff1660e01b8152600401610aa49796959493929190612491565b60206040518083038185885af1158015610ac2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ae79190612532565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015460016040518563ffffffff1660e01b8152600401610b71949392919061255f565b600060405180830381600087803b158015610b8b57600080fd5b505af1158015610b9f573d6000803e3d6000fd5b50505050505050505050565b600060036000815480929190610bc090611b07565b919050559050600060026000838152602001908152602001600020905085816000018190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632805b5d93487873388600189604051602001610c3a9190611511565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401610c6a9695949392919061263d565b60206040518083038185885af1158015610c88573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610cad9190612532565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610ce49190611511565b60405180910390a1505050505050565b60015481565b60006004600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9a90612712565b60405180910390fd5b8060030160009054906101000a900460ff1615610df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dec906127a4565b60405180910390fd5b8060020154421115610e1a578142610e0d9190611ed1565b8160020181905550610e33565b818160020154610e2a9190611ed1565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e983604051610e629190611511565b60405180910390a1505050565b60055481565b60026020528060005260406000206000915090508060000154908060010154905082565b600060066000878152602001908152602001600020905060006003811115610ec457610ec3611632565b5b8160020160009054906101000a900460ff166003811115610ee857610ee7611632565b5b14610f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1f90612810565b60405180910390fd5b6000600460008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcc906128a2565b60405180910390fd5b60018260020160006101000a81548160ff02191690836003811115610ffd57610ffc611632565b5b02179055508585836005019182611015929190611d95565b5060005b84849050811015611091578260060185858381811061103b5761103a611f71565b5b905060200281019061104d91906128d1565b908060018154018082558091505060019003906000526020600020906002020160009091909190915081816110829190612a7d565b50508080600101915050611019565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc876040516110c19190611511565b60405180910390a150505050505050565b60046020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60035481565b600061113f6111b4565b9050600060046000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b483836040516111a6929190611913565b60405180910390a150919050565b60008060005b60055481101561123b576004600082815260200190815260200160002060030160009054906101000a900460ff1661122e576004600082815260200190815260200160002060020154421161122e5760046000828152602001908152602001600020600101548261122b9190611ed1565b91505b80806001019150506111ba565b506000811161127f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127690612ad7565b60405180910390fd5b6000814461128d9190612b26565b9050600080600090505b600554811015611328576004600082815260200190815260200160002060030160009054906101000a900460ff1661131b576004600082815260200190815260200160002060020154421161131b576004600082815260200190815260200160002060010154826113089190611ed1565b91508282111561131a57809450611328565b5b8080600101915050611297565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f84011261138e5761138d611369565b5b8235905067ffffffffffffffff8111156113ab576113aa61136e565b5b6020830191508360018202830111156113c7576113c6611373565b5b9250929050565b600080602083850312156113e5576113e461135f565b5b600083013567ffffffffffffffff81111561140357611402611364565b5b61140f85828601611378565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114468261141b565b9050919050565b6114568161143b565b811461146157600080fd5b50565b6000813590506114738161144d565b92915050565b6000819050919050565b61148c81611479565b811461149757600080fd5b50565b6000813590506114a981611483565b92915050565b6000806000606084860312156114c8576114c761135f565b5b60006114d686828701611464565b93505060206114e78682870161149a565b92505060406114f88682870161149a565b9150509250925092565b61150b81611479565b82525050565b60006020820190506115266000830184611502565b92915050565b60008083601f84011261154257611541611369565b5b8235905067ffffffffffffffff81111561155f5761155e61136e565b5b60208301915083600182028301111561157b5761157a611373565b5b9250929050565b6000806000806060858703121561159c5761159b61135f565b5b60006115aa8782880161149a565b94505060206115bb8782880161149a565b935050604085013567ffffffffffffffff8111156115dc576115db611364565b5b6115e88782880161152c565b925092505092959194509250565b60006020828403121561160c5761160b61135f565b5b600061161a8482850161149a565b91505092915050565b61162c8161143b565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6004811061167257611671611632565b5b50565b600081905061168382611661565b919050565b600061169382611675565b9050919050565b6116a381611688565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b838110156116e35780820151818401526020810190506116c8565b60008484015250505050565b6000601f19601f8301169050919050565b600061170b826116a9565b61171581856116b4565b93506117258185602086016116c5565b61172e816116ef565b840191505092915050565b60008115159050919050565b61174e81611739565b82525050565b600060e082019050611769600083018a611623565b6117766020830189611502565b611783604083018861169a565b6117906060830187611502565b81810360808301526117a28186611700565b905081810360a08301526117b68185611700565b90506117c560c0830184611745565b98975050505050505050565b6117da81611739565b81146117e557600080fd5b50565b6000813590506117f7816117d1565b92915050565b600080604083850312156118145761181361135f565b5b60006118228582860161149a565b9250506020611833858286016117e8565b9150509250929050565b60008190508260206003028201111561185957611858611373565b5b92915050565b60008060008060a085870312156118795761187861135f565b5b60006118878782880161149a565b945050602085013567ffffffffffffffff8111156118a8576118a7611364565b5b6118b487828801611378565b935093505060406118c78782880161183d565b91505092959194509250565b600080604083850312156118ea576118e961135f565b5b60006118f88582860161149a565b92505060206119098582860161149a565b9150509250929050565b60006040820190506119286000830185611502565b6119356020830184611502565b9392505050565b60008083601f84011261195257611951611369565b5b8235905067ffffffffffffffff81111561196f5761196e61136e565b5b60208301915083602082028301111561198b5761198a611373565b5b9250929050565b6000806000806000606086880312156119ae576119ad61135f565b5b60006119bc8882890161149a565b955050602086013567ffffffffffffffff8111156119dd576119dc611364565b5b6119e988828901611378565b9450945050604086013567ffffffffffffffff811115611a0c57611a0b611364565b5b611a188882890161193c565b92509250509295509295909350565b6000608082019050611a3c6000830187611623565b611a496020830186611502565b611a566040830185611502565b611a636060830184611745565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611aa26010836116b4565b9150611aad82611a6c565b602082019050919050565b60006020820190508181036000830152611ad181611a95565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611b1282611479565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611b4457611b43611ad8565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611bd057607f821691505b602082108103611be357611be2611b89565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302611c4b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611c0e565b611c558683611c0e565b95508019841693508086168417925050509392505050565b6000819050919050565b6000611c92611c8d611c8884611479565b611c6d565b611479565b9050919050565b6000819050919050565b611cac83611c77565b611cc0611cb882611c99565b848454611c1b565b825550505050565b600090565b611cd5611cc8565b611ce0818484611ca3565b505050565b5b81811015611d0457611cf9600082611ccd565b600181019050611ce6565b5050565b601f821115611d4957611d1a81611be9565b611d2384611bfe565b81016020851015611d32578190505b611d46611d3e85611bfe565b830182611ce5565b50505b505050565b600082821c905092915050565b6000611d6c60001984600802611d4e565b1980831691505092915050565b6000611d858383611d5b565b9150826002028217905092915050565b611d9f8383611b4f565b67ffffffffffffffff811115611db857611db7611b5a565b5b611dc28254611bb8565b611dcd828285611d08565b6000601f831160018114611dfc5760008415611dea578287013590505b611df48582611d79565b865550611e5c565b601f198416611e0a86611be9565b60005b82811015611e3257848901358255600182019150602085019450602081019050611e0d565b86831015611e4f5784890135611e4b601f891682611d5b565b8355505b6001600288020188555050505b50505050505050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b6000611e9b6011836116b4565b9150611ea682611e65565b602082019050919050565b60006020820190508181036000830152611eca81611e8e565b9050919050565b6000611edc82611479565b9150611ee783611479565b9250828201905080821115611eff57611efe611ad8565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b6000611f3b6020836116b4565b9150611f4682611f05565b602082019050919050565b60006020820190508181036000830152611f6a81611f2e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611fd581611479565b82525050565b611fe48161143b565b82525050565b6040820160008201516120006000850182611fcc565b5060208201516120136020850182611fdb565b50505050565b60006120258383611fea565b60408301905092915050565b6000602082019050919050565b600061204982611fa0565b6120538185611fab565b935061205e83611fbc565b8060005b8381101561208f5781516120768882612019565b975061208183612031565b925050600181019050612062565b5085935050505092915050565b600081546120a981611bb8565b6120b381866116b4565b945060018216600081146120ce57600181146120e457612117565b60ff198316865281151560200286019350612117565b6120ed85611be9565b60005b8381101561210f578154818901526001820191506020810190506120f0565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b600061217b61217683612151565b61215e565b9050919050565b6000819050919050565b61219581612182565b82525050565b600082825260208201905092915050565b600081546121b981611bb8565b6121c3818661219b565b945060018216600081146121de57600181146121f457612227565b60ff198316865281151560200286019350612227565b6121fd85611be9565b60005b8381101561221f57815481890152600182019150602081019050612200565b808801955050505b50505092915050565b600060408301600080840154905061224781612168565b612254600087018261218c565b5060018401858303602087015261226b83826121ac565b925050819250505092915050565b60006122858383612230565b905092915050565b6000600282019050919050565b60006122a582612120565b6122af818561212b565b9350836020820285016122c18561213c565b8060005b858110156122fc578484038952816122dd8582612279565b94506122e88361228d565b925060208a019950506001810190506122c5565b50829750879550505050505092915050565b60006060820190508181036000830152612328818661203e565b9050818103602083015261233c818561209c565b90508181036040830152612350818461229a565b9050949350505050565b600060408201905061236f6000830185611502565b61237c6020830184611745565b9392505050565b600060029050919050565b600081905092915050565b6000819050919050565b60006123af8383611fcc565b60208301905092915050565b6000602082019050919050565b6123d181612383565b6123db818461238e565b92506123e682612399565b8060005b838110156124175781516123fe87826123a3565b9650612409836123bb565b9250506001810190506123ea565b505050505050565b6000819050919050565b600061244461243f61243a8461241f565b611c6d565b611479565b9050919050565b61245481612429565b82525050565b600082825260208201905092915050565b50565b600061247b60008361245a565b91506124868261246b565b600082019050919050565b60006101408201905081810360008301526124ac818a61209c565b90506124bb6020830189611502565b6124c860408301886123c8565b6124d560808301876123c8565b6124e260c083018661244b565b6124ef60e0830185611745565b6124fd610100830184611745565b81810361012083015261250f8161246e565b905098975050505050505050565b60008151905061252c81611483565b92915050565b6000602082840312156125485761254761135f565b5b60006125568482850161251d565b91505092915050565b60006080820190506125746000830187611502565b6125816020830186611623565b61258e6040830185611502565b61259b6060830184611745565b95945050505050565b82818337600083830152505050565b60006125bf83856116b4565b93506125cc8385846125a4565b6125d5836116ef565b840190509392505050565b82818337505050565b6125f5606083836125e0565b5050565b600081519050919050565b600061260f826125f9565b612619818561245a565b93506126298185602086016116c5565b612632816116ef565b840191505092915050565b600060e082019050818103600083015261265881888a6125b3565b90506126676020830187611623565b61267460408301866125e9565b61268160a0830185611745565b81810360c08301526126938184612604565b9050979650505050505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b60006126fc6033836116b4565b9150612707826126a0565b604082019050919050565b6000602082019050818103600083015261272b816126ef565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b600061278e6024836116b4565b915061279982612732565b604082019050919050565b600060208201905081810360008301526127bd81612781565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b60006127fa6018836116b4565b9150612805826127c4565b602082019050919050565b60006020820190508181036000830152612829816127ed565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b600061288c603a836116b4565b915061289782612830565b604082019050919050565b600060208201905081810360008301526128bb8161287f565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126128ed576128ec6128c2565b5b80830191505092915050565b61290281612182565b811461290d57600080fd5b50565b6000813561291d816128f9565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61295f84612926565b9350801983169250808416831791505092915050565b600061299061298b61298684612182565b611c6d565b612182565b9050919050565b6000819050919050565b6129aa82612975565b6129bd6129b682612997565b8354612933565b8255505050565b600080833560016020038436030381126129e1576129e06128c2565b5b80840192508235915067ffffffffffffffff821115612a0357612a026128c7565b5b602083019250600182023603831315612a1f57612a1e6128cc565b5b509250929050565b612a32838383611d95565b505050565b600081016000830180612a4981612910565b9050612a5581846129a1565b5050506001810160208301612a6a81856129c4565b612a75818386612a27565b505050505050565b612a878282612a37565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000612ac1601a836116b4565b9150612acc82612a8b565b602082019050919050565b60006020820190508181036000830152612af081612ab4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612b3182611479565b9150612b3c83611479565b925082612b4c57612b4b612af7565b5b82820690509291505056fea2646970667358221220ad5c1dd42c9ef3e423380a990f5205cc4fff11b24977bb0d4b0b8430bc7efd6c64736f6c63430008180033", + "deployedBytecode": "0x6080604052600436106100dd5760003560e01c8063a035b1fe1161007f578063cf37625611610059578063cf37625614610296578063d0fae95f146102d4578063d5a44f86146102fd578063d76b67941461033d576100dd565b8063a035b1fe14610217578063b5b20c0014610242578063c4a9e1161461026b576100dd565b8063815a0572116100bb578063815a05721461015257806381d12c581461018f578063854b6a4f146101d257806399ad6c56146101fb576100dd565b80630d0271d6146100e2578063216ed6ad146100fe5780635badbe4c14610127575b600080fd5b6100fc60048036038101906100f791906113ce565b610368565b005b34801561010a57600080fd5b50610125600480360381019061012091906114af565b610456565b005b34801561013357600080fd5b5061013c610569565b6040516101499190611511565b60405180910390f35b34801561015e57600080fd5b5061017960048036038101906101749190611582565b61056f565b6040516101869190611511565b60405180910390f35b34801561019b57600080fd5b506101b660048036038101906101b191906115f6565b6105ee565b6040516101c99796959493929190611754565b60405180910390f35b3480156101de57600080fd5b506101f960048036038101906101f491906117fd565b61077a565b005b6102156004803603810190610210919061185f565b610bab565b005b34801561022357600080fd5b5061022c610cf4565b6040516102399190611511565b60405180910390f35b34801561024e57600080fd5b50610269600480360381019061026491906118d3565b610cfa565b005b34801561027757600080fd5b50610280610e6f565b60405161028d9190611511565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b891906115f6565b610e75565b6040516102cb929190611913565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f69190611992565b610e99565b005b34801561030957600080fd5b50610324600480360381019061031f91906115f6565b6110d2565b6040516103349493929190611a27565b60405180910390f35b34801561034957600080fd5b5061035261112f565b60405161035f9190611511565b60405180910390f35b6001543410156103ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a490611ab8565b60405180910390fd5b6000600760008154809291906103c290611b07565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034816001018190555061043482611135565b8160030181905550838382600401918261044f929190611d95565b5050505050565b60008211610499576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049090611eb1565b60405180910390fd5b6000600560008154809291906104ae90611b07565b9190505590506000600460008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426105239190611ed1565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e98260405161055a9190611511565b60405180910390a15050505050565b60075481565b600080838381019061058191906115f6565b9050600060026000838152602001908152602001600020905080600001546001819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f20826001546040516105d8929190611913565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461065690611bb8565b80601f016020809104026020016040519081016040528092919081815260200182805461068290611bb8565b80156106cf5780601f106106a4576101008083540402835291602001916106cf565b820191906000526020600020905b8154815290600101906020018083116106b257829003601f168201915b5050505050908060050180546106e490611bb8565b80601f016020809104026020016040519081016040528092919081815260200182805461071090611bb8565b801561075d5780601f106107325761010080835404028352916020019161075d565b820191906000526020600020905b81548152906001019060200180831161074057829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b6000600660008481526020019081526020016000209050600160038111156107a5576107a4611632565b5b8160020160009054906101000a900460ff1660038111156107c9576107c8611632565b5b14610809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080090611f51565b60405180910390fd5b60006004600083600301548152602001908152602001600020905060028260020160006101000a81548160ff0219169083600381111561084c5761084b611632565b5b0217905550828260070160006101000a81548160ff0219169083151502179055506000600167ffffffffffffffff81111561088a57610889611b5a565b5b6040519080825280602002602001820160405280156108c357816020015b6108b061132f565b8152602001906001900390816108a85790505b5090506040518060400160405280620f424081526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508160008151811061092c5761092b611f71565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b815260040161099a9392919061230e565b600060405180830381600087803b1580156109b457600080fd5b505af11580156109c8573d6000803e3d6000fd5b505050507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc85856040516109fd92919061235a565b60405180910390a160007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c738560010154866005016014604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518963ffffffff1660e01b8152600401610aa49796959493929190612491565b60206040518083038185885af1158015610ac2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ae79190612532565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015460016040518563ffffffff1660e01b8152600401610b71949392919061255f565b600060405180830381600087803b158015610b8b57600080fd5b505af1158015610b9f573d6000803e3d6000fd5b50505050505050505050565b600060036000815480929190610bc090611b07565b919050559050600060026000838152602001908152602001600020905085816000018190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632805b5d93487873388600189604051602001610c3a9190611511565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401610c6a9695949392919061263d565b60206040518083038185885af1158015610c88573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610cad9190612532565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610ce49190611511565b60405180910390a1505050505050565b60015481565b60006004600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9a90612712565b60405180910390fd5b8060030160009054906101000a900460ff1615610df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dec906127a4565b60405180910390fd5b8060020154421115610e1a578142610e0d9190611ed1565b8160020181905550610e33565b818160020154610e2a9190611ed1565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e983604051610e629190611511565b60405180910390a1505050565b60055481565b60026020528060005260406000206000915090508060000154908060010154905082565b600060066000878152602001908152602001600020905060006003811115610ec457610ec3611632565b5b8160020160009054906101000a900460ff166003811115610ee857610ee7611632565b5b14610f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1f90612810565b60405180910390fd5b6000600460008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcc906128a2565b60405180910390fd5b60018260020160006101000a81548160ff02191690836003811115610ffd57610ffc611632565b5b02179055508585836005019182611015929190611d95565b5060005b84849050811015611091578260060185858381811061103b5761103a611f71565b5b905060200281019061104d91906128d1565b908060018154018082558091505060019003906000526020600020906002020160009091909190915081816110829190612a7d565b50508080600101915050611019565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc876040516110c19190611511565b60405180910390a150505050505050565b60046020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60035481565b600061113f6111b4565b9050600060046000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b483836040516111a6929190611913565b60405180910390a150919050565b60008060005b60055481101561123b576004600082815260200190815260200160002060030160009054906101000a900460ff1661122e576004600082815260200190815260200160002060020154421161122e5760046000828152602001908152602001600020600101548261122b9190611ed1565b91505b80806001019150506111ba565b506000811161127f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127690612ad7565b60405180910390fd5b6000814461128d9190612b26565b9050600080600090505b600554811015611328576004600082815260200190815260200160002060030160009054906101000a900460ff1661131b576004600082815260200190815260200160002060020154421161131b576004600082815260200190815260200160002060010154826113089190611ed1565b91508282111561131a57809450611328565b5b8080600101915050611297565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f84011261138e5761138d611369565b5b8235905067ffffffffffffffff8111156113ab576113aa61136e565b5b6020830191508360018202830111156113c7576113c6611373565b5b9250929050565b600080602083850312156113e5576113e461135f565b5b600083013567ffffffffffffffff81111561140357611402611364565b5b61140f85828601611378565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114468261141b565b9050919050565b6114568161143b565b811461146157600080fd5b50565b6000813590506114738161144d565b92915050565b6000819050919050565b61148c81611479565b811461149757600080fd5b50565b6000813590506114a981611483565b92915050565b6000806000606084860312156114c8576114c761135f565b5b60006114d686828701611464565b93505060206114e78682870161149a565b92505060406114f88682870161149a565b9150509250925092565b61150b81611479565b82525050565b60006020820190506115266000830184611502565b92915050565b60008083601f84011261154257611541611369565b5b8235905067ffffffffffffffff81111561155f5761155e61136e565b5b60208301915083600182028301111561157b5761157a611373565b5b9250929050565b6000806000806060858703121561159c5761159b61135f565b5b60006115aa8782880161149a565b94505060206115bb8782880161149a565b935050604085013567ffffffffffffffff8111156115dc576115db611364565b5b6115e88782880161152c565b925092505092959194509250565b60006020828403121561160c5761160b61135f565b5b600061161a8482850161149a565b91505092915050565b61162c8161143b565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6004811061167257611671611632565b5b50565b600081905061168382611661565b919050565b600061169382611675565b9050919050565b6116a381611688565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b838110156116e35780820151818401526020810190506116c8565b60008484015250505050565b6000601f19601f8301169050919050565b600061170b826116a9565b61171581856116b4565b93506117258185602086016116c5565b61172e816116ef565b840191505092915050565b60008115159050919050565b61174e81611739565b82525050565b600060e082019050611769600083018a611623565b6117766020830189611502565b611783604083018861169a565b6117906060830187611502565b81810360808301526117a28186611700565b905081810360a08301526117b68185611700565b90506117c560c0830184611745565b98975050505050505050565b6117da81611739565b81146117e557600080fd5b50565b6000813590506117f7816117d1565b92915050565b600080604083850312156118145761181361135f565b5b60006118228582860161149a565b9250506020611833858286016117e8565b9150509250929050565b60008190508260206003028201111561185957611858611373565b5b92915050565b60008060008060a085870312156118795761187861135f565b5b60006118878782880161149a565b945050602085013567ffffffffffffffff8111156118a8576118a7611364565b5b6118b487828801611378565b935093505060406118c78782880161183d565b91505092959194509250565b600080604083850312156118ea576118e961135f565b5b60006118f88582860161149a565b92505060206119098582860161149a565b9150509250929050565b60006040820190506119286000830185611502565b6119356020830184611502565b9392505050565b60008083601f84011261195257611951611369565b5b8235905067ffffffffffffffff81111561196f5761196e61136e565b5b60208301915083602082028301111561198b5761198a611373565b5b9250929050565b6000806000806000606086880312156119ae576119ad61135f565b5b60006119bc8882890161149a565b955050602086013567ffffffffffffffff8111156119dd576119dc611364565b5b6119e988828901611378565b9450945050604086013567ffffffffffffffff811115611a0c57611a0b611364565b5b611a188882890161193c565b92509250509295509295909350565b6000608082019050611a3c6000830187611623565b611a496020830186611502565b611a566040830185611502565b611a636060830184611745565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611aa26010836116b4565b9150611aad82611a6c565b602082019050919050565b60006020820190508181036000830152611ad181611a95565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611b1282611479565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611b4457611b43611ad8565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611bd057607f821691505b602082108103611be357611be2611b89565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302611c4b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611c0e565b611c558683611c0e565b95508019841693508086168417925050509392505050565b6000819050919050565b6000611c92611c8d611c8884611479565b611c6d565b611479565b9050919050565b6000819050919050565b611cac83611c77565b611cc0611cb882611c99565b848454611c1b565b825550505050565b600090565b611cd5611cc8565b611ce0818484611ca3565b505050565b5b81811015611d0457611cf9600082611ccd565b600181019050611ce6565b5050565b601f821115611d4957611d1a81611be9565b611d2384611bfe565b81016020851015611d32578190505b611d46611d3e85611bfe565b830182611ce5565b50505b505050565b600082821c905092915050565b6000611d6c60001984600802611d4e565b1980831691505092915050565b6000611d858383611d5b565b9150826002028217905092915050565b611d9f8383611b4f565b67ffffffffffffffff811115611db857611db7611b5a565b5b611dc28254611bb8565b611dcd828285611d08565b6000601f831160018114611dfc5760008415611dea578287013590505b611df48582611d79565b865550611e5c565b601f198416611e0a86611be9565b60005b82811015611e3257848901358255600182019150602085019450602081019050611e0d565b86831015611e4f5784890135611e4b601f891682611d5b565b8355505b6001600288020188555050505b50505050505050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b6000611e9b6011836116b4565b9150611ea682611e65565b602082019050919050565b60006020820190508181036000830152611eca81611e8e565b9050919050565b6000611edc82611479565b9150611ee783611479565b9250828201905080821115611eff57611efe611ad8565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b6000611f3b6020836116b4565b9150611f4682611f05565b602082019050919050565b60006020820190508181036000830152611f6a81611f2e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611fd581611479565b82525050565b611fe48161143b565b82525050565b6040820160008201516120006000850182611fcc565b5060208201516120136020850182611fdb565b50505050565b60006120258383611fea565b60408301905092915050565b6000602082019050919050565b600061204982611fa0565b6120538185611fab565b935061205e83611fbc565b8060005b8381101561208f5781516120768882612019565b975061208183612031565b925050600181019050612062565b5085935050505092915050565b600081546120a981611bb8565b6120b381866116b4565b945060018216600081146120ce57600181146120e457612117565b60ff198316865281151560200286019350612117565b6120ed85611be9565b60005b8381101561210f578154818901526001820191506020810190506120f0565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b600061217b61217683612151565b61215e565b9050919050565b6000819050919050565b61219581612182565b82525050565b600082825260208201905092915050565b600081546121b981611bb8565b6121c3818661219b565b945060018216600081146121de57600181146121f457612227565b60ff198316865281151560200286019350612227565b6121fd85611be9565b60005b8381101561221f57815481890152600182019150602081019050612200565b808801955050505b50505092915050565b600060408301600080840154905061224781612168565b612254600087018261218c565b5060018401858303602087015261226b83826121ac565b925050819250505092915050565b60006122858383612230565b905092915050565b6000600282019050919050565b60006122a582612120565b6122af818561212b565b9350836020820285016122c18561213c565b8060005b858110156122fc578484038952816122dd8582612279565b94506122e88361228d565b925060208a019950506001810190506122c5565b50829750879550505050505092915050565b60006060820190508181036000830152612328818661203e565b9050818103602083015261233c818561209c565b90508181036040830152612350818461229a565b9050949350505050565b600060408201905061236f6000830185611502565b61237c6020830184611745565b9392505050565b600060029050919050565b600081905092915050565b6000819050919050565b60006123af8383611fcc565b60208301905092915050565b6000602082019050919050565b6123d181612383565b6123db818461238e565b92506123e682612399565b8060005b838110156124175781516123fe87826123a3565b9650612409836123bb565b9250506001810190506123ea565b505050505050565b6000819050919050565b600061244461243f61243a8461241f565b611c6d565b611479565b9050919050565b61245481612429565b82525050565b600082825260208201905092915050565b50565b600061247b60008361245a565b91506124868261246b565b600082019050919050565b60006101408201905081810360008301526124ac818a61209c565b90506124bb6020830189611502565b6124c860408301886123c8565b6124d560808301876123c8565b6124e260c083018661244b565b6124ef60e0830185611745565b6124fd610100830184611745565b81810361012083015261250f8161246e565b905098975050505050505050565b60008151905061252c81611483565b92915050565b6000602082840312156125485761254761135f565b5b60006125568482850161251d565b91505092915050565b60006080820190506125746000830187611502565b6125816020830186611623565b61258e6040830185611502565b61259b6060830184611745565b95945050505050565b82818337600083830152505050565b60006125bf83856116b4565b93506125cc8385846125a4565b6125d5836116ef565b840190509392505050565b82818337505050565b6125f5606083836125e0565b5050565b600081519050919050565b600061260f826125f9565b612619818561245a565b93506126298185602086016116c5565b612632816116ef565b840191505092915050565b600060e082019050818103600083015261265881888a6125b3565b90506126676020830187611623565b61267460408301866125e9565b61268160a0830185611745565b81810360c08301526126938184612604565b9050979650505050505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b60006126fc6033836116b4565b9150612707826126a0565b604082019050919050565b6000602082019050818103600083015261272b816126ef565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b600061278e6024836116b4565b915061279982612732565b604082019050919050565b600060208201905081810360008301526127bd81612781565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b60006127fa6018836116b4565b9150612805826127c4565b602082019050919050565b60006020820190508181036000830152612829816127ed565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b600061288c603a836116b4565b915061289782612830565b604082019050919050565b600060208201905081810360008301526128bb8161287f565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126128ed576128ec6128c2565b5b80830191505092915050565b61290281612182565b811461290d57600080fd5b50565b6000813561291d816128f9565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61295f84612926565b9350801983169250808416831791505092915050565b600061299061298b61298684612182565b611c6d565b612182565b9050919050565b6000819050919050565b6129aa82612975565b6129bd6129b682612997565b8354612933565b8255505050565b600080833560016020038436030381126129e1576129e06128c2565b5b80840192508235915067ffffffffffffffff821115612a0357612a026128c7565b5b602083019250600182023603831315612a1f57612a1e6128cc565b5b509250929050565b612a32838383611d95565b505050565b600081016000830180612a4981612910565b9050612a5581846129a1565b5050506001810160208301612a6a81856129c4565b612a75818386612a27565b505050505050565b612a878282612a37565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000612ac1601a836116b4565b9150612acc82612a8b565b602082019050919050565b60006020820190508181036000830152612af081612ab4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612b3182611479565b9150612b3c83611479565b925082612b4c57612b4b612af7565b5b82820690509291505056fea2646970667358221220ad5c1dd42c9ef3e423380a990f5205cc4fff11b24977bb0d4b0b8430bc7efd6c64736f6c63430008180033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/backend/src/import-from-ss.js b/backend/src/import-from-ss.js index 20106af..db0f2fc 100644 --- a/backend/src/import-from-ss.js +++ b/backend/src/import-from-ss.js @@ -11,6 +11,9 @@ const { getContractAddressByNetworkName } = require('./contract-config'); const { authorAddresses, authorPrivKeys, forum } = require('./db'); const DAOArtifact = require('../contractArtifacts/DAO.json'); +// Each post allocates 30% of its reputation to citations +const PPM_TO_CITATIONS = 300000; + const network = process.env.ETH_NETWORK; console.log('network:', network); const getProvider = () => { @@ -98,16 +101,15 @@ const generatePost = async (paper) => { if (!authorsInfo.length) { throw new Error('Paper has no authors with id'); } - const PERCENT_TO_CITATIONS = 30; const firstAuthorWallet = new ethers.Wallet(authorsInfo[0].authorPrivKey); - const eachAuthorWeightPercent = Math.floor(PERCENT_TO_CITATIONS / authorsInfo.length); + const eachAuthorWeightPercent = Math.floor(1000000 / authorsInfo.length); const authors = authorsInfo.map(({ authorAddress }) => ({ - weightPercent: eachAuthorWeightPercent, + weightPPM: eachAuthorWeightPercent, authorAddress, })); - // Make sure author weights sum to 100 - const totalAuthorsWeight = authors.reduce((t, { weightPercent }) => t + weightPercent, 0); - authors[0].weightPercent += PERCENT_TO_CITATIONS - totalAuthorsWeight; + // Make sure author weights sum to 100% + const totalAuthorsWeight = authors.reduce((t, { weightPPM }) => t + weightPPM, 0); + authors[0].weightPPM += 1000000 - totalAuthorsWeight; const content = `Semantic Scholar paper ${paper.paperId} ${paper.title} @@ -150,7 +152,7 @@ module.exports = async (req, res) => { console.log('references count:', paper.references.length); - const eachCitationWeightPercent = Math.floor(30 / paper.references.length); + const eachCitationWeightPercent = Math.floor(PPM_TO_CITATIONS / paper.references.length); const citations = await Promise.mapSeries( paper.references.filter((x) => !!x.paperId), async (citedPaper) => { @@ -159,15 +161,15 @@ module.exports = async (req, res) => { // The forum allows dangling citations to support this use case. const citedPost = await generatePost(citedPaper); return { - weightPercent: eachCitationWeightPercent, + weightPPM: eachCitationWeightPercent, targetPostId: citedPost.hash, }; }, ); - // Make sure citation weights sum to 100 - const totalCitationWeight = citations.reduce((t, { weightPercent }) => t + weightPercent, 0); - citations[0].weightPercent += 100 - totalCitationWeight; + // Make sure citation weights sum to the designated total + const totalCitationWeight = citations.reduce((t, { weightPPM }) => t + weightPPM, 0); + citations[0].weightPPM += PPM_TO_CITATIONS - totalCitationWeight; // Create a post for this paper const { diff --git a/ethereum/contract-addresses.json b/ethereum/contract-addresses.json index a829e34..ea0f25e 100644 --- a/ethereum/contract-addresses.json +++ b/ethereum/contract-addresses.json @@ -1,14 +1,14 @@ { "localhost": { - "DAO": "0xE799A82AEB525D35c671eAEb6AE6858E02a1EB24", - "Work1": "0x358A07B26F4c556140872ecdB69c58e8807E7178", - "Onboarding": "0x63472674239ffb70618Fae043610917f2d9B781C", - "Proposals": "0x38AE4ABD47B10f6660CD70Cc8FF3401341E13d9e" + "DAO": "0x4C767e62c92b58B2308E02ba5Cc4A3BD246060ac", + "Work1": "0x39B7522Ee1A5B13aE5580C40114239D4cE0e7D29", + "Onboarding": "0xC0Bb36820Ba891DE4ed6D60f75066805361dbeB8", + "Proposals": "0x268A0A6bB80282542e0Be0864Cfa1c2206c5491F" }, "sepolia": { - "DAO": "0x8e9D6cb0097CE2E283Cdd5762F288d2D394eB713", - "Work1": "0xFC95d5d09e71f0C83F59765107eAa79125b01624", - "Onboarding": "0x32f5A03687406A5c66878349A7de667d0b5C2922", - "Proposals": "0x8273062d41a828ac67ae5837547d2Dd19f8CDc27" + "DAO": "0x8e5bd58B2ca8910C5F9be8de847d6883B15c60d2", + "Work1": "0x1708A144F284C1a9615C25b674E4a08992CE93e4", + "Onboarding": "0xb21D4c986715A1adb5e87F752842613648C20a7B", + "Proposals": "0x930c47293F206780E8F166338bDaFF3520306032" } } \ No newline at end of file diff --git a/ethereum/contracts/Onboarding.sol b/ethereum/contracts/Onboarding.sol index 393c9f8..e961cad 100644 --- a/ethereum/contracts/Onboarding.sol +++ b/ethereum/contracts/Onboarding.sol @@ -28,7 +28,7 @@ contract Onboarding is WorkContract, IOnValidate { request.approval = approval; // Make work evidence post Author[] memory authors = new Author[](1); - authors[0] = Author(100, stake.worker); + authors[0] = Author(1000000, stake.worker); dao.addPost(authors, request.evidenceContentId, request.citations); emit WorkApprovalSubmitted(requestIndex, approval); // Initiate validation pool @@ -75,7 +75,7 @@ contract Onboarding is WorkContract, IOnValidate { // Make onboarding post Citation[] memory emptyCitations; Author[] memory authors = new Author[](1); - authors[0] = Author(100, request.customer); + authors[0] = Author(1000000, request.customer); dao.addPost(authors, request.requestContentId, emptyCitations); dao.initiateValidationPool{value: request.fee / 10}( request.requestContentId, diff --git a/ethereum/contracts/Proposals.sol b/ethereum/contracts/Proposals.sol index a8d6e6d..ff82738 100644 --- a/ethereum/contracts/Proposals.sol +++ b/ethereum/contracts/Proposals.sol @@ -74,7 +74,7 @@ contract Proposals is DAOContract, IOnValidate { // TODO: Take citations as a parameter Citation[] memory emptyCitations; Author[] memory authors = new Author[](1); - authors[0] = Author(100, author); + authors[0] = Author(1000000, author); dao.addPost(authors, contentId, emptyCitations); proposalIndex = proposalCount++; Proposal storage proposal = proposals[proposalIndex]; @@ -217,7 +217,7 @@ contract Proposals is DAOContract, IOnValidate { } else { referendum.retryCount += 1; } - // Handle Referendum 100% + // Handle Referendum 1000000% } else if (proposal.stage == Stage.Referendum100) { require(referendumIndex == 2, "Stage 2 index mismatch"); if (votePasses && participationAboveThreshold) { diff --git a/ethereum/contracts/WorkContract.sol b/ethereum/contracts/WorkContract.sol index cc42595..50acea8 100644 --- a/ethereum/contracts/WorkContract.sol +++ b/ethereum/contracts/WorkContract.sol @@ -180,7 +180,7 @@ abstract contract WorkContract is request.approval = approval; // Make work evidence post Author[] memory authors = new Author[](1); - authors[0] = Author(100, stake.worker); + authors[0] = Author(1000000, stake.worker); dao.addPost(authors, request.evidenceContentId, request.citations); emit WorkApprovalSubmitted(requestIndex, approval); // Initiate validation pool diff --git a/ethereum/contracts/core/Forum.sol b/ethereum/contracts/core/Forum.sol index b0f8d46..c49d8fa 100644 --- a/ethereum/contracts/core/Forum.sol +++ b/ethereum/contracts/core/Forum.sol @@ -5,12 +5,12 @@ import "./Reputation.sol"; import "hardhat/console.sol"; struct Citation { - int weightPercent; + int weightPPM; string targetPostId; } struct Author { - uint weightPercent; + uint weightPPM; address authorAddress; } @@ -52,12 +52,12 @@ contract Forum is Reputation { post.id = contentId; uint authorTotalWeightPercent; for (uint i = 0; i < authors.length; i++) { - authorTotalWeightPercent += authors[i].weightPercent; + authorTotalWeightPercent += authors[i].weightPPM; post.authors.push(authors[i]); } require( - authorTotalWeightPercent == 100, - "Author weights must sum to 100%" + authorTotalWeightPercent == 1000000, + "Author weights must sum to 1000000" ); for (uint i = 0; i < citations.length; i++) { post.citations.push(citations[i]); @@ -65,19 +65,25 @@ contract Forum is Reputation { int totalCitationWeightPos; int totalCitationWeightNeg; for (uint i = 0; i < post.citations.length; i++) { - int weight = post.citations[i].weightPercent; - require(weight >= -100, "Each citation weight must be >= -100"); - require(weight <= 100, "Each citation weight must be <= 100"); + int weight = post.citations[i].weightPPM; + require( + weight >= -1000000, + "Each citation weight must be >= -1000000" + ); + require( + weight <= 1000000, + "Each citation weight must be <= 1000000" + ); if (weight > 0) totalCitationWeightPos += weight; else totalCitationWeightNeg += weight; } require( - totalCitationWeightPos <= 100, - "Sum of positive citations must be <= 100" + totalCitationWeightPos <= 1000000, + "Sum of positive citations must be <= 1000000" ); require( - totalCitationWeightNeg >= -100, - "Sum of negative citations must be >= -100" + totalCitationWeightNeg >= -1000000, + "Sum of negative citations must be >= -1000000" ); emit PostAdded(contentId); } @@ -100,7 +106,7 @@ contract Forum is Reputation { bool initialNegative, uint depth ) internal returns (int outboundAmount) { - outboundAmount = (amount * citation.weightPercent) / 100; + outboundAmount = (amount * citation.weightPPM) / 1000000; if (bytes(citation.targetPostId).length == 0) { // Incineration require( @@ -125,7 +131,7 @@ contract Forum is Reputation { int refund = _propagateReputation( citation.targetPostId, outboundAmount, - initialNegative || (depth == 0 && citation.weightPercent < 0), + initialNegative || (depth == 0 && citation.weightPPM < 0), depth + 1 ); outboundAmount -= refund; @@ -149,7 +155,7 @@ contract Forum is Reputation { Author memory author = post.authors[i]; int share; if (i < post.authors.length - 1) { - share = (amount * int(author.weightPercent)) / 100; + share = (amount * int(author.weightPPM)) / 1000000; allocated += share; } else { // For the last author, allocate the remainder. @@ -194,7 +200,7 @@ contract Forum is Reputation { } // Propagate negative citations first for (uint i = 0; i < post.citations.length; i++) { - if (post.citations[i].weightPercent < 0) { + if (post.citations[i].weightPPM < 0) { amount -= _handleCitation( postId, post.citations[i], @@ -206,7 +212,7 @@ contract Forum is Reputation { } // Now propagate positive citations for (uint i = 0; i < post.citations.length; i++) { - if (post.citations[i].weightPercent > 0) { + if (post.citations[i].weightPPM > 0) { amount -= _handleCitation( postId, post.citations[i], diff --git a/ethereum/contracts/core/ValidationPools.sol b/ethereum/contracts/core/ValidationPools.sol index 7ed3e3b..969b80f 100644 --- a/ethereum/contracts/core/ValidationPools.sol +++ b/ethereum/contracts/core/ValidationPools.sol @@ -197,7 +197,7 @@ contract ValidationPools is Reputation, Forum { // Value of losing stakes should be distributed among winners, in proportion to their stakes // Only bindingPercent % should be redistributed - // Stake senders should get (100-bindingPercent) % back + // Stake senders should get (1000000-bindingPercent) % back uint amountFromWinners = votePasses ? stakedFor : stakedAgainst; uint totalRewards; uint totalAllocated; diff --git a/ethereum/test/Forum.js b/ethereum/test/Forum.js index 94b74f4..7dcfe35 100644 --- a/ethereum/test/Forum.js +++ b/ethereum/test/Forum.js @@ -40,7 +40,7 @@ describe('Forum', () => { ); const addPost = (author, contentId, citations) => dao.addPost([{ - weightPercent: 100, + weightPPM: 1000000, authorAddress: author, }], contentId, citations); @@ -59,7 +59,7 @@ describe('Forum', () => { expect(post.id).to.equal(contentId); const postAuthors = await dao.getPostAuthors(contentId); expect(postAuthors).to.have.length(1); - expect(postAuthors[0].weightPercent).to.equal(100); + expect(postAuthors[0].weightPPM).to.equal(1000000); expect(postAuthors[0].authorAddress).to.equal(account1); }); @@ -71,24 +71,24 @@ describe('Forum', () => { expect(post.id).to.equal(contentId); const postAuthors = await dao.getPostAuthors(contentId); expect(postAuthors).to.have.length(1); - expect(postAuthors[0].weightPercent).to.equal(100); + expect(postAuthors[0].weightPPM).to.equal(1000000); expect(postAuthors[0].authorAddress).to.equal(account2); }); it('should be able to add a post with multiple authors', async () => { const contentId = 'some-id'; await expect(dao.addPost([ - { weightPercent: 50, authorAddress: account1 }, - { weightPercent: 50, authorAddress: account2 }, + { weightPPM: 500000, authorAddress: account1 }, + { weightPPM: 500000, authorAddress: account2 }, ], contentId, [])).to.emit(dao, 'PostAdded').withArgs('some-id'); const post = await dao.posts(contentId); expect(post.sender).to.equal(account1); expect(post.id).to.equal(contentId); const postAuthors = await dao.getPostAuthors(contentId); expect(postAuthors).to.have.length(2); - expect(postAuthors[0].weightPercent).to.equal(50); + expect(postAuthors[0].weightPPM).to.equal(500000); expect(postAuthors[0].authorAddress).to.equal(account1); - expect(postAuthors[1].weightPercent).to.equal(50); + expect(postAuthors[1].weightPPM).to.equal(500000); expect(postAuthors[1].authorAddress).to.equal(account2); await initiateValidationPool({ postId: 'some-id' }); await time.increase(POOL_DURATION + 1); @@ -100,22 +100,22 @@ describe('Forum', () => { it('should not be able to add a post with total author weight < 100%', async () => { const contentId = 'some-id'; await expect(dao.addPost([ - { weightPercent: 50, authorAddress: account1 }, - { weightPercent: 40, authorAddress: account2 }, - ], contentId, [])).to.be.rejectedWith('Author weights must sum to 100%'); + { weightPPM: 500000, authorAddress: account1 }, + { weightPPM: 400000, authorAddress: account2 }, + ], contentId, [])).to.be.rejectedWith('Author weights must sum to 1000000'); }); it('should not be able to add a post with total author weight > 100%', async () => { const contentId = 'some-id'; await expect(dao.addPost([ - { weightPercent: 50, authorAddress: account1 }, - { weightPercent: 60, authorAddress: account2 }, - ], contentId, [])).to.be.rejectedWith('Author weights must sum to 100%'); + { weightPPM: 500000, authorAddress: account1 }, + { weightPPM: 600000, authorAddress: account2 }, + ], contentId, [])).to.be.rejectedWith('Author weights must sum to 1000000'); }); it('should be able to donate reputation via citations', async () => { await addPost(account1, 'content-id', []); - await addPost(account2, 'second-content-id', [{ weightPercent: 50, targetPostId: 'content-id' }]); + await addPost(account2, 'second-content-id', [{ weightPPM: 500000, targetPostId: 'content-id' }]); await initiateValidationPool({ postId: 'second-content-id' }); const pool = await dao.validationPools(0); expect(pool.postId).to.equal('second-content-id'); @@ -131,7 +131,7 @@ describe('Forum', () => { await dao.evaluateOutcome(0); expect(await dao.balanceOf(account1)).to.equal(100); expect((await dao.posts('content-id')).reputation).to.equal(100); - await addPost(account2, 'second-content-id', [{ weightPercent: -50, targetPostId: 'content-id' }]); + await addPost(account2, 'second-content-id', [{ weightPPM: -500000, targetPostId: 'content-id' }]); expect((await dao.posts('second-content-id')).reputation).to.equal(0); await initiateValidationPool({ postId: 'second-content-id' }); const pool = await dao.validationPools(1); @@ -152,8 +152,8 @@ describe('Forum', () => { await addPost(account2, 'second-content-id', []); expect(await dao.balanceOf(account2)).to.equal(0); await addPost(account3, 'third-content-id', [ - { weightPercent: -100, targetPostId: 'content-id' }, - { weightPercent: 100, targetPostId: 'second-content-id' }, + { weightPPM: -1000000, targetPostId: 'content-id' }, + { weightPPM: 1000000, targetPostId: 'second-content-id' }, ]); await initiateValidationPool({ postId: 'third-content-id' }); const pool = await dao.validationPools(1); @@ -170,13 +170,13 @@ describe('Forum', () => { await initiateValidationPool({ postId: 'content-id' }); await dao.evaluateOutcome(0); expect(await dao.balanceOf(account1)).to.equal(100); - await addPost(account2, 'second-content-id', [{ weightPercent: -100, targetPostId: 'content-id' }]); + await addPost(account2, 'second-content-id', [{ weightPPM: -1000000, targetPostId: 'content-id' }]); await initiateValidationPool({ postId: 'second-content-id' }); await time.increase(POOL_DURATION + 1); await dao.evaluateOutcome(1); expect(await dao.balanceOf(account1)).to.equal(0); expect(await dao.balanceOf(account2)).to.equal(200); - await addPost(account3, 'third-content-id', [{ weightPercent: -100, targetPostId: 'second-content-id' }]); + await addPost(account3, 'third-content-id', [{ weightPPM: -1000000, targetPostId: 'second-content-id' }]); await initiateValidationPool({ postId: 'third-content-id' }); await time.increase(POOL_DURATION + 1); await dao.evaluateOutcome(2); @@ -188,8 +188,8 @@ describe('Forum', () => { it('should be able to cite a post that has not (yet) been added', async () => { await addPost(account1, 'content-id', []); await addPost(account2, 'second-content-id', [ - { weightPercent: 10, targetPostId: 'content-id' }, - { weightPercent: 10, targetPostId: 'nonexistent-content-id' }, + { weightPPM: 100000, targetPostId: 'content-id' }, + { weightPPM: 100000, targetPostId: 'nonexistent-content-id' }, ]); await initiateValidationPool({ postId: 'second-content-id' }); const pool = await dao.validationPools(0); @@ -210,7 +210,7 @@ describe('Forum', () => { await dao.evaluateOutcome(1); expect(await dao.balanceOf(account1)).to.equal(100); expect(await dao.balanceOf(account2)).to.equal(100); - await addPost(account3, 'third-content-id', [{ weightPercent: -100, targetPostId: 'second-content-id' }]); + await addPost(account3, 'third-content-id', [{ weightPPM: -1000000, targetPostId: 'second-content-id' }]); await initiateValidationPool({ postId: 'third-content-id' }); await dao.stakeOnValidationPool(2, 100, true); await time.increase(POOL_DURATION + 1); @@ -226,13 +226,13 @@ describe('Forum', () => { await initiateValidationPool({ postId: 'content-id' }); await dao.evaluateOutcome(0); expect(await dao.balanceOf(account1)).to.equal(100); - await addPost(account2, 'second-content-id', [{ weightPercent: 50, targetPostId: 'content-id' }]); + await addPost(account2, 'second-content-id', [{ weightPPM: 500000, targetPostId: 'content-id' }]); await initiateValidationPool({ postId: 'second-content-id' }); await time.increase(POOL_DURATION + 1); await dao.evaluateOutcome(1); expect(await dao.balanceOf(account1)).to.equal(150); expect(await dao.balanceOf(account2)).to.equal(50); - await addPost(account3, 'third-content-id', [{ weightPercent: -100, targetPostId: 'second-content-id' }]); + await addPost(account3, 'third-content-id', [{ weightPPM: -1000000, targetPostId: 'second-content-id' }]); await initiateValidationPool({ postId: 'third-content-id', fee: 200 }); await time.increase(POOL_DURATION + 1); await dao.evaluateOutcome(2); @@ -246,13 +246,13 @@ describe('Forum', () => { await initiateValidationPool({ postId: 'content-id' }); await dao.evaluateOutcome(0); expect(await dao.balanceOf(account1)).to.equal(100); - await addPost(account2, 'second-content-id', [{ weightPercent: -100, targetPostId: 'content-id' }]); + await addPost(account2, 'second-content-id', [{ weightPPM: -1000000, targetPostId: 'content-id' }]); await initiateValidationPool({ postId: 'second-content-id' }); await time.increase(POOL_DURATION + 1); await dao.evaluateOutcome(1); expect(await dao.balanceOf(account1)).to.equal(0); expect(await dao.balanceOf(account2)).to.equal(200); - await addPost(account3, 'third-content-id', [{ weightPercent: -100, targetPostId: 'second-content-id' }]); + await addPost(account3, 'third-content-id', [{ weightPPM: -1000000, targetPostId: 'second-content-id' }]); await initiateValidationPool({ postId: 'third-content-id', fee: 200 }); await time.increase(POOL_DURATION + 1); await dao.evaluateOutcome(2); @@ -263,9 +263,9 @@ describe('Forum', () => { it('should enforce depth limit', async () => { await addPost(account1, 'content-id-1', []); - await addPost(account1, 'content-id-2', [{ weightPercent: 100, targetPostId: 'content-id-1' }]); - await addPost(account1, 'content-id-3', [{ weightPercent: 100, targetPostId: 'content-id-2' }]); - await addPost(account1, 'content-id-4', [{ weightPercent: 100, targetPostId: 'content-id-3' }]); + await addPost(account1, 'content-id-2', [{ weightPPM: 1000000, targetPostId: 'content-id-1' }]); + await addPost(account1, 'content-id-3', [{ weightPPM: 1000000, targetPostId: 'content-id-2' }]); + await addPost(account1, 'content-id-4', [{ weightPPM: 1000000, targetPostId: 'content-id-3' }]); await initiateValidationPool({ postId: 'content-id-4' }); await dao.evaluateOutcome(0); const posts = await Promise.all([ @@ -283,7 +283,7 @@ describe('Forum', () => { it('should be able to incinerate reputation', async () => { await addPost(account1, 'content-id-1', [ { - weightPercent: 50, + weightPPM: 500000, targetPostId: '', }, ]); @@ -328,7 +328,7 @@ describe('Forum', () => { it('author and post rep can be completely destroyed', async () => { // account1's post is later strongly negatively referenced - await addPost(account3, 'third-content-id', [{ weightPercent: -100, targetPostId: 'content-id' }]); + await addPost(account3, 'third-content-id', [{ weightPPM: -1000000, targetPostId: 'content-id' }]); await initiateValidationPool({ postId: 'third-content-id', fee: 200 }); await time.increase(POOL_DURATION + 1); await dao.evaluateOutcome(3); @@ -343,7 +343,7 @@ describe('Forum', () => { it('author rep can be destroyed while some post rep remains', async () => { // account1's post is later strongly negatively referenced - await addPost(account3, 'third-content-id', [{ weightPercent: -100, targetPostId: 'content-id' }]); + await addPost(account3, 'third-content-id', [{ weightPPM: -1000000, targetPostId: 'content-id' }]); await initiateValidationPool({ postId: 'third-content-id', fee: 70 }); await time.increase(POOL_DURATION + 1); await dao.evaluateOutcome(3); @@ -358,7 +358,7 @@ describe('Forum', () => { it('author rep can be destroyed while some post rep remains (odd amount)', async () => { // account1's post is later strongly negatively referenced - await addPost(account3, 'third-content-id', [{ weightPercent: -100, targetPostId: 'content-id' }]); + await addPost(account3, 'third-content-id', [{ weightPPM: -1000000, targetPostId: 'content-id' }]); await initiateValidationPool({ postId: 'third-content-id', fee: 75 }); await time.increase(POOL_DURATION + 1); await dao.evaluateOutcome(3); @@ -375,8 +375,8 @@ describe('Forum', () => { describe('negative citation of a post with multiple authors', async () => { beforeEach(async () => { await dao.addPost([ - { weightPercent: 50, authorAddress: account1 }, - { weightPercent: 50, authorAddress: account2 }, + { weightPPM: 500000, authorAddress: account1 }, + { weightPPM: 500000, authorAddress: account2 }, ], 'content-id', []); await initiateValidationPool({ postId: 'content-id' }); await dao.evaluateOutcome(0); @@ -399,7 +399,7 @@ describe('Forum', () => { it('author and post rep can be completely destroyed', async () => { // account1's post is later strongly negatively referenced - await addPost(account3, 'second-content-id', [{ weightPercent: -100, targetPostId: 'content-id' }]); + await addPost(account3, 'second-content-id', [{ weightPPM: -1000000, targetPostId: 'content-id' }]); await initiateValidationPool({ postId: 'second-content-id', fee: 400 }); await time.increase(POOL_DURATION + 1); await dao.evaluateOutcome(2); @@ -413,7 +413,7 @@ describe('Forum', () => { it('author rep can be destroyed while some post rep remains', async () => { // account1's post is later strongly negatively referenced - await addPost(account3, 'second-content-id', [{ weightPercent: -100, targetPostId: 'content-id' }]); + await addPost(account3, 'second-content-id', [{ weightPPM: -1000000, targetPostId: 'content-id' }]); await initiateValidationPool({ postId: 'second-content-id', fee: 70 }); await time.increase(POOL_DURATION + 1); await dao.evaluateOutcome(2); diff --git a/ethereum/test/Onboarding.js b/ethereum/test/Onboarding.js index 90c1faf..9a5165f 100644 --- a/ethereum/test/Onboarding.js +++ b/ethereum/test/Onboarding.js @@ -19,7 +19,7 @@ describe('Onboarding', () => { const Onboarding = await ethers.getContractFactory('Onboarding'); const onboarding = await Onboarding.deploy(dao.target, proposals.target, PRICE); - await dao.addPost([{ weightPercent: 100, authorAddress: account1 }], 'content-id', []); + await dao.addPost([{ weightPPM: 1000000, authorAddress: account1 }], 'content-id', []); const callbackData = ethers.AbiCoder.defaultAbiCoder().encode([], []); await dao.initiateValidationPool( 'content-id', @@ -75,7 +75,7 @@ describe('Onboarding', () => { expect(post.id).to.equal('evidence-content-id'); const postAuthors = await dao.getPostAuthors('evidence-content-id'); expect(postAuthors).to.have.length(1); - expect(postAuthors[0].weightPercent).to.equal(100); + expect(postAuthors[0].weightPPM).to.equal(1000000); expect(postAuthors[0].authorAddress).to.equal(account1); const pool = await dao.validationPools(1); expect(pool.postId).to.equal('evidence-content-id'); @@ -128,7 +128,7 @@ describe('Onboarding', () => { expect(post.id).to.equal('req-content-id'); const postAuthors = await dao.getPostAuthors('req-content-id'); expect(postAuthors).to.have.length(1); - expect(postAuthors[0].weightPercent).to.equal(100); + expect(postAuthors[0].weightPPM).to.equal(1000000); expect(postAuthors[0].authorAddress).to.equal(account2); const pool = await dao.validationPools(2); expect(pool.postId).to.equal('req-content-id'); diff --git a/ethereum/test/Proposals.js b/ethereum/test/Proposals.js index bd47e77..99394af 100644 --- a/ethereum/test/Proposals.js +++ b/ethereum/test/Proposals.js @@ -16,8 +16,8 @@ describe('Proposal', () => { const Proposals = await ethers.getContractFactory('Proposals'); const proposals = await Proposals.deploy(dao.target); - await dao.addPost([{ weightPercent: 100, authorAddress: account1 }], 'some-content-id', []); - await dao.addPost([{ weightPercent: 100, authorAddress: account2 }], 'some-other-content-id', []); + await dao.addPost([{ weightPPM: 1000000, authorAddress: account1 }], 'some-content-id', []); + await dao.addPost([{ weightPPM: 1000000, authorAddress: account2 }], 'some-other-content-id', []); const callbackData = ethers.AbiCoder.defaultAbiCoder().encode([], []); await dao.initiateValidationPool( 'some-content-id', @@ -89,7 +89,7 @@ describe('Proposal', () => { it('Can submit a proposal', async () => { const postAuthors = await dao.getPostAuthors('proposal-content-id'); expect(postAuthors).to.have.length(1); - expect(postAuthors[0].weightPercent).to.equal(100); + expect(postAuthors[0].weightPPM).to.equal(1000000); expect(postAuthors[0].authorAddress).to.equal(account1); }); diff --git a/ethereum/test/ValidationPools.js b/ethereum/test/ValidationPools.js index b9e98eb..1394c69 100644 --- a/ethereum/test/ValidationPools.js +++ b/ethereum/test/ValidationPools.js @@ -38,7 +38,7 @@ describe('Validation Pools', () => { beforeEach(async () => { ({ dao, account1, account2 } = await loadFixture(deploy)); - await dao.addPost([{ weightPercent: 100, authorAddress: account1 }], 'content-id', []); + await dao.addPost([{ weightPPM: 1000000, authorAddress: account1 }], 'content-id', []); const init = () => initiateValidationPool({ fee: POOL_FEE }); await expect(init()).to.emit(dao, 'ValidationPoolInitiated').withArgs(0); expect(await dao.validationPoolCount()).to.equal(1); @@ -192,7 +192,7 @@ describe('Validation Pools', () => { beforeEach(async () => { time.increase(POOL_DURATION + 1); await dao.evaluateOutcome(0); - await dao.addPost([{ weightPercent: 100, authorAddress: account2 }], 'content-id-2', []); + await dao.addPost([{ weightPPM: 1000000, authorAddress: account2 }], 'content-id-2', []); const init = () => initiateValidationPool({ postId: 'content-id-2' }); await expect(init()).to.emit(dao, 'ValidationPoolInitiated').withArgs(1); time.increase(POOL_DURATION + 1); diff --git a/ethereum/test/Work1.js b/ethereum/test/Work1.js index 6ef52ce..5fa952e 100644 --- a/ethereum/test/Work1.js +++ b/ethereum/test/Work1.js @@ -19,7 +19,7 @@ describe('Work1', () => { const Work1 = await ethers.getContractFactory('Work1'); const work1 = await Work1.deploy(dao.target, proposals.target, WORK1_PRICE); - await dao.addPost([{ weightPercent: 100, authorAddress: account1 }], 'some-content-id', []); + await dao.addPost([{ weightPPM: 1000000, authorAddress: account1 }], 'some-content-id', []); const callbackData = ethers.AbiCoder.defaultAbiCoder().encode([], []); await dao.initiateValidationPool( 'some-content-id', @@ -216,7 +216,7 @@ describe('Work1', () => { expect(post.id).to.equal('evidence-content-id'); const postAuthors = await dao.getPostAuthors('evidence-content-id'); expect(postAuthors).to.have.length(1); - expect(postAuthors[0].weightPercent).to.equal(100); + expect(postAuthors[0].weightPPM).to.equal(1000000); expect(postAuthors[0].authorAddress).to.equal(account1); const pool = await dao.validationPools(1); expect(pool.fee).to.equal(WORK1_PRICE); diff --git a/frontend/contract-addresses.json b/frontend/contract-addresses.json index a829e34..ea0f25e 100644 --- a/frontend/contract-addresses.json +++ b/frontend/contract-addresses.json @@ -1,14 +1,14 @@ { "localhost": { - "DAO": "0xE799A82AEB525D35c671eAEb6AE6858E02a1EB24", - "Work1": "0x358A07B26F4c556140872ecdB69c58e8807E7178", - "Onboarding": "0x63472674239ffb70618Fae043610917f2d9B781C", - "Proposals": "0x38AE4ABD47B10f6660CD70Cc8FF3401341E13d9e" + "DAO": "0x4C767e62c92b58B2308E02ba5Cc4A3BD246060ac", + "Work1": "0x39B7522Ee1A5B13aE5580C40114239D4cE0e7D29", + "Onboarding": "0xC0Bb36820Ba891DE4ed6D60f75066805361dbeB8", + "Proposals": "0x268A0A6bB80282542e0Be0864Cfa1c2206c5491F" }, "sepolia": { - "DAO": "0x8e9D6cb0097CE2E283Cdd5762F288d2D394eB713", - "Work1": "0xFC95d5d09e71f0C83F59765107eAa79125b01624", - "Onboarding": "0x32f5A03687406A5c66878349A7de667d0b5C2922", - "Proposals": "0x8273062d41a828ac67ae5837547d2Dd19f8CDc27" + "DAO": "0x8e5bd58B2ca8910C5F9be8de847d6883B15c60d2", + "Work1": "0x1708A144F284C1a9615C25b674E4a08992CE93e4", + "Onboarding": "0xb21D4c986715A1adb5e87F752842613648C20a7B", + "Proposals": "0x930c47293F206780E8F166338bDaFF3520306032" } } \ No newline at end of file diff --git a/frontend/contractArtifacts/DAO.json b/frontend/contractArtifacts/DAO.json index 0ab0a38..c871b1f 100644 --- a/frontend/contractArtifacts/DAO.json +++ b/frontend/contractArtifacts/DAO.json @@ -196,7 +196,7 @@ "components": [ { "internalType": "uint256", - "name": "weightPercent", + "name": "weightPPM", "type": "uint256" }, { @@ -218,7 +218,7 @@ "components": [ { "internalType": "int256", - "name": "weightPercent", + "name": "weightPPM", "type": "int256" }, { @@ -378,7 +378,7 @@ "components": [ { "internalType": "uint256", - "name": "weightPercent", + "name": "weightPPM", "type": "uint256" }, { @@ -820,8 +820,8 @@ "type": "function" } ], - "bytecode": "0x60806040526003600c556040518060400160405280600160ff168152602001600a60ff16815250600f90600262000038929190620000df565b503480156200004657600080fd5b506040518060400160405280600a81526020017f52657075746174696f6e000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f52455000000000000000000000000000000000000000000000000000000000008152508160039081620000c49190620003c2565b508060049081620000d69190620003c2565b505050620004a9565b826002810192821562000116579160200282015b8281111562000115578251829060ff16905591602001919060010190620000f3565b5b50905062000125919062000129565b5090565b5b80821115620001445760008160009055506001016200012a565b5090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620001ca57607f821691505b602082108103620001e057620001df62000182565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200024a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200020b565b6200025686836200020b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620002a36200029d62000297846200026e565b62000278565b6200026e565b9050919050565b6000819050919050565b620002bf8362000282565b620002d7620002ce82620002aa565b84845462000218565b825550505050565b600090565b620002ee620002df565b620002fb818484620002b4565b505050565b5b81811015620003235762000317600082620002e4565b60018101905062000301565b5050565b601f82111562000372576200033c81620001e6565b6200034784620001fb565b8101602085101562000357578190505b6200036f6200036685620001fb565b83018262000300565b50505b505050565b600082821c905092915050565b6000620003976000198460080262000377565b1980831691505092915050565b6000620003b2838362000384565b9150826002028217905092915050565b620003cd8262000148565b67ffffffffffffffff811115620003e957620003e862000153565b5b620003f58254620001b1565b6200040282828562000327565b600060209050601f8311600181146200043a576000841562000425578287015190505b620004318582620003a4565b865550620004a1565b601f1984166200044a86620001e6565b60005b8281101562000474578489015182556001820191506020850194506020810190506200044d565b8683101562000494578489015162000490601f89168262000384565b8355505b6001600288020188555050505b505050505050565b615f1780620004b96000396000f3fe60806040526004361061014b5760003560e01c806370a08231116100b6578063a23362791161006f578063a2336279146104e7578063a9059cbb1461052f578063da66863a1461056c578063dd62ed3e146105a9578063e5b4d827146105e6578063f8300fca1461060f5761014b565b806370a08231146103ac57806388380274146103e957806395d89b4114610426578063975762b3146104515780639fbe7c731461047a578063a230c524146104aa5761014b565b806323b872dd1161010857806323b872dd146102765780632d17c062146102b3578063313ce567146102dc57806350cde8ef146103075780635daf08ca14610344578063642b5bfb146103815761014b565b806306fdde0314610150578063095ea7b31461017b57806311aee380146101b857806317906c2e146101e357806317c182171461020e57806318160ddd1461024b575b600080fd5b34801561015c57600080fd5b5061016561064e565b6040516101729190613b62565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190613c2c565b6106e0565b6040516101af9190613c87565b60405180910390f35b3480156101c457600080fd5b506101cd610703565b6040516101da9190613cb1565b60405180910390f35b3480156101ef57600080fd5b506101f8610709565b6040516102059190613cb1565b60405180910390f35b34801561021a57600080fd5b5061023560048036038101906102309190613ccc565b61070f565b6040516102429190613c87565b60405180910390f35b34801561025757600080fd5b506102606110ed565b60405161026d9190613cb1565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190613cf9565b6110f7565b6040516102aa9190613c87565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d59190613d78565b611134565b005b3480156102e857600080fd5b506102f161115d565b6040516102fe9190613de7565b60405180910390f35b34801561031357600080fd5b5061032e60048036038101906103299190613ccc565b611166565b60405161033b9190613b62565b60405180910390f35b34801561035057600080fd5b5061036b60048036038101906103669190613ccc565b611212565b6040516103789190613e11565b60405180910390f35b34801561038d57600080fd5b50610396611245565b6040516103a39190613cb1565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce9190613e2c565b61124b565b6040516103e09190613cb1565b60405180910390f35b3480156103f557600080fd5b50610410600480360381019061040b9190613e59565b611293565b60405161041d9190613c87565b60405180910390f35b34801561043257600080fd5b5061043b61131a565b6040516104489190613b62565b60405180910390f35b34801561045d57600080fd5b5061047860048036038101906104739190613eac565b6113ac565b005b610494600480360381019061048f9190613ff0565b6113e1565b6040516104a19190613cb1565b60405180910390f35b3480156104b657600080fd5b506104d160048036038101906104cc9190613e2c565b61189b565b6040516104de9190613c87565b60405180910390f35b3480156104f357600080fd5b5061050e60048036038101906105099190613ccc565b6118bb565b6040516105269c9b9a99989796959493929190614260565b60405180910390f35b34801561053b57600080fd5b5061055660048036038101906105519190613c2c565b611b35565b6040516105639190613c87565b60405180910390f35b34801561057857600080fd5b50610593600480360381019061058e919061432a565b611b72565b6040516105a09190614464565b60405180910390f35b3480156105b557600080fd5b506105d060048036038101906105cb9190614486565b611c5b565b6040516105dd9190613cb1565b60405180910390f35b3480156105f257600080fd5b5061060d60048036038101906106089190614572565b611ce2565b005b34801561061b57600080fd5b5061063660048036038101906106319190614756565b6121af565b6040516106459392919061479f565b60405180910390f35b60606003805461065d9061480c565b80601f01602080910402602001604051908101604052809291908181526020018280546106899061480c565b80156106d65780601f106106ab576101008083540402835291602001916106d6565b820191906000526020600020905b8154815290600101906020018083116106b957829003601f168201915b5050505050905090565b6000806106eb612297565b90506106f881858561229f565b600191505092915050565b60065481565b600a5481565b600080600d600084815260200190815260200160002090506000151581600f0160009054906101000a900460ff1615151461077f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077690614889565b60405180910390fd5b600080600080600090505b84600501548110156107fb5784600401600082815260200190815260200160002091508160010160009054906101000a900460ff16156107db578160020154846107d491906148d8565b93506107ee565b8160020154836107eb91906148d8565b92505b808060010191505061078a565b506002846003015461080d919061493b565b8361081891906148d8565b92506002846003015461082b919061493b565b8261083691906148d8565b915060006002856003015461084b919061496c565b146108605760018361085d91906148d8565b92505b83600e015442118061088357506108756110ed565b828461088191906148d8565b145b6108c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b990614a0f565b60405180910390fd5b836006016001016000600281106108dc576108db614a2f565b5b01546108e66110ed565b6108f09190614a5e565b82846108fc91906148d8565b8560060160010160016002811061091657610915614a2f565b5b01546109229190614a5e565b11610a5257600184600f0160006101000a81548160ff0219169083151502179055507fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de818660008060405161097893929190614aa0565b60405180910390a183600f0160029054906101000a900460ff1615610a45578360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d58660008686896010016040518663ffffffff1660e01b8152600401610a00959493929190614b70565b6020604051808303816000875af1158015610a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a439190614bdf565b505b60009450505050506110e8565b83600601600301600060028110610a6c57610a6b614a2f565b5b01548284610a7a91906148d8565b610a849190614a5e565b84600601600301600160028110610a9e57610a9d614a2f565b5b015484610aab9190614a5e565b10159450600184600f0160006101000a81548160ff0219169083151502179055508484600f0160016101000a81548160ff0219169083151502179055507fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de8186866001604051610b1c93929190614aa0565b60405180910390a1600085610b315782610b33565b835b905060008060005b8760050154811015610c3b5787600401600082815260200190815260200160002094508460010160009054906101000a900460ff16151589151514610c2e576000606489600601600501548760020154610b959190614a5e565b610b9f919061493b565b90508860060160060160009054906101000a900460ff1615610bfd57610bea8660030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630836122b1565b8084610bf691906148d8565b9350610c2c565b610c2b8660030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826124d6565b5b505b8080600101915050610b3b565b508715610e395760028760030154610c53919061493b565b82610c5e91906148d8565b915060005b8760050154811015610d495787600401600082815260200190815260200160002094508760060160060160009054906101000a900460ff168015610cbb57508460010160009054906101000a900460ff161515891515145b15610d3c5760006064896006016005015486886002015487610cdd9190614a5e565b610ce7919061493b565b610cf19190614a5e565b610cfb919061493b565b90508083610d0991906148d8565b9250610d3a308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836122b1565b505b8080600101915050610c63565b5060008183610d589190614c0c565b9050600060028960030154610d6d919061496c565b14610d8257600181610d7f91906148d8565b90505b610e33886001018054610d949061480c565b80601f0160208091040260200160405190810160405280929190818152602001828054610dc09061480c565b8015610e0d5780601f10610de257610100808354040283529160200191610e0d565b820191906000526020600020905b815481529060010190602001808311610df057829003601f168201915b50505050508260028b60030154610e24919061493b565b610e2e91906148d8565b612558565b50610f51565b866003015482610e4991906148d8565b915060005b8760050154811015610f4f5787600401600082815260200190815260200160002094508760060160060160009054906101000a900460ff168015610ea657508460010160009054906101000a900460ff161515891515145b15610f425760006064896006016005015460028b60030154610ec8919061493b565b87610ed39190614c0c565b886002015487610ee39190614a5e565b610eed919061493b565b610ef79190614a5e565b610f01919061493b565b90508083610f0f91906148d8565b9250610f40308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836122b1565b505b8080600101915050610e4e565b505b60005b60065481101561101a5760006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000610fa06110ed565b610fa98361124b565b8b600d0154610fb89190614a5e565b610fc2919061493b565b90508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561100a573d6000803e3d6000fd5b5050508080600101915050610f54565b5086600f0160029054906101000a900460ff16156110e0578660020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d589600189898c6010016040518663ffffffff1660e01b815260040161109b959493929190614b70565b6020604051808303816000875af11580156110ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110de9190614bdf565b505b505050505050505b919050565b6000600254905090565b60006040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112b90614c8c565b60405180910390fd5b6000600d600085815260200190815260200160002090506111578133858561256a565b50505050565b60006009905090565b6009818154811061117657600080fd5b9060005260206000200160009150905080546111919061480c565b80601f01602080910402602001604051908101604052809291908181526020018280546111bd9061480c565b801561120a5780601f106111df5761010080835404028352916020019161120a565b820191906000526020600020905b8154815290600101906020018083116111ed57829003601f168201915b505050505081565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006112a033858561229f565b8373ffffffffffffffffffffffffffffffffffffffff1663216ed6ad3385856040518463ffffffff1660e01b81526004016112dd93929190614cac565b600060405180830381600087803b1580156112f757600080fd5b505af115801561130b573d6000803e3d6000fd5b50505050600190509392505050565b6060600480546113299061480c565b80601f01602080910402602001604051908101604052809291908181526020018280546113559061480c565b80156113a25780601f10611377576101008083540402835291602001916113a2565b820191906000526020600020905b81548152906001019060200180831161138557829003601f168201915b5050505050905090565b6000600d600086815260200190815260200160002090506113ce843385612660565b6113da8185858561256a565b5050505050565b6000803411611425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141c90614d55565b60405180910390fd5b6001891015611469576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146090614dc1565b60405180910390fd5b651cae8c13e0008911156114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a990614e2d565b60405180910390fd5b876001600281106114c6576114c5614a2f565b5b6020020135600f6000600281106114e0576114df614a2f565b5b01546114ec9190614a5e565b88600060028110611500576114ff614a2f565b5b6020020135600f60016002811061151a57611519614a2f565b5b01546115269190614a5e565b1015611567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155e90614e99565b60405180910390fd5b8760016002811061157b5761157a614a2f565b5b60200201358860006002811061159457611593614a2f565b5b602002013511156115da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d190614f05565b60405180910390fd5b866001600281106115ee576115ed614a2f565b5b60200201358760006002811061160757611606614a2f565b5b6020020135111561164d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164490614f71565b60405180910390fd5b6064861115611691576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168890614fdd565b60405180910390fd5b600060088c8c6040516116a592919061502d565b9081526020016040518091039020905060008160020180549050036116ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f690615092565b60405180910390fd5b600e6000815480929190611712906150b2565b9190505591506000600d60008481526020019081526020016000209050338160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508c8c8260010191826117859291906152b1565b503481600d018190555089816006016001019060026117a5929190613a75565b5088816006016003019060026117bc929190613a75565b50878160060160050181905550868160060160060160006101000a81548160ff0219169083151502179055508a81600601600001819055508a4261180091906148d8565b81600e01819055508281600001819055508581600f0160026101000a81548160ff02191690831515021790555084848260100191826118409291906153d2565b5061184b30346126f4565b3481600301819055507f6e5c598b821d7fa8550e5fea58ab6e27c59e1cbe1df75a8591aa0c453b49e10a836040516118839190613cb1565b60405180910390a150509a9950505050505050505050565b60076020528060005260406000206000915054906101000a900460ff1681565b600d6020528060005260406000206000915090508060000154908060010180546118e49061480c565b80601f01602080910402602001604051908101604052809291908181526020018280546119109061480c565b801561195d5780601f106119325761010080835404028352916020019161195d565b820191906000526020600020905b81548152906001019060200180831161194057829003601f168201915b5050505050908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003015490806005015490806006016040518060a001604052908160008201548152602001600182016002806020026040519081016040528092919082600280156119ea576020028201915b8154815260200190600101908083116119d6575b5050505050815260200160038201600280602002604051908101604052809291908260028015611a2f576020028201915b815481526020019060010190808311611a1b575b50505050508152602001600582015481526020016006820160009054906101000a900460ff1615151515815250509080600d01549080600e01549080600f0160009054906101000a900460ff169080600f0160019054906101000a900460ff169080600f0160029054906101000a900460ff1690806010018054611ab29061480c565b80601f0160208091040260200160405190810160405280929190818152602001828054611ade9061480c565b8015611b2b5780601f10611b0057610100808354040283529160200191611b2b565b820191906000526020600020905b815481529060010190602001808311611b0e57829003601f168201915b505050505090508c565b60006040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6990614c8c565b60405180910390fd5b6060600060088484604051611b8892919061502d565b9081526020016040518091039020905080600201805480602002602001604051908101604052809291908181526020016000905b82821015611c4e5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190611bbc565b5050505091505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008686905011611d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1f90615514565b60405180910390fd5b600a6000815480929190611d3b906150b2565b91905055506009848490918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182611d7d9291906152b1565b50600060088585604051611d9292919061502d565b908152602001604051809103902090506000816002018054905014611dec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de3906155a6565b60405180910390fd5b338160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508484826000019182611e429291906152b1565b50600080600090505b88889050811015611ee157888882818110611e6957611e68614a2f565b5b9050604002016000013582611e7e91906148d8565b915082600201898983818110611e9757611e96614a2f565b5b90506040020190806001815401808255809150506001900390600052602060002090600202016000909190919091508181611ed29190615753565b50508080600101915050611e4b565b5060648114611f25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1c906157ad565b60405180910390fd5b60005b84849050811015611fa05782600301858583818110611f4a57611f49614a2f565b5b9050602002810190611f5c91906157dc565b90806001815401808255809150506001900390600052602060002090600202016000909190919091508181611f919190615943565b50508080600101915050611f28565b5060008060005b84600301805490508110156120c2576000856003018281548110611fce57611fcd614a2f565b5b90600052602060002090600202016000015490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c811215612045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203c906159c3565b60405180910390fd5b6064811315612089576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208090615a55565b60405180910390fd5b60008113156120a557808461209e9190615a75565b93506120b4565b80836120b19190615a75565b92505b508080600101915050611fa7565b506064821315612107576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fe90615b2b565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c81121561216a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216190615bbd565b60405180910390fd5b7fbd6277baf8ced6ab6543a1aef164635fc2bde1ba962d39d8a0fd81a5af249727888860405161219b929190615c0a565b60405180910390a150505050505050505050565b6008818051602081018201805184825260208301602085012081835280955050505050506000915090508060000180546121e89061480c565b80601f01602080910402602001604051908101604052809291908181526020018280546122149061480c565b80156122615780601f1061223657610100808354040283529160200191612261565b820191906000526020600020905b81548152906001019060200180831161224457829003601f168201915b5050505050908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040154905083565b600033905090565b6122ac8383836001612776565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123035780600260008282546122f791906148d8565b925050819055506123d6565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561238f578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161238693929190614cac565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361241f578060026000828254039250508190555061246c565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124c99190613cb1565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125485760006040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161253f9190613e11565b60405180910390fd5b612554826000836122b1565b5050565b612565828260008061294d565b505050565b83600e01544211156125b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a890615c7a565b60405180910390fd5b60008460050160008154809291906125c8906150b2565b91905055905060008560040160008381526020019081526020016000209050848160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828160010160006101000a81548160ff021916908315150217905550838160020181905550818160000181905550505050505050565b600061266c8484611c5b565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146126ee57818110156126de578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016126d593929190614cac565b60405180910390fd5b6126ed84848484036000612776565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127665760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161275d9190613e11565b60405180910390fd5b612772600083836122b1565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036127e85760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016127df9190613e11565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361285a5760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016128519190613e11565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015612947578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161293e9190613cb1565b60405180910390a35b50505050565b6000600c548210612960578390506134ed565b60006008866040516129729190615ccb565b90815260200160405180910390209050600081600201805490500361299a57849150506134ed565b60005b8160030180549050811015612ace5760008260030182815481106129c4576129c3614a2f565b5b9060005260206000209060020201600001541215612ac157612ab3878360030183815481106129f6576129f5614a2f565b5b906000526020600020906002020160405180604001604052908160008201548152602001600182018054612a299061480c565b80601f0160208091040260200160405190810160405280929190818152602001828054612a559061480c565b8015612aa25780601f10612a7757610100808354040283529160200191612aa2565b820191906000526020600020905b815481529060010190602001808311612a8557829003601f168201915b5050505050815250508888886134f5565b86612abe9190615ce2565b95505b808060010191505061299d565b5060005b8160030180549050811015612c03576000826003018281548110612af957612af8614a2f565b5b9060005260206000209060020201600001541315612bf657612be887836003018381548110612b2b57612b2a614a2f565b5b906000526020600020906002020160405180604001604052908160008201548152602001600182018054612b5e9061480c565b80601f0160208091040260200160405190810160405280929190818152602001828054612b8a9061480c565b8015612bd75780601f10612bac57610100808354040283529160200191612bd7565b820191906000526020600020905b815481529060010190602001808311612bba57829003601f168201915b5050505050815250508888886134f5565b86612bf39190615ce2565b95505b8080600101915050612ad2565b506000851315612eef57612ece816040518060a0016040529081600082018054612c2c9061480c565b80601f0160208091040260200160405190810160405280929190818152602001828054612c589061480c565b8015612ca55780601f10612c7a57610100808354040283529160200191612ca5565b820191906000526020600020905b815481529060010190602001808311612c8857829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015612dbb5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190612d29565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015612eb6578382906000526020600020906002020160405180604001604052908160008201548152602001600182018054612e259061480c565b80601f0160208091040260200160405190810160405280929190818152602001828054612e519061480c565b8015612e9e5780601f10612e7357610100808354040283529160200191612e9e565b820191906000526020600020905b815481529060010190602001808311612e8157829003601f168201915b50505050508152505081526020019060010190612de8565b505050508152602001600482015481525050866136be565b5084816004016000828254612ee391906148d8565b925050819055506134eb565b6000858260040154612f019190615a75565b126131f2576131c7816040518060a0016040529081600082018054612f259061480c565b80601f0160208091040260200160405190810160405280929190818152602001828054612f519061480c565b8015612f9e5780601f10612f7357610100808354040283529160200191612f9e565b820191906000526020600020905b815481529060010190602001808311612f8157829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b828210156130b45783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190613022565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156131af57838290600052602060002090600202016040518060400160405290816000820154815260200160018201805461311e9061480c565b80601f016020809104026020016040519081016040528092919081815260200182805461314a9061480c565b80156131975780601f1061316c57610100808354040283529160200191613197565b820191906000526020600020905b81548152906001019060200180831161317a57829003601f168201915b505050505081525050815260200190600101906130e1565b505050508152602001600482015481525050866136be565b9150846131d390615d25565b8160040160008282546131e69190614c0c565b925050819055506134ea565b8481600401546132029190615a75565b91506134d2816040518060a00160405290816000820180546132239061480c565b80601f016020809104026020016040519081016040528092919081815260200182805461324f9061480c565b801561329c5780601f106132715761010080835404028352916020019161329c565b820191906000526020600020905b81548152906001019060200180831161327f57829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b828210156133b25783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190613320565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156134ad57838290600052602060002090600202016040518060400160405290816000820154815260200160018201805461341c9061480c565b80601f01602080910402602001604051908101604052809291908181526020018280546134489061480c565b80156134955780601f1061346a57610100808354040283529160200191613495565b820191906000526020600020905b81548152906001019060200180831161347857829003601f168201915b505050505081525050815260200190600101906133df565b50505050815260200160048201548152505082600401546134cd90615d25565b6136be565b826134dd9190615a75565b9150600081600401819055505b5b505b949350505050565b600060648560000151856135099190615d6d565b6135139190615de5565b9050600085602001515103613575576000811215613566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161355d90615ec1565b60405180910390fd5b61357030826124d6565b6136b5565b6000600b876040516135879190615ccb565b908152602001604051809103902086602001516040516135a79190615ccb565b908152602001604051809103902054905083156136145760008212156135ef57806135d190615d25565b82136135e657806135e190615d25565b6135e8565b815b9150613613565b806135f990615d25565b821261360e578061360990615d25565b613610565b815b91505b5b600061364d876020015184878061363b575060008714801561363a575060008a60000151125b5b60018861364891906148d8565b61294d565b9050808361365b9190615ce2565b925082600b8960405161366e9190615ccb565b9081526020016040518091039020886020015160405161368e9190615ccb565b908152602001604051809103902060008282546136ab9190615a75565b9250508190555050505b95945050505050565b60008060005b846040015151811015613818576000856040015182815181106136ea576136e9614a2f565b5b6020026020010151602001519050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661380a57806005600060066000815480929190613761906150b2565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5080806001019150506136c4565b5060005b846040015151811015613a6d5760008560400151828151811061384257613841614a2f565b5b60200260200101519050600060018760400151516138609190614c0c565b8310156138985760648260000151876138799190615d6d565b6138839190615de5565b905080846138919190615a75565b93506138a7565b83866138a49190615ce2565b90505b60008113156139e2576138bf308360200151836122b1565b60076000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166139dd5781602001516005600060066000815480929190613930906150b2565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160076000846020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b613a5e565b806139ec90615d25565b6139f9836020015161124b565b1015613a4457613a0c826020015161124b565b81613a179190615a75565b85613a229190615a75565b9450613a3f826020015130613a3a856020015161124b565b6122b1565b613a5d565b613a5c82602001513083613a5790615d25565b6122b1565b5b5b5050808060010191505061381c565b505092915050565b8260028101928215613aa4579160200282015b82811115613aa3578235825591602001919060010190613a88565b5b509050613ab19190613ab5565b5090565b5b80821115613ace576000816000905550600101613ab6565b5090565b600081519050919050565b600082825260208201905092915050565b60005b83811015613b0c578082015181840152602081019050613af1565b60008484015250505050565b6000601f19601f8301169050919050565b6000613b3482613ad2565b613b3e8185613add565b9350613b4e818560208601613aee565b613b5781613b18565b840191505092915050565b60006020820190508181036000830152613b7c8184613b29565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613bc382613b98565b9050919050565b613bd381613bb8565b8114613bde57600080fd5b50565b600081359050613bf081613bca565b92915050565b6000819050919050565b613c0981613bf6565b8114613c1457600080fd5b50565b600081359050613c2681613c00565b92915050565b60008060408385031215613c4357613c42613b8e565b5b6000613c5185828601613be1565b9250506020613c6285828601613c17565b9150509250929050565b60008115159050919050565b613c8181613c6c565b82525050565b6000602082019050613c9c6000830184613c78565b92915050565b613cab81613bf6565b82525050565b6000602082019050613cc66000830184613ca2565b92915050565b600060208284031215613ce257613ce1613b8e565b5b6000613cf084828501613c17565b91505092915050565b600080600060608486031215613d1257613d11613b8e565b5b6000613d2086828701613be1565b9350506020613d3186828701613be1565b9250506040613d4286828701613c17565b9150509250925092565b613d5581613c6c565b8114613d6057600080fd5b50565b600081359050613d7281613d4c565b92915050565b600080600060608486031215613d9157613d90613b8e565b5b6000613d9f86828701613c17565b9350506020613db086828701613c17565b9250506040613dc186828701613d63565b9150509250925092565b600060ff82169050919050565b613de181613dcb565b82525050565b6000602082019050613dfc6000830184613dd8565b92915050565b613e0b81613bb8565b82525050565b6000602082019050613e266000830184613e02565b92915050565b600060208284031215613e4257613e41613b8e565b5b6000613e5084828501613be1565b91505092915050565b600080600060608486031215613e7257613e71613b8e565b5b6000613e8086828701613be1565b9350506020613e9186828701613c17565b9250506040613ea286828701613c17565b9150509250925092565b60008060008060808587031215613ec657613ec5613b8e565b5b6000613ed487828801613c17565b9450506020613ee587828801613be1565b9350506040613ef687828801613c17565b9250506060613f0787828801613d63565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112613f3857613f37613f13565b5b8235905067ffffffffffffffff811115613f5557613f54613f18565b5b602083019150836001820283011115613f7157613f70613f1d565b5b9250929050565b600081905082602060020282011115613f9457613f93613f1d565b5b92915050565b60008083601f840112613fb057613faf613f13565b5b8235905067ffffffffffffffff811115613fcd57613fcc613f18565b5b602083019150836001820283011115613fe957613fe8613f1d565b5b9250929050565b6000806000806000806000806000806101408b8d03121561401457614013613b8e565b5b60008b013567ffffffffffffffff81111561403257614031613b93565b5b61403e8d828e01613f22565b9a509a505060206140518d828e01613c17565b98505060406140628d828e01613f78565b97505060806140738d828e01613f78565b96505060c06140848d828e01613c17565b95505060e06140958d828e01613d63565b9450506101006140a78d828e01613d63565b9350506101208b013567ffffffffffffffff8111156140c9576140c8613b93565b5b6140d58d828e01613f9a565b92509250509295989b9194979a5092959850565b6140f281613bf6565b82525050565b600060029050919050565b600081905092915050565b6000819050919050565b600061412483836140e9565b60208301905092915050565b6000602082019050919050565b614146816140f8565b6141508184614103565b925061415b8261410e565b8060005b8381101561418c5781516141738782614118565b965061417e83614130565b92505060018101905061415f565b505050505050565b61419d81613c6c565b82525050565b60e0820160008201516141b960008501826140e9565b5060208201516141cc602085018261413d565b5060408201516141df606085018261413d565b5060608201516141f260a08501826140e9565b50608082015161420560c0850182614194565b50505050565b600081519050919050565b600082825260208201905092915050565b60006142328261420b565b61423c8185614216565b935061424c818560208601613aee565b61425581613b18565b840191505092915050565b600061024082019050614276600083018f613ca2565b8181036020830152614288818e613b29565b9050614297604083018d613e02565b6142a4606083018c613ca2565b6142b1608083018b613ca2565b6142be60a083018a6141a3565b6142cc610180830189613ca2565b6142da6101a0830188613ca2565b6142e86101c0830187613c78565b6142f66101e0830186613c78565b614304610200830185613c78565b8181036102208301526143178184614227565b90509d9c50505050505050505050505050565b6000806020838503121561434157614340613b8e565b5b600083013567ffffffffffffffff81111561435f5761435e613b93565b5b61436b85828601613f22565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6143ac81613bb8565b82525050565b6040820160008201516143c860008501826140e9565b5060208201516143db60208501826143a3565b50505050565b60006143ed83836143b2565b60408301905092915050565b6000602082019050919050565b600061441182614377565b61441b8185614382565b935061442683614393565b8060005b8381101561445757815161443e88826143e1565b9750614449836143f9565b92505060018101905061442a565b5085935050505092915050565b6000602082019050818103600083015261447e8184614406565b905092915050565b6000806040838503121561449d5761449c613b8e565b5b60006144ab85828601613be1565b92505060206144bc85828601613be1565b9150509250929050565b60008083601f8401126144dc576144db613f13565b5b8235905067ffffffffffffffff8111156144f9576144f8613f18565b5b60208301915083604082028301111561451557614514613f1d565b5b9250929050565b60008083601f84011261453257614531613f13565b5b8235905067ffffffffffffffff81111561454f5761454e613f18565b5b60208301915083602082028301111561456b5761456a613f1d565b5b9250929050565b6000806000806000806060878903121561458f5761458e613b8e565b5b600087013567ffffffffffffffff8111156145ad576145ac613b93565b5b6145b989828a016144c6565b9650965050602087013567ffffffffffffffff8111156145dc576145db613b93565b5b6145e889828a01613f22565b9450945050604087013567ffffffffffffffff81111561460b5761460a613b93565b5b61461789828a0161451c565b92509250509295509295509295565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61466382613b18565b810181811067ffffffffffffffff821117156146825761468161462b565b5b80604052505050565b6000614695613b84565b90506146a1828261465a565b919050565b600067ffffffffffffffff8211156146c1576146c061462b565b5b6146ca82613b18565b9050602081019050919050565b82818337600083830152505050565b60006146f96146f4846146a6565b61468b565b90508281526020810184848401111561471557614714614626565b5b6147208482856146d7565b509392505050565b600082601f83011261473d5761473c613f13565b5b813561474d8482602086016146e6565b91505092915050565b60006020828403121561476c5761476b613b8e565b5b600082013567ffffffffffffffff81111561478a57614789613b93565b5b61479684828501614728565b91505092915050565b600060608201905081810360008301526147b98186613b29565b90506147c86020830185613e02565b6147d56040830184613ca2565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061482457607f821691505b602082108103614837576148366147dd565b5b50919050565b7f506f6f6c20697320616c7265616479207265736f6c7665640000000000000000600082015250565b6000614873601883613add565b915061487e8261483d565b602082019050919050565b600060208201905081810360008301526148a281614866565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006148e382613bf6565b91506148ee83613bf6565b9250828201905080821115614906576149056148a9565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061494682613bf6565b915061495183613bf6565b9250826149615761496061490c565b5b828204905092915050565b600061497782613bf6565b915061498283613bf6565b9250826149925761499161490c565b5b828206905092915050565b7f506f6f6c20656e642074696d6520686173206e6f74207965742061727269766560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b60006149f9602183613add565b9150614a048261499d565b604082019050919050565b60006020820190508181036000830152614a28816149ec565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614a6982613bf6565b9150614a7483613bf6565b9250828202614a8281613bf6565b91508282048414831517614a9957614a986148a9565b5b5092915050565b6000606082019050614ab56000830186613ca2565b614ac26020830185613c78565b614acf6040830184613c78565b949350505050565b60008190508160005260206000209050919050565b60008154614af98161480c565b614b038186614216565b94506001821660008114614b1e5760018114614b3457614b67565b60ff198316865281151560200286019350614b67565b614b3d85614ad7565b60005b83811015614b5f57815481890152600182019150602081019050614b40565b808801955050505b50505092915050565b600060a082019050614b856000830188613c78565b614b926020830187613c78565b614b9f6040830186613ca2565b614bac6060830185613ca2565b8181036080830152614bbe8184614aec565b90509695505050505050565b600081519050614bd981613c00565b92915050565b600060208284031215614bf557614bf4613b8e565b5b6000614c0384828501614bca565b91505092915050565b6000614c1782613bf6565b9150614c2283613bf6565b9250828203905081811115614c3a57614c396148a9565b5b92915050565b7f524550207472616e73666572206973206e6f7420616c6c6f7765640000000000600082015250565b6000614c76601b83613add565b9150614c8182614c40565b602082019050919050565b60006020820190508181036000830152614ca581614c69565b9050919050565b6000606082019050614cc16000830186613e02565b614cce6020830185613ca2565b614cdb6040830184613ca2565b949350505050565b7f46656520697320726571756972656420746f20696e6974696174652076616c6960008201527f646174696f6e20706f6f6c000000000000000000000000000000000000000000602082015250565b6000614d3f602b83613add565b9150614d4a82614ce3565b604082019050919050565b60006020820190508181036000830152614d6e81614d32565b9050919050565b7f4475726174696f6e20697320746f6f2073686f72740000000000000000000000600082015250565b6000614dab601583613add565b9150614db682614d75565b602082019050919050565b60006020820190508181036000830152614dda81614d9e565b9050919050565b7f4475726174696f6e20697320746f6f206c6f6e67000000000000000000000000600082015250565b6000614e17601483613add565b9150614e2282614de1565b602082019050919050565b60006020820190508181036000830152614e4681614e0a565b9050919050565b7f51756f72756d2069732062656c6f77206d696e696d756d000000000000000000600082015250565b6000614e83601783613add565b9150614e8e82614e4d565b602082019050919050565b60006020820190508181036000830152614eb281614e76565b9050919050565b7f51756f72756d2069732067726561746572207468616e206f6e65000000000000600082015250565b6000614eef601a83613add565b9150614efa82614eb9565b602082019050919050565b60006020820190508181036000830152614f1e81614ee2565b9050919050565b7f57696e20726174696f2069732067726561746572207468616e206f6e65000000600082015250565b6000614f5b601d83613add565b9150614f6682614f25565b602082019050919050565b60006020820190508181036000830152614f8a81614f4e565b9050919050565b7f42696e64696e672070657263656e74206d757374206265203c3d203130300000600082015250565b6000614fc7601e83613add565b9150614fd282614f91565b602082019050919050565b60006020820190508181036000830152614ff681614fba565b9050919050565b600081905092915050565b60006150148385614ffd565b93506150218385846146d7565b82840190509392505050565b600061503a828486615008565b91508190509392505050565b7f54617267657420706f7374206e6f7420666f756e640000000000000000000000600082015250565b600061507c601583613add565b915061508782615046565b602082019050919050565b600060208201905081810360008301526150ab8161506f565b9050919050565b60006150bd82613bf6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036150ef576150ee6148a9565b5b600182019050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026151677fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261512a565b615171868361512a565b95508019841693508086168417925050509392505050565b6000819050919050565b60006151ae6151a96151a484613bf6565b615189565b613bf6565b9050919050565b6000819050919050565b6151c883615193565b6151dc6151d4826151b5565b848454615137565b825550505050565b600090565b6151f16151e4565b6151fc8184846151bf565b505050565b5b81811015615220576152156000826151e9565b600181019050615202565b5050565b601f8211156152655761523681615105565b61523f8461511a565b8101602085101561524e578190505b61526261525a8561511a565b830182615201565b50505b505050565b600082821c905092915050565b60006152886000198460080261526a565b1980831691505092915050565b60006152a18383615277565b9150826002028217905092915050565b6152bb83836150fa565b67ffffffffffffffff8111156152d4576152d361462b565b5b6152de825461480c565b6152e9828285615224565b6000601f8311600181146153185760008415615306578287013590505b6153108582615295565b865550615378565b601f19841661532686615105565b60005b8281101561534e57848901358255600182019150602085019450602081019050615329565b8683101561536b5784890135615367601f891682615277565b8355505b6001600288020188555050505b50505050505050565b600082905092915050565b601f8211156153cd5761539e81614ad7565b6153a78461511a565b810160208510156153b6578190505b6153ca6153c28561511a565b830182615201565b50505b505050565b6153dc8383615381565b67ffffffffffffffff8111156153f5576153f461462b565b5b6153ff825461480c565b61540a82828561538c565b6000601f8311600181146154395760008415615427578287013590505b6154318582615295565b865550615499565b601f19841661544786614ad7565b60005b8281101561546f5784890135825560018201915060208501945060208101905061544a565b8683101561548c5784890135615488601f891682615277565b8355505b6001600288020188555050505b50505050505050565b7f506f7374206d75737420696e636c756465206174206c65617374206f6e65206160008201527f7574686f72000000000000000000000000000000000000000000000000000000602082015250565b60006154fe602583613add565b9150615509826154a2565b604082019050919050565b6000602082019050818103600083015261552d816154f1565b9050919050565b7f4120706f73742077697468207468697320636f6e74656e74496420616c72656160008201527f6479206578697374730000000000000000000000000000000000000000000000602082015250565b6000615590602983613add565b915061559b82615534565b604082019050919050565b600060208201905081810360008301526155bf81615583565b9050919050565b600081356155d381613c00565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff615615846155dc565b9350801983169250808416831791505092915050565b61563482615193565b615647615640826151b5565b83546155e9565b8255505050565b6000813561565b81613bca565b80915050919050565b600073ffffffffffffffffffffffffffffffffffffffff615684846155dc565b9350801983169250808416831791505092915050565b60006156b56156b06156ab84613b98565b615189565b613b98565b9050919050565b60006156c78261569a565b9050919050565b60006156d9826156bc565b9050919050565b6000819050919050565b6156f3826156ce565b6157066156ff826156e0565b8354615664565b8255505050565b60008101600083018061571f816155c6565b905061572b818461562b565b5050506001810160208301806157408161564e565b905061574c81846156ea565b5050505050565b61575d828261570d565b5050565b7f417574686f722077656967687473206d7573742073756d20746f203130302500600082015250565b6000615797601f83613add565b91506157a282615761565b602082019050919050565b600060208201905081810360008301526157c68161578a565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126157f8576157f76157cd565b5b80830191505092915050565b6000819050919050565b61581781615804565b811461582257600080fd5b50565b600081356158328161580e565b80915050919050565b600061585661585161584c84615804565b615189565b615804565b9050919050565b6000819050919050565b6158708261583b565b61588361587c8261585d565b83546155e9565b8255505050565b600080833560016020038436030381126158a7576158a66157cd565b5b80840192508235915067ffffffffffffffff8211156158c9576158c86157d2565b5b6020830192506001820236038313156158e5576158e46157d7565b5b509250929050565b6158f88383836152b1565b505050565b60008101600083018061590f81615825565b905061591b8184615867565b5050506001810160208301615930818561588a565b61593b8183866158ed565b505050505050565b61594d82826158fd565b5050565b7f45616368206369746174696f6e20776569676874206d757374206265203e3d2060008201527f2d31303000000000000000000000000000000000000000000000000000000000602082015250565b60006159ad602483613add565b91506159b882615951565b604082019050919050565b600060208201905081810360008301526159dc816159a0565b9050919050565b7f45616368206369746174696f6e20776569676874206d757374206265203c3d2060008201527f3130300000000000000000000000000000000000000000000000000000000000602082015250565b6000615a3f602383613add565b9150615a4a826159e3565b604082019050919050565b60006020820190508181036000830152615a6e81615a32565b9050919050565b6000615a8082615804565b9150615a8b83615804565b925082820190508281121560008312168382126000841215161715615ab357615ab26148a9565b5b92915050565b7f53756d206f6620706f736974697665206369746174696f6e73206d757374206260008201527f65203c3d20313030000000000000000000000000000000000000000000000000602082015250565b6000615b15602883613add565b9150615b2082615ab9565b604082019050919050565b60006020820190508181036000830152615b4481615b08565b9050919050565b7f53756d206f66206e65676174697665206369746174696f6e73206d757374206260008201527f65203e3d202d3130300000000000000000000000000000000000000000000000602082015250565b6000615ba7602983613add565b9150615bb282615b4b565b604082019050919050565b60006020820190508181036000830152615bd681615b9a565b9050919050565b6000615be98385613add565b9350615bf68385846146d7565b615bff83613b18565b840190509392505050565b60006020820190508181036000830152615c25818486615bdd565b90509392505050565b7f506f6f6c20656e642074696d6520686173207061737365640000000000000000600082015250565b6000615c64601883613add565b9150615c6f82615c2e565b602082019050919050565b60006020820190508181036000830152615c9381615c57565b9050919050565b6000615ca582613ad2565b615caf8185614ffd565b9350615cbf818560208601613aee565b80840191505092915050565b6000615cd78284615c9a565b915081905092915050565b6000615ced82615804565b9150615cf883615804565b9250828203905081811260008412168282136000851215161715615d1f57615d1e6148a9565b5b92915050565b6000615d3082615804565b91507f80000000000000000000000000000000000000000000000000000000000000008203615d6257615d616148a9565b5b816000039050919050565b6000615d7882615804565b9150615d8383615804565b9250828202615d9181615804565b91507f80000000000000000000000000000000000000000000000000000000000000008414600084121615615dc957615dc86148a9565b5b8282058414831517615dde57615ddd6148a9565b5b5092915050565b6000615df082615804565b9150615dfb83615804565b925082615e0b57615e0a61490c565b5b600160000383147f800000000000000000000000000000000000000000000000000000000000000083141615615e4457615e436148a9565b5b828205905092915050565b7f4c65616368696e672066726f6d20696e63696e657261746f7220697320666f7260008201527f62696464656e0000000000000000000000000000000000000000000000000000602082015250565b6000615eab602683613add565b9150615eb682615e4f565b604082019050919050565b60006020820190508181036000830152615eda81615e9e565b905091905056fea264697066735822122048c08bdaea49553e2208fbc1bf2e1fde118c383db153ba6213c58f673267d60964736f6c63430008180033", - "deployedBytecode": "0x60806040526004361061014b5760003560e01c806370a08231116100b6578063a23362791161006f578063a2336279146104e7578063a9059cbb1461052f578063da66863a1461056c578063dd62ed3e146105a9578063e5b4d827146105e6578063f8300fca1461060f5761014b565b806370a08231146103ac57806388380274146103e957806395d89b4114610426578063975762b3146104515780639fbe7c731461047a578063a230c524146104aa5761014b565b806323b872dd1161010857806323b872dd146102765780632d17c062146102b3578063313ce567146102dc57806350cde8ef146103075780635daf08ca14610344578063642b5bfb146103815761014b565b806306fdde0314610150578063095ea7b31461017b57806311aee380146101b857806317906c2e146101e357806317c182171461020e57806318160ddd1461024b575b600080fd5b34801561015c57600080fd5b5061016561064e565b6040516101729190613b62565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190613c2c565b6106e0565b6040516101af9190613c87565b60405180910390f35b3480156101c457600080fd5b506101cd610703565b6040516101da9190613cb1565b60405180910390f35b3480156101ef57600080fd5b506101f8610709565b6040516102059190613cb1565b60405180910390f35b34801561021a57600080fd5b5061023560048036038101906102309190613ccc565b61070f565b6040516102429190613c87565b60405180910390f35b34801561025757600080fd5b506102606110ed565b60405161026d9190613cb1565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190613cf9565b6110f7565b6040516102aa9190613c87565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d59190613d78565b611134565b005b3480156102e857600080fd5b506102f161115d565b6040516102fe9190613de7565b60405180910390f35b34801561031357600080fd5b5061032e60048036038101906103299190613ccc565b611166565b60405161033b9190613b62565b60405180910390f35b34801561035057600080fd5b5061036b60048036038101906103669190613ccc565b611212565b6040516103789190613e11565b60405180910390f35b34801561038d57600080fd5b50610396611245565b6040516103a39190613cb1565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce9190613e2c565b61124b565b6040516103e09190613cb1565b60405180910390f35b3480156103f557600080fd5b50610410600480360381019061040b9190613e59565b611293565b60405161041d9190613c87565b60405180910390f35b34801561043257600080fd5b5061043b61131a565b6040516104489190613b62565b60405180910390f35b34801561045d57600080fd5b5061047860048036038101906104739190613eac565b6113ac565b005b610494600480360381019061048f9190613ff0565b6113e1565b6040516104a19190613cb1565b60405180910390f35b3480156104b657600080fd5b506104d160048036038101906104cc9190613e2c565b61189b565b6040516104de9190613c87565b60405180910390f35b3480156104f357600080fd5b5061050e60048036038101906105099190613ccc565b6118bb565b6040516105269c9b9a99989796959493929190614260565b60405180910390f35b34801561053b57600080fd5b5061055660048036038101906105519190613c2c565b611b35565b6040516105639190613c87565b60405180910390f35b34801561057857600080fd5b50610593600480360381019061058e919061432a565b611b72565b6040516105a09190614464565b60405180910390f35b3480156105b557600080fd5b506105d060048036038101906105cb9190614486565b611c5b565b6040516105dd9190613cb1565b60405180910390f35b3480156105f257600080fd5b5061060d60048036038101906106089190614572565b611ce2565b005b34801561061b57600080fd5b5061063660048036038101906106319190614756565b6121af565b6040516106459392919061479f565b60405180910390f35b60606003805461065d9061480c565b80601f01602080910402602001604051908101604052809291908181526020018280546106899061480c565b80156106d65780601f106106ab576101008083540402835291602001916106d6565b820191906000526020600020905b8154815290600101906020018083116106b957829003601f168201915b5050505050905090565b6000806106eb612297565b90506106f881858561229f565b600191505092915050565b60065481565b600a5481565b600080600d600084815260200190815260200160002090506000151581600f0160009054906101000a900460ff1615151461077f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077690614889565b60405180910390fd5b600080600080600090505b84600501548110156107fb5784600401600082815260200190815260200160002091508160010160009054906101000a900460ff16156107db578160020154846107d491906148d8565b93506107ee565b8160020154836107eb91906148d8565b92505b808060010191505061078a565b506002846003015461080d919061493b565b8361081891906148d8565b92506002846003015461082b919061493b565b8261083691906148d8565b915060006002856003015461084b919061496c565b146108605760018361085d91906148d8565b92505b83600e015442118061088357506108756110ed565b828461088191906148d8565b145b6108c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b990614a0f565b60405180910390fd5b836006016001016000600281106108dc576108db614a2f565b5b01546108e66110ed565b6108f09190614a5e565b82846108fc91906148d8565b8560060160010160016002811061091657610915614a2f565b5b01546109229190614a5e565b11610a5257600184600f0160006101000a81548160ff0219169083151502179055507fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de818660008060405161097893929190614aa0565b60405180910390a183600f0160029054906101000a900460ff1615610a45578360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d58660008686896010016040518663ffffffff1660e01b8152600401610a00959493929190614b70565b6020604051808303816000875af1158015610a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a439190614bdf565b505b60009450505050506110e8565b83600601600301600060028110610a6c57610a6b614a2f565b5b01548284610a7a91906148d8565b610a849190614a5e565b84600601600301600160028110610a9e57610a9d614a2f565b5b015484610aab9190614a5e565b10159450600184600f0160006101000a81548160ff0219169083151502179055508484600f0160016101000a81548160ff0219169083151502179055507fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de8186866001604051610b1c93929190614aa0565b60405180910390a1600085610b315782610b33565b835b905060008060005b8760050154811015610c3b5787600401600082815260200190815260200160002094508460010160009054906101000a900460ff16151589151514610c2e576000606489600601600501548760020154610b959190614a5e565b610b9f919061493b565b90508860060160060160009054906101000a900460ff1615610bfd57610bea8660030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630836122b1565b8084610bf691906148d8565b9350610c2c565b610c2b8660030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826124d6565b5b505b8080600101915050610b3b565b508715610e395760028760030154610c53919061493b565b82610c5e91906148d8565b915060005b8760050154811015610d495787600401600082815260200190815260200160002094508760060160060160009054906101000a900460ff168015610cbb57508460010160009054906101000a900460ff161515891515145b15610d3c5760006064896006016005015486886002015487610cdd9190614a5e565b610ce7919061493b565b610cf19190614a5e565b610cfb919061493b565b90508083610d0991906148d8565b9250610d3a308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836122b1565b505b8080600101915050610c63565b5060008183610d589190614c0c565b9050600060028960030154610d6d919061496c565b14610d8257600181610d7f91906148d8565b90505b610e33886001018054610d949061480c565b80601f0160208091040260200160405190810160405280929190818152602001828054610dc09061480c565b8015610e0d5780601f10610de257610100808354040283529160200191610e0d565b820191906000526020600020905b815481529060010190602001808311610df057829003601f168201915b50505050508260028b60030154610e24919061493b565b610e2e91906148d8565b612558565b50610f51565b866003015482610e4991906148d8565b915060005b8760050154811015610f4f5787600401600082815260200190815260200160002094508760060160060160009054906101000a900460ff168015610ea657508460010160009054906101000a900460ff161515891515145b15610f425760006064896006016005015460028b60030154610ec8919061493b565b87610ed39190614c0c565b886002015487610ee39190614a5e565b610eed919061493b565b610ef79190614a5e565b610f01919061493b565b90508083610f0f91906148d8565b9250610f40308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836122b1565b505b8080600101915050610e4e565b505b60005b60065481101561101a5760006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000610fa06110ed565b610fa98361124b565b8b600d0154610fb89190614a5e565b610fc2919061493b565b90508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561100a573d6000803e3d6000fd5b5050508080600101915050610f54565b5086600f0160029054906101000a900460ff16156110e0578660020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d589600189898c6010016040518663ffffffff1660e01b815260040161109b959493929190614b70565b6020604051808303816000875af11580156110ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110de9190614bdf565b505b505050505050505b919050565b6000600254905090565b60006040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112b90614c8c565b60405180910390fd5b6000600d600085815260200190815260200160002090506111578133858561256a565b50505050565b60006009905090565b6009818154811061117657600080fd5b9060005260206000200160009150905080546111919061480c565b80601f01602080910402602001604051908101604052809291908181526020018280546111bd9061480c565b801561120a5780601f106111df5761010080835404028352916020019161120a565b820191906000526020600020905b8154815290600101906020018083116111ed57829003601f168201915b505050505081565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006112a033858561229f565b8373ffffffffffffffffffffffffffffffffffffffff1663216ed6ad3385856040518463ffffffff1660e01b81526004016112dd93929190614cac565b600060405180830381600087803b1580156112f757600080fd5b505af115801561130b573d6000803e3d6000fd5b50505050600190509392505050565b6060600480546113299061480c565b80601f01602080910402602001604051908101604052809291908181526020018280546113559061480c565b80156113a25780601f10611377576101008083540402835291602001916113a2565b820191906000526020600020905b81548152906001019060200180831161138557829003601f168201915b5050505050905090565b6000600d600086815260200190815260200160002090506113ce843385612660565b6113da8185858561256a565b5050505050565b6000803411611425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141c90614d55565b60405180910390fd5b6001891015611469576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146090614dc1565b60405180910390fd5b651cae8c13e0008911156114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a990614e2d565b60405180910390fd5b876001600281106114c6576114c5614a2f565b5b6020020135600f6000600281106114e0576114df614a2f565b5b01546114ec9190614a5e565b88600060028110611500576114ff614a2f565b5b6020020135600f60016002811061151a57611519614a2f565b5b01546115269190614a5e565b1015611567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155e90614e99565b60405180910390fd5b8760016002811061157b5761157a614a2f565b5b60200201358860006002811061159457611593614a2f565b5b602002013511156115da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d190614f05565b60405180910390fd5b866001600281106115ee576115ed614a2f565b5b60200201358760006002811061160757611606614a2f565b5b6020020135111561164d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164490614f71565b60405180910390fd5b6064861115611691576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168890614fdd565b60405180910390fd5b600060088c8c6040516116a592919061502d565b9081526020016040518091039020905060008160020180549050036116ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f690615092565b60405180910390fd5b600e6000815480929190611712906150b2565b9190505591506000600d60008481526020019081526020016000209050338160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508c8c8260010191826117859291906152b1565b503481600d018190555089816006016001019060026117a5929190613a75565b5088816006016003019060026117bc929190613a75565b50878160060160050181905550868160060160060160006101000a81548160ff0219169083151502179055508a81600601600001819055508a4261180091906148d8565b81600e01819055508281600001819055508581600f0160026101000a81548160ff02191690831515021790555084848260100191826118409291906153d2565b5061184b30346126f4565b3481600301819055507f6e5c598b821d7fa8550e5fea58ab6e27c59e1cbe1df75a8591aa0c453b49e10a836040516118839190613cb1565b60405180910390a150509a9950505050505050505050565b60076020528060005260406000206000915054906101000a900460ff1681565b600d6020528060005260406000206000915090508060000154908060010180546118e49061480c565b80601f01602080910402602001604051908101604052809291908181526020018280546119109061480c565b801561195d5780601f106119325761010080835404028352916020019161195d565b820191906000526020600020905b81548152906001019060200180831161194057829003601f168201915b5050505050908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003015490806005015490806006016040518060a001604052908160008201548152602001600182016002806020026040519081016040528092919082600280156119ea576020028201915b8154815260200190600101908083116119d6575b5050505050815260200160038201600280602002604051908101604052809291908260028015611a2f576020028201915b815481526020019060010190808311611a1b575b50505050508152602001600582015481526020016006820160009054906101000a900460ff1615151515815250509080600d01549080600e01549080600f0160009054906101000a900460ff169080600f0160019054906101000a900460ff169080600f0160029054906101000a900460ff1690806010018054611ab29061480c565b80601f0160208091040260200160405190810160405280929190818152602001828054611ade9061480c565b8015611b2b5780601f10611b0057610100808354040283529160200191611b2b565b820191906000526020600020905b815481529060010190602001808311611b0e57829003601f168201915b505050505090508c565b60006040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6990614c8c565b60405180910390fd5b6060600060088484604051611b8892919061502d565b9081526020016040518091039020905080600201805480602002602001604051908101604052809291908181526020016000905b82821015611c4e5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190611bbc565b5050505091505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008686905011611d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1f90615514565b60405180910390fd5b600a6000815480929190611d3b906150b2565b91905055506009848490918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182611d7d9291906152b1565b50600060088585604051611d9292919061502d565b908152602001604051809103902090506000816002018054905014611dec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de3906155a6565b60405180910390fd5b338160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508484826000019182611e429291906152b1565b50600080600090505b88889050811015611ee157888882818110611e6957611e68614a2f565b5b9050604002016000013582611e7e91906148d8565b915082600201898983818110611e9757611e96614a2f565b5b90506040020190806001815401808255809150506001900390600052602060002090600202016000909190919091508181611ed29190615753565b50508080600101915050611e4b565b5060648114611f25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1c906157ad565b60405180910390fd5b60005b84849050811015611fa05782600301858583818110611f4a57611f49614a2f565b5b9050602002810190611f5c91906157dc565b90806001815401808255809150506001900390600052602060002090600202016000909190919091508181611f919190615943565b50508080600101915050611f28565b5060008060005b84600301805490508110156120c2576000856003018281548110611fce57611fcd614a2f565b5b90600052602060002090600202016000015490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c811215612045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203c906159c3565b60405180910390fd5b6064811315612089576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208090615a55565b60405180910390fd5b60008113156120a557808461209e9190615a75565b93506120b4565b80836120b19190615a75565b92505b508080600101915050611fa7565b506064821315612107576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fe90615b2b565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c81121561216a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216190615bbd565b60405180910390fd5b7fbd6277baf8ced6ab6543a1aef164635fc2bde1ba962d39d8a0fd81a5af249727888860405161219b929190615c0a565b60405180910390a150505050505050505050565b6008818051602081018201805184825260208301602085012081835280955050505050506000915090508060000180546121e89061480c565b80601f01602080910402602001604051908101604052809291908181526020018280546122149061480c565b80156122615780601f1061223657610100808354040283529160200191612261565b820191906000526020600020905b81548152906001019060200180831161224457829003601f168201915b5050505050908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040154905083565b600033905090565b6122ac8383836001612776565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123035780600260008282546122f791906148d8565b925050819055506123d6565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561238f578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161238693929190614cac565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361241f578060026000828254039250508190555061246c565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124c99190613cb1565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125485760006040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161253f9190613e11565b60405180910390fd5b612554826000836122b1565b5050565b612565828260008061294d565b505050565b83600e01544211156125b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a890615c7a565b60405180910390fd5b60008460050160008154809291906125c8906150b2565b91905055905060008560040160008381526020019081526020016000209050848160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828160010160006101000a81548160ff021916908315150217905550838160020181905550818160000181905550505050505050565b600061266c8484611c5b565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146126ee57818110156126de578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016126d593929190614cac565b60405180910390fd5b6126ed84848484036000612776565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127665760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161275d9190613e11565b60405180910390fd5b612772600083836122b1565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036127e85760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016127df9190613e11565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361285a5760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016128519190613e11565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015612947578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161293e9190613cb1565b60405180910390a35b50505050565b6000600c548210612960578390506134ed565b60006008866040516129729190615ccb565b90815260200160405180910390209050600081600201805490500361299a57849150506134ed565b60005b8160030180549050811015612ace5760008260030182815481106129c4576129c3614a2f565b5b9060005260206000209060020201600001541215612ac157612ab3878360030183815481106129f6576129f5614a2f565b5b906000526020600020906002020160405180604001604052908160008201548152602001600182018054612a299061480c565b80601f0160208091040260200160405190810160405280929190818152602001828054612a559061480c565b8015612aa25780601f10612a7757610100808354040283529160200191612aa2565b820191906000526020600020905b815481529060010190602001808311612a8557829003601f168201915b5050505050815250508888886134f5565b86612abe9190615ce2565b95505b808060010191505061299d565b5060005b8160030180549050811015612c03576000826003018281548110612af957612af8614a2f565b5b9060005260206000209060020201600001541315612bf657612be887836003018381548110612b2b57612b2a614a2f565b5b906000526020600020906002020160405180604001604052908160008201548152602001600182018054612b5e9061480c565b80601f0160208091040260200160405190810160405280929190818152602001828054612b8a9061480c565b8015612bd75780601f10612bac57610100808354040283529160200191612bd7565b820191906000526020600020905b815481529060010190602001808311612bba57829003601f168201915b5050505050815250508888886134f5565b86612bf39190615ce2565b95505b8080600101915050612ad2565b506000851315612eef57612ece816040518060a0016040529081600082018054612c2c9061480c565b80601f0160208091040260200160405190810160405280929190818152602001828054612c589061480c565b8015612ca55780601f10612c7a57610100808354040283529160200191612ca5565b820191906000526020600020905b815481529060010190602001808311612c8857829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015612dbb5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190612d29565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015612eb6578382906000526020600020906002020160405180604001604052908160008201548152602001600182018054612e259061480c565b80601f0160208091040260200160405190810160405280929190818152602001828054612e519061480c565b8015612e9e5780601f10612e7357610100808354040283529160200191612e9e565b820191906000526020600020905b815481529060010190602001808311612e8157829003601f168201915b50505050508152505081526020019060010190612de8565b505050508152602001600482015481525050866136be565b5084816004016000828254612ee391906148d8565b925050819055506134eb565b6000858260040154612f019190615a75565b126131f2576131c7816040518060a0016040529081600082018054612f259061480c565b80601f0160208091040260200160405190810160405280929190818152602001828054612f519061480c565b8015612f9e5780601f10612f7357610100808354040283529160200191612f9e565b820191906000526020600020905b815481529060010190602001808311612f8157829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b828210156130b45783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190613022565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156131af57838290600052602060002090600202016040518060400160405290816000820154815260200160018201805461311e9061480c565b80601f016020809104026020016040519081016040528092919081815260200182805461314a9061480c565b80156131975780601f1061316c57610100808354040283529160200191613197565b820191906000526020600020905b81548152906001019060200180831161317a57829003601f168201915b505050505081525050815260200190600101906130e1565b505050508152602001600482015481525050866136be565b9150846131d390615d25565b8160040160008282546131e69190614c0c565b925050819055506134ea565b8481600401546132029190615a75565b91506134d2816040518060a00160405290816000820180546132239061480c565b80601f016020809104026020016040519081016040528092919081815260200182805461324f9061480c565b801561329c5780601f106132715761010080835404028352916020019161329c565b820191906000526020600020905b81548152906001019060200180831161327f57829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b828210156133b25783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190613320565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156134ad57838290600052602060002090600202016040518060400160405290816000820154815260200160018201805461341c9061480c565b80601f01602080910402602001604051908101604052809291908181526020018280546134489061480c565b80156134955780601f1061346a57610100808354040283529160200191613495565b820191906000526020600020905b81548152906001019060200180831161347857829003601f168201915b505050505081525050815260200190600101906133df565b50505050815260200160048201548152505082600401546134cd90615d25565b6136be565b826134dd9190615a75565b9150600081600401819055505b5b505b949350505050565b600060648560000151856135099190615d6d565b6135139190615de5565b9050600085602001515103613575576000811215613566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161355d90615ec1565b60405180910390fd5b61357030826124d6565b6136b5565b6000600b876040516135879190615ccb565b908152602001604051809103902086602001516040516135a79190615ccb565b908152602001604051809103902054905083156136145760008212156135ef57806135d190615d25565b82136135e657806135e190615d25565b6135e8565b815b9150613613565b806135f990615d25565b821261360e578061360990615d25565b613610565b815b91505b5b600061364d876020015184878061363b575060008714801561363a575060008a60000151125b5b60018861364891906148d8565b61294d565b9050808361365b9190615ce2565b925082600b8960405161366e9190615ccb565b9081526020016040518091039020886020015160405161368e9190615ccb565b908152602001604051809103902060008282546136ab9190615a75565b9250508190555050505b95945050505050565b60008060005b846040015151811015613818576000856040015182815181106136ea576136e9614a2f565b5b6020026020010151602001519050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661380a57806005600060066000815480929190613761906150b2565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5080806001019150506136c4565b5060005b846040015151811015613a6d5760008560400151828151811061384257613841614a2f565b5b60200260200101519050600060018760400151516138609190614c0c565b8310156138985760648260000151876138799190615d6d565b6138839190615de5565b905080846138919190615a75565b93506138a7565b83866138a49190615ce2565b90505b60008113156139e2576138bf308360200151836122b1565b60076000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166139dd5781602001516005600060066000815480929190613930906150b2565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160076000846020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b613a5e565b806139ec90615d25565b6139f9836020015161124b565b1015613a4457613a0c826020015161124b565b81613a179190615a75565b85613a229190615a75565b9450613a3f826020015130613a3a856020015161124b565b6122b1565b613a5d565b613a5c82602001513083613a5790615d25565b6122b1565b5b5b5050808060010191505061381c565b505092915050565b8260028101928215613aa4579160200282015b82811115613aa3578235825591602001919060010190613a88565b5b509050613ab19190613ab5565b5090565b5b80821115613ace576000816000905550600101613ab6565b5090565b600081519050919050565b600082825260208201905092915050565b60005b83811015613b0c578082015181840152602081019050613af1565b60008484015250505050565b6000601f19601f8301169050919050565b6000613b3482613ad2565b613b3e8185613add565b9350613b4e818560208601613aee565b613b5781613b18565b840191505092915050565b60006020820190508181036000830152613b7c8184613b29565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613bc382613b98565b9050919050565b613bd381613bb8565b8114613bde57600080fd5b50565b600081359050613bf081613bca565b92915050565b6000819050919050565b613c0981613bf6565b8114613c1457600080fd5b50565b600081359050613c2681613c00565b92915050565b60008060408385031215613c4357613c42613b8e565b5b6000613c5185828601613be1565b9250506020613c6285828601613c17565b9150509250929050565b60008115159050919050565b613c8181613c6c565b82525050565b6000602082019050613c9c6000830184613c78565b92915050565b613cab81613bf6565b82525050565b6000602082019050613cc66000830184613ca2565b92915050565b600060208284031215613ce257613ce1613b8e565b5b6000613cf084828501613c17565b91505092915050565b600080600060608486031215613d1257613d11613b8e565b5b6000613d2086828701613be1565b9350506020613d3186828701613be1565b9250506040613d4286828701613c17565b9150509250925092565b613d5581613c6c565b8114613d6057600080fd5b50565b600081359050613d7281613d4c565b92915050565b600080600060608486031215613d9157613d90613b8e565b5b6000613d9f86828701613c17565b9350506020613db086828701613c17565b9250506040613dc186828701613d63565b9150509250925092565b600060ff82169050919050565b613de181613dcb565b82525050565b6000602082019050613dfc6000830184613dd8565b92915050565b613e0b81613bb8565b82525050565b6000602082019050613e266000830184613e02565b92915050565b600060208284031215613e4257613e41613b8e565b5b6000613e5084828501613be1565b91505092915050565b600080600060608486031215613e7257613e71613b8e565b5b6000613e8086828701613be1565b9350506020613e9186828701613c17565b9250506040613ea286828701613c17565b9150509250925092565b60008060008060808587031215613ec657613ec5613b8e565b5b6000613ed487828801613c17565b9450506020613ee587828801613be1565b9350506040613ef687828801613c17565b9250506060613f0787828801613d63565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112613f3857613f37613f13565b5b8235905067ffffffffffffffff811115613f5557613f54613f18565b5b602083019150836001820283011115613f7157613f70613f1d565b5b9250929050565b600081905082602060020282011115613f9457613f93613f1d565b5b92915050565b60008083601f840112613fb057613faf613f13565b5b8235905067ffffffffffffffff811115613fcd57613fcc613f18565b5b602083019150836001820283011115613fe957613fe8613f1d565b5b9250929050565b6000806000806000806000806000806101408b8d03121561401457614013613b8e565b5b60008b013567ffffffffffffffff81111561403257614031613b93565b5b61403e8d828e01613f22565b9a509a505060206140518d828e01613c17565b98505060406140628d828e01613f78565b97505060806140738d828e01613f78565b96505060c06140848d828e01613c17565b95505060e06140958d828e01613d63565b9450506101006140a78d828e01613d63565b9350506101208b013567ffffffffffffffff8111156140c9576140c8613b93565b5b6140d58d828e01613f9a565b92509250509295989b9194979a5092959850565b6140f281613bf6565b82525050565b600060029050919050565b600081905092915050565b6000819050919050565b600061412483836140e9565b60208301905092915050565b6000602082019050919050565b614146816140f8565b6141508184614103565b925061415b8261410e565b8060005b8381101561418c5781516141738782614118565b965061417e83614130565b92505060018101905061415f565b505050505050565b61419d81613c6c565b82525050565b60e0820160008201516141b960008501826140e9565b5060208201516141cc602085018261413d565b5060408201516141df606085018261413d565b5060608201516141f260a08501826140e9565b50608082015161420560c0850182614194565b50505050565b600081519050919050565b600082825260208201905092915050565b60006142328261420b565b61423c8185614216565b935061424c818560208601613aee565b61425581613b18565b840191505092915050565b600061024082019050614276600083018f613ca2565b8181036020830152614288818e613b29565b9050614297604083018d613e02565b6142a4606083018c613ca2565b6142b1608083018b613ca2565b6142be60a083018a6141a3565b6142cc610180830189613ca2565b6142da6101a0830188613ca2565b6142e86101c0830187613c78565b6142f66101e0830186613c78565b614304610200830185613c78565b8181036102208301526143178184614227565b90509d9c50505050505050505050505050565b6000806020838503121561434157614340613b8e565b5b600083013567ffffffffffffffff81111561435f5761435e613b93565b5b61436b85828601613f22565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6143ac81613bb8565b82525050565b6040820160008201516143c860008501826140e9565b5060208201516143db60208501826143a3565b50505050565b60006143ed83836143b2565b60408301905092915050565b6000602082019050919050565b600061441182614377565b61441b8185614382565b935061442683614393565b8060005b8381101561445757815161443e88826143e1565b9750614449836143f9565b92505060018101905061442a565b5085935050505092915050565b6000602082019050818103600083015261447e8184614406565b905092915050565b6000806040838503121561449d5761449c613b8e565b5b60006144ab85828601613be1565b92505060206144bc85828601613be1565b9150509250929050565b60008083601f8401126144dc576144db613f13565b5b8235905067ffffffffffffffff8111156144f9576144f8613f18565b5b60208301915083604082028301111561451557614514613f1d565b5b9250929050565b60008083601f84011261453257614531613f13565b5b8235905067ffffffffffffffff81111561454f5761454e613f18565b5b60208301915083602082028301111561456b5761456a613f1d565b5b9250929050565b6000806000806000806060878903121561458f5761458e613b8e565b5b600087013567ffffffffffffffff8111156145ad576145ac613b93565b5b6145b989828a016144c6565b9650965050602087013567ffffffffffffffff8111156145dc576145db613b93565b5b6145e889828a01613f22565b9450945050604087013567ffffffffffffffff81111561460b5761460a613b93565b5b61461789828a0161451c565b92509250509295509295509295565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61466382613b18565b810181811067ffffffffffffffff821117156146825761468161462b565b5b80604052505050565b6000614695613b84565b90506146a1828261465a565b919050565b600067ffffffffffffffff8211156146c1576146c061462b565b5b6146ca82613b18565b9050602081019050919050565b82818337600083830152505050565b60006146f96146f4846146a6565b61468b565b90508281526020810184848401111561471557614714614626565b5b6147208482856146d7565b509392505050565b600082601f83011261473d5761473c613f13565b5b813561474d8482602086016146e6565b91505092915050565b60006020828403121561476c5761476b613b8e565b5b600082013567ffffffffffffffff81111561478a57614789613b93565b5b61479684828501614728565b91505092915050565b600060608201905081810360008301526147b98186613b29565b90506147c86020830185613e02565b6147d56040830184613ca2565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061482457607f821691505b602082108103614837576148366147dd565b5b50919050565b7f506f6f6c20697320616c7265616479207265736f6c7665640000000000000000600082015250565b6000614873601883613add565b915061487e8261483d565b602082019050919050565b600060208201905081810360008301526148a281614866565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006148e382613bf6565b91506148ee83613bf6565b9250828201905080821115614906576149056148a9565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061494682613bf6565b915061495183613bf6565b9250826149615761496061490c565b5b828204905092915050565b600061497782613bf6565b915061498283613bf6565b9250826149925761499161490c565b5b828206905092915050565b7f506f6f6c20656e642074696d6520686173206e6f74207965742061727269766560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b60006149f9602183613add565b9150614a048261499d565b604082019050919050565b60006020820190508181036000830152614a28816149ec565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614a6982613bf6565b9150614a7483613bf6565b9250828202614a8281613bf6565b91508282048414831517614a9957614a986148a9565b5b5092915050565b6000606082019050614ab56000830186613ca2565b614ac26020830185613c78565b614acf6040830184613c78565b949350505050565b60008190508160005260206000209050919050565b60008154614af98161480c565b614b038186614216565b94506001821660008114614b1e5760018114614b3457614b67565b60ff198316865281151560200286019350614b67565b614b3d85614ad7565b60005b83811015614b5f57815481890152600182019150602081019050614b40565b808801955050505b50505092915050565b600060a082019050614b856000830188613c78565b614b926020830187613c78565b614b9f6040830186613ca2565b614bac6060830185613ca2565b8181036080830152614bbe8184614aec565b90509695505050505050565b600081519050614bd981613c00565b92915050565b600060208284031215614bf557614bf4613b8e565b5b6000614c0384828501614bca565b91505092915050565b6000614c1782613bf6565b9150614c2283613bf6565b9250828203905081811115614c3a57614c396148a9565b5b92915050565b7f524550207472616e73666572206973206e6f7420616c6c6f7765640000000000600082015250565b6000614c76601b83613add565b9150614c8182614c40565b602082019050919050565b60006020820190508181036000830152614ca581614c69565b9050919050565b6000606082019050614cc16000830186613e02565b614cce6020830185613ca2565b614cdb6040830184613ca2565b949350505050565b7f46656520697320726571756972656420746f20696e6974696174652076616c6960008201527f646174696f6e20706f6f6c000000000000000000000000000000000000000000602082015250565b6000614d3f602b83613add565b9150614d4a82614ce3565b604082019050919050565b60006020820190508181036000830152614d6e81614d32565b9050919050565b7f4475726174696f6e20697320746f6f2073686f72740000000000000000000000600082015250565b6000614dab601583613add565b9150614db682614d75565b602082019050919050565b60006020820190508181036000830152614dda81614d9e565b9050919050565b7f4475726174696f6e20697320746f6f206c6f6e67000000000000000000000000600082015250565b6000614e17601483613add565b9150614e2282614de1565b602082019050919050565b60006020820190508181036000830152614e4681614e0a565b9050919050565b7f51756f72756d2069732062656c6f77206d696e696d756d000000000000000000600082015250565b6000614e83601783613add565b9150614e8e82614e4d565b602082019050919050565b60006020820190508181036000830152614eb281614e76565b9050919050565b7f51756f72756d2069732067726561746572207468616e206f6e65000000000000600082015250565b6000614eef601a83613add565b9150614efa82614eb9565b602082019050919050565b60006020820190508181036000830152614f1e81614ee2565b9050919050565b7f57696e20726174696f2069732067726561746572207468616e206f6e65000000600082015250565b6000614f5b601d83613add565b9150614f6682614f25565b602082019050919050565b60006020820190508181036000830152614f8a81614f4e565b9050919050565b7f42696e64696e672070657263656e74206d757374206265203c3d203130300000600082015250565b6000614fc7601e83613add565b9150614fd282614f91565b602082019050919050565b60006020820190508181036000830152614ff681614fba565b9050919050565b600081905092915050565b60006150148385614ffd565b93506150218385846146d7565b82840190509392505050565b600061503a828486615008565b91508190509392505050565b7f54617267657420706f7374206e6f7420666f756e640000000000000000000000600082015250565b600061507c601583613add565b915061508782615046565b602082019050919050565b600060208201905081810360008301526150ab8161506f565b9050919050565b60006150bd82613bf6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036150ef576150ee6148a9565b5b600182019050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026151677fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261512a565b615171868361512a565b95508019841693508086168417925050509392505050565b6000819050919050565b60006151ae6151a96151a484613bf6565b615189565b613bf6565b9050919050565b6000819050919050565b6151c883615193565b6151dc6151d4826151b5565b848454615137565b825550505050565b600090565b6151f16151e4565b6151fc8184846151bf565b505050565b5b81811015615220576152156000826151e9565b600181019050615202565b5050565b601f8211156152655761523681615105565b61523f8461511a565b8101602085101561524e578190505b61526261525a8561511a565b830182615201565b50505b505050565b600082821c905092915050565b60006152886000198460080261526a565b1980831691505092915050565b60006152a18383615277565b9150826002028217905092915050565b6152bb83836150fa565b67ffffffffffffffff8111156152d4576152d361462b565b5b6152de825461480c565b6152e9828285615224565b6000601f8311600181146153185760008415615306578287013590505b6153108582615295565b865550615378565b601f19841661532686615105565b60005b8281101561534e57848901358255600182019150602085019450602081019050615329565b8683101561536b5784890135615367601f891682615277565b8355505b6001600288020188555050505b50505050505050565b600082905092915050565b601f8211156153cd5761539e81614ad7565b6153a78461511a565b810160208510156153b6578190505b6153ca6153c28561511a565b830182615201565b50505b505050565b6153dc8383615381565b67ffffffffffffffff8111156153f5576153f461462b565b5b6153ff825461480c565b61540a82828561538c565b6000601f8311600181146154395760008415615427578287013590505b6154318582615295565b865550615499565b601f19841661544786614ad7565b60005b8281101561546f5784890135825560018201915060208501945060208101905061544a565b8683101561548c5784890135615488601f891682615277565b8355505b6001600288020188555050505b50505050505050565b7f506f7374206d75737420696e636c756465206174206c65617374206f6e65206160008201527f7574686f72000000000000000000000000000000000000000000000000000000602082015250565b60006154fe602583613add565b9150615509826154a2565b604082019050919050565b6000602082019050818103600083015261552d816154f1565b9050919050565b7f4120706f73742077697468207468697320636f6e74656e74496420616c72656160008201527f6479206578697374730000000000000000000000000000000000000000000000602082015250565b6000615590602983613add565b915061559b82615534565b604082019050919050565b600060208201905081810360008301526155bf81615583565b9050919050565b600081356155d381613c00565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff615615846155dc565b9350801983169250808416831791505092915050565b61563482615193565b615647615640826151b5565b83546155e9565b8255505050565b6000813561565b81613bca565b80915050919050565b600073ffffffffffffffffffffffffffffffffffffffff615684846155dc565b9350801983169250808416831791505092915050565b60006156b56156b06156ab84613b98565b615189565b613b98565b9050919050565b60006156c78261569a565b9050919050565b60006156d9826156bc565b9050919050565b6000819050919050565b6156f3826156ce565b6157066156ff826156e0565b8354615664565b8255505050565b60008101600083018061571f816155c6565b905061572b818461562b565b5050506001810160208301806157408161564e565b905061574c81846156ea565b5050505050565b61575d828261570d565b5050565b7f417574686f722077656967687473206d7573742073756d20746f203130302500600082015250565b6000615797601f83613add565b91506157a282615761565b602082019050919050565b600060208201905081810360008301526157c68161578a565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126157f8576157f76157cd565b5b80830191505092915050565b6000819050919050565b61581781615804565b811461582257600080fd5b50565b600081356158328161580e565b80915050919050565b600061585661585161584c84615804565b615189565b615804565b9050919050565b6000819050919050565b6158708261583b565b61588361587c8261585d565b83546155e9565b8255505050565b600080833560016020038436030381126158a7576158a66157cd565b5b80840192508235915067ffffffffffffffff8211156158c9576158c86157d2565b5b6020830192506001820236038313156158e5576158e46157d7565b5b509250929050565b6158f88383836152b1565b505050565b60008101600083018061590f81615825565b905061591b8184615867565b5050506001810160208301615930818561588a565b61593b8183866158ed565b505050505050565b61594d82826158fd565b5050565b7f45616368206369746174696f6e20776569676874206d757374206265203e3d2060008201527f2d31303000000000000000000000000000000000000000000000000000000000602082015250565b60006159ad602483613add565b91506159b882615951565b604082019050919050565b600060208201905081810360008301526159dc816159a0565b9050919050565b7f45616368206369746174696f6e20776569676874206d757374206265203c3d2060008201527f3130300000000000000000000000000000000000000000000000000000000000602082015250565b6000615a3f602383613add565b9150615a4a826159e3565b604082019050919050565b60006020820190508181036000830152615a6e81615a32565b9050919050565b6000615a8082615804565b9150615a8b83615804565b925082820190508281121560008312168382126000841215161715615ab357615ab26148a9565b5b92915050565b7f53756d206f6620706f736974697665206369746174696f6e73206d757374206260008201527f65203c3d20313030000000000000000000000000000000000000000000000000602082015250565b6000615b15602883613add565b9150615b2082615ab9565b604082019050919050565b60006020820190508181036000830152615b4481615b08565b9050919050565b7f53756d206f66206e65676174697665206369746174696f6e73206d757374206260008201527f65203e3d202d3130300000000000000000000000000000000000000000000000602082015250565b6000615ba7602983613add565b9150615bb282615b4b565b604082019050919050565b60006020820190508181036000830152615bd681615b9a565b9050919050565b6000615be98385613add565b9350615bf68385846146d7565b615bff83613b18565b840190509392505050565b60006020820190508181036000830152615c25818486615bdd565b90509392505050565b7f506f6f6c20656e642074696d6520686173207061737365640000000000000000600082015250565b6000615c64601883613add565b9150615c6f82615c2e565b602082019050919050565b60006020820190508181036000830152615c9381615c57565b9050919050565b6000615ca582613ad2565b615caf8185614ffd565b9350615cbf818560208601613aee565b80840191505092915050565b6000615cd78284615c9a565b915081905092915050565b6000615ced82615804565b9150615cf883615804565b9250828203905081811260008412168282136000851215161715615d1f57615d1e6148a9565b5b92915050565b6000615d3082615804565b91507f80000000000000000000000000000000000000000000000000000000000000008203615d6257615d616148a9565b5b816000039050919050565b6000615d7882615804565b9150615d8383615804565b9250828202615d9181615804565b91507f80000000000000000000000000000000000000000000000000000000000000008414600084121615615dc957615dc86148a9565b5b8282058414831517615dde57615ddd6148a9565b5b5092915050565b6000615df082615804565b9150615dfb83615804565b925082615e0b57615e0a61490c565b5b600160000383147f800000000000000000000000000000000000000000000000000000000000000083141615615e4457615e436148a9565b5b828205905092915050565b7f4c65616368696e672066726f6d20696e63696e657261746f7220697320666f7260008201527f62696464656e0000000000000000000000000000000000000000000000000000602082015250565b6000615eab602683613add565b9150615eb682615e4f565b604082019050919050565b60006020820190508181036000830152615eda81615e9e565b905091905056fea264697066735822122048c08bdaea49553e2208fbc1bf2e1fde118c383db153ba6213c58f673267d60964736f6c63430008180033", + "bytecode": "0x60806040526003600c556040518060400160405280600160ff168152602001600a60ff16815250600f90600262000038929190620000df565b503480156200004657600080fd5b506040518060400160405280600a81526020017f52657075746174696f6e000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f52455000000000000000000000000000000000000000000000000000000000008152508160039081620000c49190620003c2565b508060049081620000d69190620003c2565b505050620004a9565b826002810192821562000116579160200282015b8281111562000115578251829060ff16905591602001919060010190620000f3565b5b50905062000125919062000129565b5090565b5b80821115620001445760008160009055506001016200012a565b5090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620001ca57607f821691505b602082108103620001e057620001df62000182565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200024a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200020b565b6200025686836200020b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620002a36200029d62000297846200026e565b62000278565b6200026e565b9050919050565b6000819050919050565b620002bf8362000282565b620002d7620002ce82620002aa565b84845462000218565b825550505050565b600090565b620002ee620002df565b620002fb818484620002b4565b505050565b5b81811015620003235762000317600082620002e4565b60018101905062000301565b5050565b601f82111562000372576200033c81620001e6565b6200034784620001fb565b8101602085101562000357578190505b6200036f6200036685620001fb565b83018262000300565b50505b505050565b600082821c905092915050565b6000620003976000198460080262000377565b1980831691505092915050565b6000620003b2838362000384565b9150826002028217905092915050565b620003cd8262000148565b67ffffffffffffffff811115620003e957620003e862000153565b5b620003f58254620001b1565b6200040282828562000327565b600060209050601f8311600181146200043a576000841562000425578287015190505b620004318582620003a4565b865550620004a1565b601f1984166200044a86620001e6565b60005b8281101562000474578489015182556001820191506020850194506020810190506200044d565b8683101562000494578489015162000490601f89168262000384565b8355505b6001600288020188555050505b505050505050565b615f4780620004b96000396000f3fe60806040526004361061014b5760003560e01c806370a08231116100b6578063a23362791161006f578063a2336279146104e7578063a9059cbb1461052f578063da66863a1461056c578063dd62ed3e146105a9578063e5b4d827146105e6578063f8300fca1461060f5761014b565b806370a08231146103ac57806388380274146103e957806395d89b4114610426578063975762b3146104515780639fbe7c731461047a578063a230c524146104aa5761014b565b806323b872dd1161010857806323b872dd146102765780632d17c062146102b3578063313ce567146102dc57806350cde8ef146103075780635daf08ca14610344578063642b5bfb146103815761014b565b806306fdde0314610150578063095ea7b31461017b57806311aee380146101b857806317906c2e146101e357806317c182171461020e57806318160ddd1461024b575b600080fd5b34801561015c57600080fd5b5061016561064e565b6040516101729190613b6c565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190613c36565b6106e0565b6040516101af9190613c91565b60405180910390f35b3480156101c457600080fd5b506101cd610703565b6040516101da9190613cbb565b60405180910390f35b3480156101ef57600080fd5b506101f8610709565b6040516102059190613cbb565b60405180910390f35b34801561021a57600080fd5b5061023560048036038101906102309190613cd6565b61070f565b6040516102429190613c91565b60405180910390f35b34801561025757600080fd5b506102606110ed565b60405161026d9190613cbb565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190613d03565b6110f7565b6040516102aa9190613c91565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d59190613d82565b611134565b005b3480156102e857600080fd5b506102f161115d565b6040516102fe9190613df1565b60405180910390f35b34801561031357600080fd5b5061032e60048036038101906103299190613cd6565b611166565b60405161033b9190613b6c565b60405180910390f35b34801561035057600080fd5b5061036b60048036038101906103669190613cd6565b611212565b6040516103789190613e1b565b60405180910390f35b34801561038d57600080fd5b50610396611245565b6040516103a39190613cbb565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce9190613e36565b61124b565b6040516103e09190613cbb565b60405180910390f35b3480156103f557600080fd5b50610410600480360381019061040b9190613e63565b611293565b60405161041d9190613c91565b60405180910390f35b34801561043257600080fd5b5061043b61131a565b6040516104489190613b6c565b60405180910390f35b34801561045d57600080fd5b5061047860048036038101906104739190613eb6565b6113ac565b005b610494600480360381019061048f9190613ffa565b6113e1565b6040516104a19190613cbb565b60405180910390f35b3480156104b657600080fd5b506104d160048036038101906104cc9190613e36565b61189b565b6040516104de9190613c91565b60405180910390f35b3480156104f357600080fd5b5061050e60048036038101906105099190613cd6565b6118bb565b6040516105269c9b9a9998979695949392919061426a565b60405180910390f35b34801561053b57600080fd5b5061055660048036038101906105519190613c36565b611b35565b6040516105639190613c91565b60405180910390f35b34801561057857600080fd5b50610593600480360381019061058e9190614334565b611b72565b6040516105a0919061446e565b60405180910390f35b3480156105b557600080fd5b506105d060048036038101906105cb9190614490565b611c5b565b6040516105dd9190613cbb565b60405180910390f35b3480156105f257600080fd5b5061060d6004803603810190610608919061457c565b611ce2565b005b34801561061b57600080fd5b5061063660048036038101906106319190614760565b6121b5565b604051610645939291906147a9565b60405180910390f35b60606003805461065d90614816565b80601f016020809104026020016040519081016040528092919081815260200182805461068990614816565b80156106d65780601f106106ab576101008083540402835291602001916106d6565b820191906000526020600020905b8154815290600101906020018083116106b957829003601f168201915b5050505050905090565b6000806106eb61229d565b90506106f88185856122a5565b600191505092915050565b60065481565b600a5481565b600080600d600084815260200190815260200160002090506000151581600f0160009054906101000a900460ff1615151461077f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077690614893565b60405180910390fd5b600080600080600090505b84600501548110156107fb5784600401600082815260200190815260200160002091508160010160009054906101000a900460ff16156107db578160020154846107d491906148e2565b93506107ee565b8160020154836107eb91906148e2565b92505b808060010191505061078a565b506002846003015461080d9190614945565b8361081891906148e2565b92506002846003015461082b9190614945565b8261083691906148e2565b915060006002856003015461084b9190614976565b146108605760018361085d91906148e2565b92505b83600e015442118061088357506108756110ed565b828461088191906148e2565b145b6108c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b990614a19565b60405180910390fd5b836006016001016000600281106108dc576108db614a39565b5b01546108e66110ed565b6108f09190614a68565b82846108fc91906148e2565b8560060160010160016002811061091657610915614a39565b5b01546109229190614a68565b11610a5257600184600f0160006101000a81548160ff0219169083151502179055507fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de818660008060405161097893929190614aaa565b60405180910390a183600f0160029054906101000a900460ff1615610a45578360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d58660008686896010016040518663ffffffff1660e01b8152600401610a00959493929190614b7a565b6020604051808303816000875af1158015610a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a439190614be9565b505b60009450505050506110e8565b83600601600301600060028110610a6c57610a6b614a39565b5b01548284610a7a91906148e2565b610a849190614a68565b84600601600301600160028110610a9e57610a9d614a39565b5b015484610aab9190614a68565b10159450600184600f0160006101000a81548160ff0219169083151502179055508484600f0160016101000a81548160ff0219169083151502179055507fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de8186866001604051610b1c93929190614aaa565b60405180910390a1600085610b315782610b33565b835b905060008060005b8760050154811015610c3b5787600401600082815260200190815260200160002094508460010160009054906101000a900460ff16151589151514610c2e576000606489600601600501548760020154610b959190614a68565b610b9f9190614945565b90508860060160060160009054906101000a900460ff1615610bfd57610bea8660030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630836122b7565b8084610bf691906148e2565b9350610c2c565b610c2b8660030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826124dc565b5b505b8080600101915050610b3b565b508715610e395760028760030154610c539190614945565b82610c5e91906148e2565b915060005b8760050154811015610d495787600401600082815260200190815260200160002094508760060160060160009054906101000a900460ff168015610cbb57508460010160009054906101000a900460ff161515891515145b15610d3c5760006064896006016005015486886002015487610cdd9190614a68565b610ce79190614945565b610cf19190614a68565b610cfb9190614945565b90508083610d0991906148e2565b9250610d3a308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836122b7565b505b8080600101915050610c63565b5060008183610d589190614c16565b9050600060028960030154610d6d9190614976565b14610d8257600181610d7f91906148e2565b90505b610e33886001018054610d9490614816565b80601f0160208091040260200160405190810160405280929190818152602001828054610dc090614816565b8015610e0d5780601f10610de257610100808354040283529160200191610e0d565b820191906000526020600020905b815481529060010190602001808311610df057829003601f168201915b50505050508260028b60030154610e249190614945565b610e2e91906148e2565b61255e565b50610f51565b866003015482610e4991906148e2565b915060005b8760050154811015610f4f5787600401600082815260200190815260200160002094508760060160060160009054906101000a900460ff168015610ea657508460010160009054906101000a900460ff161515891515145b15610f425760006064896006016005015460028b60030154610ec89190614945565b87610ed39190614c16565b886002015487610ee39190614a68565b610eed9190614945565b610ef79190614a68565b610f019190614945565b90508083610f0f91906148e2565b9250610f40308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836122b7565b505b8080600101915050610e4e565b505b60005b60065481101561101a5760006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000610fa06110ed565b610fa98361124b565b8b600d0154610fb89190614a68565b610fc29190614945565b90508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561100a573d6000803e3d6000fd5b5050508080600101915050610f54565b5086600f0160029054906101000a900460ff16156110e0578660020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d589600189898c6010016040518663ffffffff1660e01b815260040161109b959493929190614b7a565b6020604051808303816000875af11580156110ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110de9190614be9565b505b505050505050505b919050565b6000600254905090565b60006040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112b90614c96565b60405180910390fd5b6000600d6000858152602001908152602001600020905061115781338585612570565b50505050565b60006009905090565b6009818154811061117657600080fd5b90600052602060002001600091509050805461119190614816565b80601f01602080910402602001604051908101604052809291908181526020018280546111bd90614816565b801561120a5780601f106111df5761010080835404028352916020019161120a565b820191906000526020600020905b8154815290600101906020018083116111ed57829003601f168201915b505050505081565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006112a03385856122a5565b8373ffffffffffffffffffffffffffffffffffffffff1663216ed6ad3385856040518463ffffffff1660e01b81526004016112dd93929190614cb6565b600060405180830381600087803b1580156112f757600080fd5b505af115801561130b573d6000803e3d6000fd5b50505050600190509392505050565b60606004805461132990614816565b80601f016020809104026020016040519081016040528092919081815260200182805461135590614816565b80156113a25780601f10611377576101008083540402835291602001916113a2565b820191906000526020600020905b81548152906001019060200180831161138557829003601f168201915b5050505050905090565b6000600d600086815260200190815260200160002090506113ce843385612666565b6113da81858585612570565b5050505050565b6000803411611425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141c90614d5f565b60405180910390fd5b6001891015611469576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146090614dcb565b60405180910390fd5b651cae8c13e0008911156114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a990614e37565b60405180910390fd5b876001600281106114c6576114c5614a39565b5b6020020135600f6000600281106114e0576114df614a39565b5b01546114ec9190614a68565b88600060028110611500576114ff614a39565b5b6020020135600f60016002811061151a57611519614a39565b5b01546115269190614a68565b1015611567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155e90614ea3565b60405180910390fd5b8760016002811061157b5761157a614a39565b5b60200201358860006002811061159457611593614a39565b5b602002013511156115da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d190614f0f565b60405180910390fd5b866001600281106115ee576115ed614a39565b5b60200201358760006002811061160757611606614a39565b5b6020020135111561164d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164490614f7b565b60405180910390fd5b6064861115611691576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168890614fe7565b60405180910390fd5b600060088c8c6040516116a5929190615037565b9081526020016040518091039020905060008160020180549050036116ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f69061509c565b60405180910390fd5b600e6000815480929190611712906150bc565b9190505591506000600d60008481526020019081526020016000209050338160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508c8c8260010191826117859291906152bb565b503481600d018190555089816006016001019060026117a5929190613a7f565b5088816006016003019060026117bc929190613a7f565b50878160060160050181905550868160060160060160006101000a81548160ff0219169083151502179055508a81600601600001819055508a4261180091906148e2565b81600e01819055508281600001819055508581600f0160026101000a81548160ff02191690831515021790555084848260100191826118409291906153dc565b5061184b30346126fa565b3481600301819055507f6e5c598b821d7fa8550e5fea58ab6e27c59e1cbe1df75a8591aa0c453b49e10a836040516118839190613cbb565b60405180910390a150509a9950505050505050505050565b60076020528060005260406000206000915054906101000a900460ff1681565b600d6020528060005260406000206000915090508060000154908060010180546118e490614816565b80601f016020809104026020016040519081016040528092919081815260200182805461191090614816565b801561195d5780601f106119325761010080835404028352916020019161195d565b820191906000526020600020905b81548152906001019060200180831161194057829003601f168201915b5050505050908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003015490806005015490806006016040518060a001604052908160008201548152602001600182016002806020026040519081016040528092919082600280156119ea576020028201915b8154815260200190600101908083116119d6575b5050505050815260200160038201600280602002604051908101604052809291908260028015611a2f576020028201915b815481526020019060010190808311611a1b575b50505050508152602001600582015481526020016006820160009054906101000a900460ff1615151515815250509080600d01549080600e01549080600f0160009054906101000a900460ff169080600f0160019054906101000a900460ff169080600f0160029054906101000a900460ff1690806010018054611ab290614816565b80601f0160208091040260200160405190810160405280929190818152602001828054611ade90614816565b8015611b2b5780601f10611b0057610100808354040283529160200191611b2b565b820191906000526020600020905b815481529060010190602001808311611b0e57829003601f168201915b505050505090508c565b60006040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6990614c96565b60405180910390fd5b6060600060088484604051611b88929190615037565b9081526020016040518091039020905080600201805480602002602001604051908101604052809291908181526020016000905b82821015611c4e5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190611bbc565b5050505091505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008686905011611d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1f9061551e565b60405180910390fd5b600a6000815480929190611d3b906150bc565b91905055506009848490918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182611d7d9291906152bb565b50600060088585604051611d92929190615037565b908152602001604051809103902090506000816002018054905014611dec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de3906155b0565b60405180910390fd5b338160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508484826000019182611e429291906152bb565b50600080600090505b88889050811015611ee157888882818110611e6957611e68614a39565b5b9050604002016000013582611e7e91906148e2565b915082600201898983818110611e9757611e96614a39565b5b90506040020190806001815401808255809150506001900390600052602060002090600202016000909190919091508181611ed2919061575d565b50508080600101915050611e4b565b50620f42408114611f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1e906157dd565b60405180910390fd5b60005b84849050811015611fa25782600301858583818110611f4c57611f4b614a39565b5b9050602002810190611f5e919061580c565b90806001815401808255809150506001900390600052602060002090600202016000909190919091508181611f939190615973565b50508080600101915050611f2a565b5060008060005b84600301805490508110156120c6576000856003018281548110611fd057611fcf614a39565b5b90600052602060002090600202016000015490507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0bdc0811215612047576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203e906159f3565b60405180910390fd5b620f424081131561208d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208490615a85565b60405180910390fd5b60008113156120a95780846120a29190615aa5565b93506120b8565b80836120b59190615aa5565b92505b508080600101915050611fa9565b50620f424082131561210d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210490615b5b565b60405180910390fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0bdc0811215612170576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216790615bed565b60405180910390fd5b7fbd6277baf8ced6ab6543a1aef164635fc2bde1ba962d39d8a0fd81a5af24972788886040516121a1929190615c3a565b60405180910390a150505050505050505050565b6008818051602081018201805184825260208301602085012081835280955050505050506000915090508060000180546121ee90614816565b80601f016020809104026020016040519081016040528092919081815260200182805461221a90614816565b80156122675780601f1061223c57610100808354040283529160200191612267565b820191906000526020600020905b81548152906001019060200180831161224a57829003601f168201915b5050505050908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040154905083565b600033905090565b6122b2838383600161277c565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123095780600260008282546122fd91906148e2565b925050819055506123dc565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612395578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161238c93929190614cb6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124255780600260008282540392505081905550612472565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124cf9190613cbb565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361254e5760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016125459190613e1b565b60405180910390fd5b61255a826000836122b7565b5050565b61256b8282600080612953565b505050565b83600e01544211156125b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ae90615caa565b60405180910390fd5b60008460050160008154809291906125ce906150bc565b91905055905060008560040160008381526020019081526020016000209050848160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828160010160006101000a81548160ff021916908315150217905550838160020181905550818160000181905550505050505050565b60006126728484611c5b565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146126f457818110156126e4578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016126db93929190614cb6565b60405180910390fd5b6126f38484848403600061277c565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361276c5760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016127639190613e1b565b60405180910390fd5b612778600083836122b7565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036127ee5760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016127e59190613e1b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128605760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016128579190613e1b565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550801561294d578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516129449190613cbb565b60405180910390a35b50505050565b6000600c548210612966578390506134f3565b60006008866040516129789190615cfb565b9081526020016040518091039020905060008160020180549050036129a057849150506134f3565b60005b8160030180549050811015612ad45760008260030182815481106129ca576129c9614a39565b5b9060005260206000209060020201600001541215612ac757612ab9878360030183815481106129fc576129fb614a39565b5b906000526020600020906002020160405180604001604052908160008201548152602001600182018054612a2f90614816565b80601f0160208091040260200160405190810160405280929190818152602001828054612a5b90614816565b8015612aa85780601f10612a7d57610100808354040283529160200191612aa8565b820191906000526020600020905b815481529060010190602001808311612a8b57829003601f168201915b5050505050815250508888886134fb565b86612ac49190615d12565b95505b80806001019150506129a3565b5060005b8160030180549050811015612c09576000826003018281548110612aff57612afe614a39565b5b9060005260206000209060020201600001541315612bfc57612bee87836003018381548110612b3157612b30614a39565b5b906000526020600020906002020160405180604001604052908160008201548152602001600182018054612b6490614816565b80601f0160208091040260200160405190810160405280929190818152602001828054612b9090614816565b8015612bdd5780601f10612bb257610100808354040283529160200191612bdd565b820191906000526020600020905b815481529060010190602001808311612bc057829003601f168201915b5050505050815250508888886134fb565b86612bf99190615d12565b95505b8080600101915050612ad8565b506000851315612ef557612ed4816040518060a0016040529081600082018054612c3290614816565b80601f0160208091040260200160405190810160405280929190818152602001828054612c5e90614816565b8015612cab5780601f10612c8057610100808354040283529160200191612cab565b820191906000526020600020905b815481529060010190602001808311612c8e57829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015612dc15783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190612d2f565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015612ebc578382906000526020600020906002020160405180604001604052908160008201548152602001600182018054612e2b90614816565b80601f0160208091040260200160405190810160405280929190818152602001828054612e5790614816565b8015612ea45780601f10612e7957610100808354040283529160200191612ea4565b820191906000526020600020905b815481529060010190602001808311612e8757829003601f168201915b50505050508152505081526020019060010190612dee565b505050508152602001600482015481525050866136c6565b5084816004016000828254612ee991906148e2565b925050819055506134f1565b6000858260040154612f079190615aa5565b126131f8576131cd816040518060a0016040529081600082018054612f2b90614816565b80601f0160208091040260200160405190810160405280929190818152602001828054612f5790614816565b8015612fa45780601f10612f7957610100808354040283529160200191612fa4565b820191906000526020600020905b815481529060010190602001808311612f8757829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b828210156130ba5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190613028565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156131b557838290600052602060002090600202016040518060400160405290816000820154815260200160018201805461312490614816565b80601f016020809104026020016040519081016040528092919081815260200182805461315090614816565b801561319d5780601f106131725761010080835404028352916020019161319d565b820191906000526020600020905b81548152906001019060200180831161318057829003601f168201915b505050505081525050815260200190600101906130e7565b505050508152602001600482015481525050866136c6565b9150846131d990615d55565b8160040160008282546131ec9190614c16565b925050819055506134f0565b8481600401546132089190615aa5565b91506134d8816040518060a001604052908160008201805461322990614816565b80601f016020809104026020016040519081016040528092919081815260200182805461325590614816565b80156132a25780601f10613277576101008083540402835291602001916132a2565b820191906000526020600020905b81548152906001019060200180831161328557829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b828210156133b85783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190613326565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156134b357838290600052602060002090600202016040518060400160405290816000820154815260200160018201805461342290614816565b80601f016020809104026020016040519081016040528092919081815260200182805461344e90614816565b801561349b5780601f106134705761010080835404028352916020019161349b565b820191906000526020600020905b81548152906001019060200180831161347e57829003601f168201915b505050505081525050815260200190600101906133e5565b50505050815260200160048201548152505082600401546134d390615d55565b6136c6565b826134e39190615aa5565b9150600081600401819055505b5b505b949350505050565b6000620f42408560000151856135119190615d9d565b61351b9190615e15565b905060008560200151510361357d57600081121561356e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161356590615ef1565b60405180910390fd5b61357830826124dc565b6136bd565b6000600b8760405161358f9190615cfb565b908152602001604051809103902086602001516040516135af9190615cfb565b9081526020016040518091039020549050831561361c5760008212156135f757806135d990615d55565b82136135ee57806135e990615d55565b6135f0565b815b915061361b565b8061360190615d55565b8212613616578061361190615d55565b613618565b815b91505b5b600061365587602001518487806136435750600087148015613642575060008a60000151125b5b60018861365091906148e2565b612953565b905080836136639190615d12565b925082600b896040516136769190615cfb565b908152602001604051809103902088602001516040516136969190615cfb565b908152602001604051809103902060008282546136b39190615aa5565b9250508190555050505b95945050505050565b60008060005b846040015151811015613820576000856040015182815181106136f2576136f1614a39565b5b6020026020010151602001519050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661381257806005600060066000815480929190613769906150bc565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5080806001019150506136cc565b5060005b846040015151811015613a775760008560400151828151811061384a57613849614a39565b5b60200260200101519050600060018760400151516138689190614c16565b8310156138a257620f42408260000151876138839190615d9d565b61388d9190615e15565b9050808461389b9190615aa5565b93506138b1565b83866138ae9190615d12565b90505b60008113156139ec576138c9308360200151836122b7565b60076000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166139e7578160200151600560006006600081548092919061393a906150bc565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160076000846020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b613a68565b806139f690615d55565b613a03836020015161124b565b1015613a4e57613a16826020015161124b565b81613a219190615aa5565b85613a2c9190615aa5565b9450613a49826020015130613a44856020015161124b565b6122b7565b613a67565b613a6682602001513083613a6190615d55565b6122b7565b5b5b50508080600101915050613824565b505092915050565b8260028101928215613aae579160200282015b82811115613aad578235825591602001919060010190613a92565b5b509050613abb9190613abf565b5090565b5b80821115613ad8576000816000905550600101613ac0565b5090565b600081519050919050565b600082825260208201905092915050565b60005b83811015613b16578082015181840152602081019050613afb565b60008484015250505050565b6000601f19601f8301169050919050565b6000613b3e82613adc565b613b488185613ae7565b9350613b58818560208601613af8565b613b6181613b22565b840191505092915050565b60006020820190508181036000830152613b868184613b33565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613bcd82613ba2565b9050919050565b613bdd81613bc2565b8114613be857600080fd5b50565b600081359050613bfa81613bd4565b92915050565b6000819050919050565b613c1381613c00565b8114613c1e57600080fd5b50565b600081359050613c3081613c0a565b92915050565b60008060408385031215613c4d57613c4c613b98565b5b6000613c5b85828601613beb565b9250506020613c6c85828601613c21565b9150509250929050565b60008115159050919050565b613c8b81613c76565b82525050565b6000602082019050613ca66000830184613c82565b92915050565b613cb581613c00565b82525050565b6000602082019050613cd06000830184613cac565b92915050565b600060208284031215613cec57613ceb613b98565b5b6000613cfa84828501613c21565b91505092915050565b600080600060608486031215613d1c57613d1b613b98565b5b6000613d2a86828701613beb565b9350506020613d3b86828701613beb565b9250506040613d4c86828701613c21565b9150509250925092565b613d5f81613c76565b8114613d6a57600080fd5b50565b600081359050613d7c81613d56565b92915050565b600080600060608486031215613d9b57613d9a613b98565b5b6000613da986828701613c21565b9350506020613dba86828701613c21565b9250506040613dcb86828701613d6d565b9150509250925092565b600060ff82169050919050565b613deb81613dd5565b82525050565b6000602082019050613e066000830184613de2565b92915050565b613e1581613bc2565b82525050565b6000602082019050613e306000830184613e0c565b92915050565b600060208284031215613e4c57613e4b613b98565b5b6000613e5a84828501613beb565b91505092915050565b600080600060608486031215613e7c57613e7b613b98565b5b6000613e8a86828701613beb565b9350506020613e9b86828701613c21565b9250506040613eac86828701613c21565b9150509250925092565b60008060008060808587031215613ed057613ecf613b98565b5b6000613ede87828801613c21565b9450506020613eef87828801613beb565b9350506040613f0087828801613c21565b9250506060613f1187828801613d6d565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112613f4257613f41613f1d565b5b8235905067ffffffffffffffff811115613f5f57613f5e613f22565b5b602083019150836001820283011115613f7b57613f7a613f27565b5b9250929050565b600081905082602060020282011115613f9e57613f9d613f27565b5b92915050565b60008083601f840112613fba57613fb9613f1d565b5b8235905067ffffffffffffffff811115613fd757613fd6613f22565b5b602083019150836001820283011115613ff357613ff2613f27565b5b9250929050565b6000806000806000806000806000806101408b8d03121561401e5761401d613b98565b5b60008b013567ffffffffffffffff81111561403c5761403b613b9d565b5b6140488d828e01613f2c565b9a509a5050602061405b8d828e01613c21565b985050604061406c8d828e01613f82565b975050608061407d8d828e01613f82565b96505060c061408e8d828e01613c21565b95505060e061409f8d828e01613d6d565b9450506101006140b18d828e01613d6d565b9350506101208b013567ffffffffffffffff8111156140d3576140d2613b9d565b5b6140df8d828e01613fa4565b92509250509295989b9194979a5092959850565b6140fc81613c00565b82525050565b600060029050919050565b600081905092915050565b6000819050919050565b600061412e83836140f3565b60208301905092915050565b6000602082019050919050565b61415081614102565b61415a818461410d565b925061416582614118565b8060005b8381101561419657815161417d8782614122565b96506141888361413a565b925050600181019050614169565b505050505050565b6141a781613c76565b82525050565b60e0820160008201516141c360008501826140f3565b5060208201516141d66020850182614147565b5060408201516141e96060850182614147565b5060608201516141fc60a08501826140f3565b50608082015161420f60c085018261419e565b50505050565b600081519050919050565b600082825260208201905092915050565b600061423c82614215565b6142468185614220565b9350614256818560208601613af8565b61425f81613b22565b840191505092915050565b600061024082019050614280600083018f613cac565b8181036020830152614292818e613b33565b90506142a1604083018d613e0c565b6142ae606083018c613cac565b6142bb608083018b613cac565b6142c860a083018a6141ad565b6142d6610180830189613cac565b6142e46101a0830188613cac565b6142f26101c0830187613c82565b6143006101e0830186613c82565b61430e610200830185613c82565b8181036102208301526143218184614231565b90509d9c50505050505050505050505050565b6000806020838503121561434b5761434a613b98565b5b600083013567ffffffffffffffff81111561436957614368613b9d565b5b61437585828601613f2c565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6143b681613bc2565b82525050565b6040820160008201516143d260008501826140f3565b5060208201516143e560208501826143ad565b50505050565b60006143f783836143bc565b60408301905092915050565b6000602082019050919050565b600061441b82614381565b614425818561438c565b93506144308361439d565b8060005b8381101561446157815161444888826143eb565b975061445383614403565b925050600181019050614434565b5085935050505092915050565b600060208201905081810360008301526144888184614410565b905092915050565b600080604083850312156144a7576144a6613b98565b5b60006144b585828601613beb565b92505060206144c685828601613beb565b9150509250929050565b60008083601f8401126144e6576144e5613f1d565b5b8235905067ffffffffffffffff81111561450357614502613f22565b5b60208301915083604082028301111561451f5761451e613f27565b5b9250929050565b60008083601f84011261453c5761453b613f1d565b5b8235905067ffffffffffffffff81111561455957614558613f22565b5b60208301915083602082028301111561457557614574613f27565b5b9250929050565b6000806000806000806060878903121561459957614598613b98565b5b600087013567ffffffffffffffff8111156145b7576145b6613b9d565b5b6145c389828a016144d0565b9650965050602087013567ffffffffffffffff8111156145e6576145e5613b9d565b5b6145f289828a01613f2c565b9450945050604087013567ffffffffffffffff81111561461557614614613b9d565b5b61462189828a01614526565b92509250509295509295509295565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61466d82613b22565b810181811067ffffffffffffffff8211171561468c5761468b614635565b5b80604052505050565b600061469f613b8e565b90506146ab8282614664565b919050565b600067ffffffffffffffff8211156146cb576146ca614635565b5b6146d482613b22565b9050602081019050919050565b82818337600083830152505050565b60006147036146fe846146b0565b614695565b90508281526020810184848401111561471f5761471e614630565b5b61472a8482856146e1565b509392505050565b600082601f83011261474757614746613f1d565b5b81356147578482602086016146f0565b91505092915050565b60006020828403121561477657614775613b98565b5b600082013567ffffffffffffffff81111561479457614793613b9d565b5b6147a084828501614732565b91505092915050565b600060608201905081810360008301526147c38186613b33565b90506147d26020830185613e0c565b6147df6040830184613cac565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061482e57607f821691505b602082108103614841576148406147e7565b5b50919050565b7f506f6f6c20697320616c7265616479207265736f6c7665640000000000000000600082015250565b600061487d601883613ae7565b915061488882614847565b602082019050919050565b600060208201905081810360008301526148ac81614870565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006148ed82613c00565b91506148f883613c00565b92508282019050808211156149105761490f6148b3565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061495082613c00565b915061495b83613c00565b92508261496b5761496a614916565b5b828204905092915050565b600061498182613c00565b915061498c83613c00565b92508261499c5761499b614916565b5b828206905092915050565b7f506f6f6c20656e642074696d6520686173206e6f74207965742061727269766560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a03602183613ae7565b9150614a0e826149a7565b604082019050919050565b60006020820190508181036000830152614a32816149f6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614a7382613c00565b9150614a7e83613c00565b9250828202614a8c81613c00565b91508282048414831517614aa357614aa26148b3565b5b5092915050565b6000606082019050614abf6000830186613cac565b614acc6020830185613c82565b614ad96040830184613c82565b949350505050565b60008190508160005260206000209050919050565b60008154614b0381614816565b614b0d8186614220565b94506001821660008114614b285760018114614b3e57614b71565b60ff198316865281151560200286019350614b71565b614b4785614ae1565b60005b83811015614b6957815481890152600182019150602081019050614b4a565b808801955050505b50505092915050565b600060a082019050614b8f6000830188613c82565b614b9c6020830187613c82565b614ba96040830186613cac565b614bb66060830185613cac565b8181036080830152614bc88184614af6565b90509695505050505050565b600081519050614be381613c0a565b92915050565b600060208284031215614bff57614bfe613b98565b5b6000614c0d84828501614bd4565b91505092915050565b6000614c2182613c00565b9150614c2c83613c00565b9250828203905081811115614c4457614c436148b3565b5b92915050565b7f524550207472616e73666572206973206e6f7420616c6c6f7765640000000000600082015250565b6000614c80601b83613ae7565b9150614c8b82614c4a565b602082019050919050565b60006020820190508181036000830152614caf81614c73565b9050919050565b6000606082019050614ccb6000830186613e0c565b614cd86020830185613cac565b614ce56040830184613cac565b949350505050565b7f46656520697320726571756972656420746f20696e6974696174652076616c6960008201527f646174696f6e20706f6f6c000000000000000000000000000000000000000000602082015250565b6000614d49602b83613ae7565b9150614d5482614ced565b604082019050919050565b60006020820190508181036000830152614d7881614d3c565b9050919050565b7f4475726174696f6e20697320746f6f2073686f72740000000000000000000000600082015250565b6000614db5601583613ae7565b9150614dc082614d7f565b602082019050919050565b60006020820190508181036000830152614de481614da8565b9050919050565b7f4475726174696f6e20697320746f6f206c6f6e67000000000000000000000000600082015250565b6000614e21601483613ae7565b9150614e2c82614deb565b602082019050919050565b60006020820190508181036000830152614e5081614e14565b9050919050565b7f51756f72756d2069732062656c6f77206d696e696d756d000000000000000000600082015250565b6000614e8d601783613ae7565b9150614e9882614e57565b602082019050919050565b60006020820190508181036000830152614ebc81614e80565b9050919050565b7f51756f72756d2069732067726561746572207468616e206f6e65000000000000600082015250565b6000614ef9601a83613ae7565b9150614f0482614ec3565b602082019050919050565b60006020820190508181036000830152614f2881614eec565b9050919050565b7f57696e20726174696f2069732067726561746572207468616e206f6e65000000600082015250565b6000614f65601d83613ae7565b9150614f7082614f2f565b602082019050919050565b60006020820190508181036000830152614f9481614f58565b9050919050565b7f42696e64696e672070657263656e74206d757374206265203c3d203130300000600082015250565b6000614fd1601e83613ae7565b9150614fdc82614f9b565b602082019050919050565b6000602082019050818103600083015261500081614fc4565b9050919050565b600081905092915050565b600061501e8385615007565b935061502b8385846146e1565b82840190509392505050565b6000615044828486615012565b91508190509392505050565b7f54617267657420706f7374206e6f7420666f756e640000000000000000000000600082015250565b6000615086601583613ae7565b915061509182615050565b602082019050919050565b600060208201905081810360008301526150b581615079565b9050919050565b60006150c782613c00565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036150f9576150f86148b3565b5b600182019050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026151717fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82615134565b61517b8683615134565b95508019841693508086168417925050509392505050565b6000819050919050565b60006151b86151b36151ae84613c00565b615193565b613c00565b9050919050565b6000819050919050565b6151d28361519d565b6151e66151de826151bf565b848454615141565b825550505050565b600090565b6151fb6151ee565b6152068184846151c9565b505050565b5b8181101561522a5761521f6000826151f3565b60018101905061520c565b5050565b601f82111561526f576152408161510f565b61524984615124565b81016020851015615258578190505b61526c61526485615124565b83018261520b565b50505b505050565b600082821c905092915050565b600061529260001984600802615274565b1980831691505092915050565b60006152ab8383615281565b9150826002028217905092915050565b6152c58383615104565b67ffffffffffffffff8111156152de576152dd614635565b5b6152e88254614816565b6152f382828561522e565b6000601f8311600181146153225760008415615310578287013590505b61531a858261529f565b865550615382565b601f1984166153308661510f565b60005b8281101561535857848901358255600182019150602085019450602081019050615333565b868310156153755784890135615371601f891682615281565b8355505b6001600288020188555050505b50505050505050565b600082905092915050565b601f8211156153d7576153a881614ae1565b6153b184615124565b810160208510156153c0578190505b6153d46153cc85615124565b83018261520b565b50505b505050565b6153e6838361538b565b67ffffffffffffffff8111156153ff576153fe614635565b5b6154098254614816565b615414828285615396565b6000601f8311600181146154435760008415615431578287013590505b61543b858261529f565b8655506154a3565b601f19841661545186614ae1565b60005b8281101561547957848901358255600182019150602085019450602081019050615454565b868310156154965784890135615492601f891682615281565b8355505b6001600288020188555050505b50505050505050565b7f506f7374206d75737420696e636c756465206174206c65617374206f6e65206160008201527f7574686f72000000000000000000000000000000000000000000000000000000602082015250565b6000615508602583613ae7565b9150615513826154ac565b604082019050919050565b60006020820190508181036000830152615537816154fb565b9050919050565b7f4120706f73742077697468207468697320636f6e74656e74496420616c72656160008201527f6479206578697374730000000000000000000000000000000000000000000000602082015250565b600061559a602983613ae7565b91506155a58261553e565b604082019050919050565b600060208201905081810360008301526155c98161558d565b9050919050565b600081356155dd81613c0a565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61561f846155e6565b9350801983169250808416831791505092915050565b61563e8261519d565b61565161564a826151bf565b83546155f3565b8255505050565b6000813561566581613bd4565b80915050919050565b600073ffffffffffffffffffffffffffffffffffffffff61568e846155e6565b9350801983169250808416831791505092915050565b60006156bf6156ba6156b584613ba2565b615193565b613ba2565b9050919050565b60006156d1826156a4565b9050919050565b60006156e3826156c6565b9050919050565b6000819050919050565b6156fd826156d8565b615710615709826156ea565b835461566e565b8255505050565b600081016000830180615729816155d0565b90506157358184615635565b50505060018101602083018061574a81615658565b905061575681846156f4565b5050505050565b6157678282615717565b5050565b7f417574686f722077656967687473206d7573742073756d20746f20313030303060008201527f3030000000000000000000000000000000000000000000000000000000000000602082015250565b60006157c7602283613ae7565b91506157d28261576b565b604082019050919050565b600060208201905081810360008301526157f6816157ba565b9050919050565b600080fd5b600080fd5b600080fd5b600082356001604003833603038112615828576158276157fd565b5b80830191505092915050565b6000819050919050565b61584781615834565b811461585257600080fd5b50565b600081356158628161583e565b80915050919050565b600061588661588161587c84615834565b615193565b615834565b9050919050565b6000819050919050565b6158a08261586b565b6158b36158ac8261588d565b83546155f3565b8255505050565b600080833560016020038436030381126158d7576158d66157fd565b5b80840192508235915067ffffffffffffffff8211156158f9576158f8615802565b5b60208301925060018202360383131561591557615914615807565b5b509250929050565b6159288383836152bb565b505050565b60008101600083018061593f81615855565b905061594b8184615897565b505050600181016020830161596081856158ba565b61596b81838661591d565b505050505050565b61597d828261592d565b5050565b7f45616368206369746174696f6e20776569676874206d757374206265203e3d2060008201527f2d31303030303030000000000000000000000000000000000000000000000000602082015250565b60006159dd602883613ae7565b91506159e882615981565b604082019050919050565b60006020820190508181036000830152615a0c816159d0565b9050919050565b7f45616368206369746174696f6e20776569676874206d757374206265203c3d2060008201527f3130303030303000000000000000000000000000000000000000000000000000602082015250565b6000615a6f602783613ae7565b9150615a7a82615a13565b604082019050919050565b60006020820190508181036000830152615a9e81615a62565b9050919050565b6000615ab082615834565b9150615abb83615834565b925082820190508281121560008312168382126000841215161715615ae357615ae26148b3565b5b92915050565b7f53756d206f6620706f736974697665206369746174696f6e73206d757374206260008201527f65203c3d20313030303030300000000000000000000000000000000000000000602082015250565b6000615b45602c83613ae7565b9150615b5082615ae9565b604082019050919050565b60006020820190508181036000830152615b7481615b38565b9050919050565b7f53756d206f66206e65676174697665206369746174696f6e73206d757374206260008201527f65203e3d202d3130303030303000000000000000000000000000000000000000602082015250565b6000615bd7602d83613ae7565b9150615be282615b7b565b604082019050919050565b60006020820190508181036000830152615c0681615bca565b9050919050565b6000615c198385613ae7565b9350615c268385846146e1565b615c2f83613b22565b840190509392505050565b60006020820190508181036000830152615c55818486615c0d565b90509392505050565b7f506f6f6c20656e642074696d6520686173207061737365640000000000000000600082015250565b6000615c94601883613ae7565b9150615c9f82615c5e565b602082019050919050565b60006020820190508181036000830152615cc381615c87565b9050919050565b6000615cd582613adc565b615cdf8185615007565b9350615cef818560208601613af8565b80840191505092915050565b6000615d078284615cca565b915081905092915050565b6000615d1d82615834565b9150615d2883615834565b9250828203905081811260008412168282136000851215161715615d4f57615d4e6148b3565b5b92915050565b6000615d6082615834565b91507f80000000000000000000000000000000000000000000000000000000000000008203615d9257615d916148b3565b5b816000039050919050565b6000615da882615834565b9150615db383615834565b9250828202615dc181615834565b91507f80000000000000000000000000000000000000000000000000000000000000008414600084121615615df957615df86148b3565b5b8282058414831517615e0e57615e0d6148b3565b5b5092915050565b6000615e2082615834565b9150615e2b83615834565b925082615e3b57615e3a614916565b5b600160000383147f800000000000000000000000000000000000000000000000000000000000000083141615615e7457615e736148b3565b5b828205905092915050565b7f4c65616368696e672066726f6d20696e63696e657261746f7220697320666f7260008201527f62696464656e0000000000000000000000000000000000000000000000000000602082015250565b6000615edb602683613ae7565b9150615ee682615e7f565b604082019050919050565b60006020820190508181036000830152615f0a81615ece565b905091905056fea26469706673582212209f1eb3ff12aa3e0b4012bf2fd5064caa9b3995b97c752a0a223c5e60febeb27a64736f6c63430008180033", + "deployedBytecode": "0x60806040526004361061014b5760003560e01c806370a08231116100b6578063a23362791161006f578063a2336279146104e7578063a9059cbb1461052f578063da66863a1461056c578063dd62ed3e146105a9578063e5b4d827146105e6578063f8300fca1461060f5761014b565b806370a08231146103ac57806388380274146103e957806395d89b4114610426578063975762b3146104515780639fbe7c731461047a578063a230c524146104aa5761014b565b806323b872dd1161010857806323b872dd146102765780632d17c062146102b3578063313ce567146102dc57806350cde8ef146103075780635daf08ca14610344578063642b5bfb146103815761014b565b806306fdde0314610150578063095ea7b31461017b57806311aee380146101b857806317906c2e146101e357806317c182171461020e57806318160ddd1461024b575b600080fd5b34801561015c57600080fd5b5061016561064e565b6040516101729190613b6c565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190613c36565b6106e0565b6040516101af9190613c91565b60405180910390f35b3480156101c457600080fd5b506101cd610703565b6040516101da9190613cbb565b60405180910390f35b3480156101ef57600080fd5b506101f8610709565b6040516102059190613cbb565b60405180910390f35b34801561021a57600080fd5b5061023560048036038101906102309190613cd6565b61070f565b6040516102429190613c91565b60405180910390f35b34801561025757600080fd5b506102606110ed565b60405161026d9190613cbb565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190613d03565b6110f7565b6040516102aa9190613c91565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d59190613d82565b611134565b005b3480156102e857600080fd5b506102f161115d565b6040516102fe9190613df1565b60405180910390f35b34801561031357600080fd5b5061032e60048036038101906103299190613cd6565b611166565b60405161033b9190613b6c565b60405180910390f35b34801561035057600080fd5b5061036b60048036038101906103669190613cd6565b611212565b6040516103789190613e1b565b60405180910390f35b34801561038d57600080fd5b50610396611245565b6040516103a39190613cbb565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce9190613e36565b61124b565b6040516103e09190613cbb565b60405180910390f35b3480156103f557600080fd5b50610410600480360381019061040b9190613e63565b611293565b60405161041d9190613c91565b60405180910390f35b34801561043257600080fd5b5061043b61131a565b6040516104489190613b6c565b60405180910390f35b34801561045d57600080fd5b5061047860048036038101906104739190613eb6565b6113ac565b005b610494600480360381019061048f9190613ffa565b6113e1565b6040516104a19190613cbb565b60405180910390f35b3480156104b657600080fd5b506104d160048036038101906104cc9190613e36565b61189b565b6040516104de9190613c91565b60405180910390f35b3480156104f357600080fd5b5061050e60048036038101906105099190613cd6565b6118bb565b6040516105269c9b9a9998979695949392919061426a565b60405180910390f35b34801561053b57600080fd5b5061055660048036038101906105519190613c36565b611b35565b6040516105639190613c91565b60405180910390f35b34801561057857600080fd5b50610593600480360381019061058e9190614334565b611b72565b6040516105a0919061446e565b60405180910390f35b3480156105b557600080fd5b506105d060048036038101906105cb9190614490565b611c5b565b6040516105dd9190613cbb565b60405180910390f35b3480156105f257600080fd5b5061060d6004803603810190610608919061457c565b611ce2565b005b34801561061b57600080fd5b5061063660048036038101906106319190614760565b6121b5565b604051610645939291906147a9565b60405180910390f35b60606003805461065d90614816565b80601f016020809104026020016040519081016040528092919081815260200182805461068990614816565b80156106d65780601f106106ab576101008083540402835291602001916106d6565b820191906000526020600020905b8154815290600101906020018083116106b957829003601f168201915b5050505050905090565b6000806106eb61229d565b90506106f88185856122a5565b600191505092915050565b60065481565b600a5481565b600080600d600084815260200190815260200160002090506000151581600f0160009054906101000a900460ff1615151461077f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077690614893565b60405180910390fd5b600080600080600090505b84600501548110156107fb5784600401600082815260200190815260200160002091508160010160009054906101000a900460ff16156107db578160020154846107d491906148e2565b93506107ee565b8160020154836107eb91906148e2565b92505b808060010191505061078a565b506002846003015461080d9190614945565b8361081891906148e2565b92506002846003015461082b9190614945565b8261083691906148e2565b915060006002856003015461084b9190614976565b146108605760018361085d91906148e2565b92505b83600e015442118061088357506108756110ed565b828461088191906148e2565b145b6108c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b990614a19565b60405180910390fd5b836006016001016000600281106108dc576108db614a39565b5b01546108e66110ed565b6108f09190614a68565b82846108fc91906148e2565b8560060160010160016002811061091657610915614a39565b5b01546109229190614a68565b11610a5257600184600f0160006101000a81548160ff0219169083151502179055507fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de818660008060405161097893929190614aaa565b60405180910390a183600f0160029054906101000a900460ff1615610a45578360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d58660008686896010016040518663ffffffff1660e01b8152600401610a00959493929190614b7a565b6020604051808303816000875af1158015610a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a439190614be9565b505b60009450505050506110e8565b83600601600301600060028110610a6c57610a6b614a39565b5b01548284610a7a91906148e2565b610a849190614a68565b84600601600301600160028110610a9e57610a9d614a39565b5b015484610aab9190614a68565b10159450600184600f0160006101000a81548160ff0219169083151502179055508484600f0160016101000a81548160ff0219169083151502179055507fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de8186866001604051610b1c93929190614aaa565b60405180910390a1600085610b315782610b33565b835b905060008060005b8760050154811015610c3b5787600401600082815260200190815260200160002094508460010160009054906101000a900460ff16151589151514610c2e576000606489600601600501548760020154610b959190614a68565b610b9f9190614945565b90508860060160060160009054906101000a900460ff1615610bfd57610bea8660030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630836122b7565b8084610bf691906148e2565b9350610c2c565b610c2b8660030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826124dc565b5b505b8080600101915050610b3b565b508715610e395760028760030154610c539190614945565b82610c5e91906148e2565b915060005b8760050154811015610d495787600401600082815260200190815260200160002094508760060160060160009054906101000a900460ff168015610cbb57508460010160009054906101000a900460ff161515891515145b15610d3c5760006064896006016005015486886002015487610cdd9190614a68565b610ce79190614945565b610cf19190614a68565b610cfb9190614945565b90508083610d0991906148e2565b9250610d3a308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836122b7565b505b8080600101915050610c63565b5060008183610d589190614c16565b9050600060028960030154610d6d9190614976565b14610d8257600181610d7f91906148e2565b90505b610e33886001018054610d9490614816565b80601f0160208091040260200160405190810160405280929190818152602001828054610dc090614816565b8015610e0d5780601f10610de257610100808354040283529160200191610e0d565b820191906000526020600020905b815481529060010190602001808311610df057829003601f168201915b50505050508260028b60030154610e249190614945565b610e2e91906148e2565b61255e565b50610f51565b866003015482610e4991906148e2565b915060005b8760050154811015610f4f5787600401600082815260200190815260200160002094508760060160060160009054906101000a900460ff168015610ea657508460010160009054906101000a900460ff161515891515145b15610f425760006064896006016005015460028b60030154610ec89190614945565b87610ed39190614c16565b886002015487610ee39190614a68565b610eed9190614945565b610ef79190614a68565b610f019190614945565b90508083610f0f91906148e2565b9250610f40308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836122b7565b505b8080600101915050610e4e565b505b60005b60065481101561101a5760006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000610fa06110ed565b610fa98361124b565b8b600d0154610fb89190614a68565b610fc29190614945565b90508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561100a573d6000803e3d6000fd5b5050508080600101915050610f54565b5086600f0160029054906101000a900460ff16156110e0578660020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d589600189898c6010016040518663ffffffff1660e01b815260040161109b959493929190614b7a565b6020604051808303816000875af11580156110ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110de9190614be9565b505b505050505050505b919050565b6000600254905090565b60006040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112b90614c96565b60405180910390fd5b6000600d6000858152602001908152602001600020905061115781338585612570565b50505050565b60006009905090565b6009818154811061117657600080fd5b90600052602060002001600091509050805461119190614816565b80601f01602080910402602001604051908101604052809291908181526020018280546111bd90614816565b801561120a5780601f106111df5761010080835404028352916020019161120a565b820191906000526020600020905b8154815290600101906020018083116111ed57829003601f168201915b505050505081565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006112a03385856122a5565b8373ffffffffffffffffffffffffffffffffffffffff1663216ed6ad3385856040518463ffffffff1660e01b81526004016112dd93929190614cb6565b600060405180830381600087803b1580156112f757600080fd5b505af115801561130b573d6000803e3d6000fd5b50505050600190509392505050565b60606004805461132990614816565b80601f016020809104026020016040519081016040528092919081815260200182805461135590614816565b80156113a25780601f10611377576101008083540402835291602001916113a2565b820191906000526020600020905b81548152906001019060200180831161138557829003601f168201915b5050505050905090565b6000600d600086815260200190815260200160002090506113ce843385612666565b6113da81858585612570565b5050505050565b6000803411611425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141c90614d5f565b60405180910390fd5b6001891015611469576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146090614dcb565b60405180910390fd5b651cae8c13e0008911156114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a990614e37565b60405180910390fd5b876001600281106114c6576114c5614a39565b5b6020020135600f6000600281106114e0576114df614a39565b5b01546114ec9190614a68565b88600060028110611500576114ff614a39565b5b6020020135600f60016002811061151a57611519614a39565b5b01546115269190614a68565b1015611567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155e90614ea3565b60405180910390fd5b8760016002811061157b5761157a614a39565b5b60200201358860006002811061159457611593614a39565b5b602002013511156115da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d190614f0f565b60405180910390fd5b866001600281106115ee576115ed614a39565b5b60200201358760006002811061160757611606614a39565b5b6020020135111561164d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164490614f7b565b60405180910390fd5b6064861115611691576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168890614fe7565b60405180910390fd5b600060088c8c6040516116a5929190615037565b9081526020016040518091039020905060008160020180549050036116ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f69061509c565b60405180910390fd5b600e6000815480929190611712906150bc565b9190505591506000600d60008481526020019081526020016000209050338160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508c8c8260010191826117859291906152bb565b503481600d018190555089816006016001019060026117a5929190613a7f565b5088816006016003019060026117bc929190613a7f565b50878160060160050181905550868160060160060160006101000a81548160ff0219169083151502179055508a81600601600001819055508a4261180091906148e2565b81600e01819055508281600001819055508581600f0160026101000a81548160ff02191690831515021790555084848260100191826118409291906153dc565b5061184b30346126fa565b3481600301819055507f6e5c598b821d7fa8550e5fea58ab6e27c59e1cbe1df75a8591aa0c453b49e10a836040516118839190613cbb565b60405180910390a150509a9950505050505050505050565b60076020528060005260406000206000915054906101000a900460ff1681565b600d6020528060005260406000206000915090508060000154908060010180546118e490614816565b80601f016020809104026020016040519081016040528092919081815260200182805461191090614816565b801561195d5780601f106119325761010080835404028352916020019161195d565b820191906000526020600020905b81548152906001019060200180831161194057829003601f168201915b5050505050908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003015490806005015490806006016040518060a001604052908160008201548152602001600182016002806020026040519081016040528092919082600280156119ea576020028201915b8154815260200190600101908083116119d6575b5050505050815260200160038201600280602002604051908101604052809291908260028015611a2f576020028201915b815481526020019060010190808311611a1b575b50505050508152602001600582015481526020016006820160009054906101000a900460ff1615151515815250509080600d01549080600e01549080600f0160009054906101000a900460ff169080600f0160019054906101000a900460ff169080600f0160029054906101000a900460ff1690806010018054611ab290614816565b80601f0160208091040260200160405190810160405280929190818152602001828054611ade90614816565b8015611b2b5780601f10611b0057610100808354040283529160200191611b2b565b820191906000526020600020905b815481529060010190602001808311611b0e57829003601f168201915b505050505090508c565b60006040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6990614c96565b60405180910390fd5b6060600060088484604051611b88929190615037565b9081526020016040518091039020905080600201805480602002602001604051908101604052809291908181526020016000905b82821015611c4e5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190611bbc565b5050505091505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008686905011611d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1f9061551e565b60405180910390fd5b600a6000815480929190611d3b906150bc565b91905055506009848490918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182611d7d9291906152bb565b50600060088585604051611d92929190615037565b908152602001604051809103902090506000816002018054905014611dec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de3906155b0565b60405180910390fd5b338160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508484826000019182611e429291906152bb565b50600080600090505b88889050811015611ee157888882818110611e6957611e68614a39565b5b9050604002016000013582611e7e91906148e2565b915082600201898983818110611e9757611e96614a39565b5b90506040020190806001815401808255809150506001900390600052602060002090600202016000909190919091508181611ed2919061575d565b50508080600101915050611e4b565b50620f42408114611f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1e906157dd565b60405180910390fd5b60005b84849050811015611fa25782600301858583818110611f4c57611f4b614a39565b5b9050602002810190611f5e919061580c565b90806001815401808255809150506001900390600052602060002090600202016000909190919091508181611f939190615973565b50508080600101915050611f2a565b5060008060005b84600301805490508110156120c6576000856003018281548110611fd057611fcf614a39565b5b90600052602060002090600202016000015490507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0bdc0811215612047576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203e906159f3565b60405180910390fd5b620f424081131561208d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208490615a85565b60405180910390fd5b60008113156120a95780846120a29190615aa5565b93506120b8565b80836120b59190615aa5565b92505b508080600101915050611fa9565b50620f424082131561210d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210490615b5b565b60405180910390fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0bdc0811215612170576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216790615bed565b60405180910390fd5b7fbd6277baf8ced6ab6543a1aef164635fc2bde1ba962d39d8a0fd81a5af24972788886040516121a1929190615c3a565b60405180910390a150505050505050505050565b6008818051602081018201805184825260208301602085012081835280955050505050506000915090508060000180546121ee90614816565b80601f016020809104026020016040519081016040528092919081815260200182805461221a90614816565b80156122675780601f1061223c57610100808354040283529160200191612267565b820191906000526020600020905b81548152906001019060200180831161224a57829003601f168201915b5050505050908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040154905083565b600033905090565b6122b2838383600161277c565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123095780600260008282546122fd91906148e2565b925050819055506123dc565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612395578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161238c93929190614cb6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124255780600260008282540392505081905550612472565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124cf9190613cbb565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361254e5760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016125459190613e1b565b60405180910390fd5b61255a826000836122b7565b5050565b61256b8282600080612953565b505050565b83600e01544211156125b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ae90615caa565b60405180910390fd5b60008460050160008154809291906125ce906150bc565b91905055905060008560040160008381526020019081526020016000209050848160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828160010160006101000a81548160ff021916908315150217905550838160020181905550818160000181905550505050505050565b60006126728484611c5b565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146126f457818110156126e4578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016126db93929190614cb6565b60405180910390fd5b6126f38484848403600061277c565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361276c5760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016127639190613e1b565b60405180910390fd5b612778600083836122b7565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036127ee5760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016127e59190613e1b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128605760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016128579190613e1b565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550801561294d578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516129449190613cbb565b60405180910390a35b50505050565b6000600c548210612966578390506134f3565b60006008866040516129789190615cfb565b9081526020016040518091039020905060008160020180549050036129a057849150506134f3565b60005b8160030180549050811015612ad45760008260030182815481106129ca576129c9614a39565b5b9060005260206000209060020201600001541215612ac757612ab9878360030183815481106129fc576129fb614a39565b5b906000526020600020906002020160405180604001604052908160008201548152602001600182018054612a2f90614816565b80601f0160208091040260200160405190810160405280929190818152602001828054612a5b90614816565b8015612aa85780601f10612a7d57610100808354040283529160200191612aa8565b820191906000526020600020905b815481529060010190602001808311612a8b57829003601f168201915b5050505050815250508888886134fb565b86612ac49190615d12565b95505b80806001019150506129a3565b5060005b8160030180549050811015612c09576000826003018281548110612aff57612afe614a39565b5b9060005260206000209060020201600001541315612bfc57612bee87836003018381548110612b3157612b30614a39565b5b906000526020600020906002020160405180604001604052908160008201548152602001600182018054612b6490614816565b80601f0160208091040260200160405190810160405280929190818152602001828054612b9090614816565b8015612bdd5780601f10612bb257610100808354040283529160200191612bdd565b820191906000526020600020905b815481529060010190602001808311612bc057829003601f168201915b5050505050815250508888886134fb565b86612bf99190615d12565b95505b8080600101915050612ad8565b506000851315612ef557612ed4816040518060a0016040529081600082018054612c3290614816565b80601f0160208091040260200160405190810160405280929190818152602001828054612c5e90614816565b8015612cab5780601f10612c8057610100808354040283529160200191612cab565b820191906000526020600020905b815481529060010190602001808311612c8e57829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015612dc15783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190612d2f565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015612ebc578382906000526020600020906002020160405180604001604052908160008201548152602001600182018054612e2b90614816565b80601f0160208091040260200160405190810160405280929190818152602001828054612e5790614816565b8015612ea45780601f10612e7957610100808354040283529160200191612ea4565b820191906000526020600020905b815481529060010190602001808311612e8757829003601f168201915b50505050508152505081526020019060010190612dee565b505050508152602001600482015481525050866136c6565b5084816004016000828254612ee991906148e2565b925050819055506134f1565b6000858260040154612f079190615aa5565b126131f8576131cd816040518060a0016040529081600082018054612f2b90614816565b80601f0160208091040260200160405190810160405280929190818152602001828054612f5790614816565b8015612fa45780601f10612f7957610100808354040283529160200191612fa4565b820191906000526020600020905b815481529060010190602001808311612f8757829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b828210156130ba5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190613028565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156131b557838290600052602060002090600202016040518060400160405290816000820154815260200160018201805461312490614816565b80601f016020809104026020016040519081016040528092919081815260200182805461315090614816565b801561319d5780601f106131725761010080835404028352916020019161319d565b820191906000526020600020905b81548152906001019060200180831161318057829003601f168201915b505050505081525050815260200190600101906130e7565b505050508152602001600482015481525050866136c6565b9150846131d990615d55565b8160040160008282546131ec9190614c16565b925050819055506134f0565b8481600401546132089190615aa5565b91506134d8816040518060a001604052908160008201805461322990614816565b80601f016020809104026020016040519081016040528092919081815260200182805461325590614816565b80156132a25780601f10613277576101008083540402835291602001916132a2565b820191906000526020600020905b81548152906001019060200180831161328557829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b828210156133b85783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190613326565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156134b357838290600052602060002090600202016040518060400160405290816000820154815260200160018201805461342290614816565b80601f016020809104026020016040519081016040528092919081815260200182805461344e90614816565b801561349b5780601f106134705761010080835404028352916020019161349b565b820191906000526020600020905b81548152906001019060200180831161347e57829003601f168201915b505050505081525050815260200190600101906133e5565b50505050815260200160048201548152505082600401546134d390615d55565b6136c6565b826134e39190615aa5565b9150600081600401819055505b5b505b949350505050565b6000620f42408560000151856135119190615d9d565b61351b9190615e15565b905060008560200151510361357d57600081121561356e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161356590615ef1565b60405180910390fd5b61357830826124dc565b6136bd565b6000600b8760405161358f9190615cfb565b908152602001604051809103902086602001516040516135af9190615cfb565b9081526020016040518091039020549050831561361c5760008212156135f757806135d990615d55565b82136135ee57806135e990615d55565b6135f0565b815b915061361b565b8061360190615d55565b8212613616578061361190615d55565b613618565b815b91505b5b600061365587602001518487806136435750600087148015613642575060008a60000151125b5b60018861365091906148e2565b612953565b905080836136639190615d12565b925082600b896040516136769190615cfb565b908152602001604051809103902088602001516040516136969190615cfb565b908152602001604051809103902060008282546136b39190615aa5565b9250508190555050505b95945050505050565b60008060005b846040015151811015613820576000856040015182815181106136f2576136f1614a39565b5b6020026020010151602001519050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661381257806005600060066000815480929190613769906150bc565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5080806001019150506136cc565b5060005b846040015151811015613a775760008560400151828151811061384a57613849614a39565b5b60200260200101519050600060018760400151516138689190614c16565b8310156138a257620f42408260000151876138839190615d9d565b61388d9190615e15565b9050808461389b9190615aa5565b93506138b1565b83866138ae9190615d12565b90505b60008113156139ec576138c9308360200151836122b7565b60076000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166139e7578160200151600560006006600081548092919061393a906150bc565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160076000846020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b613a68565b806139f690615d55565b613a03836020015161124b565b1015613a4e57613a16826020015161124b565b81613a219190615aa5565b85613a2c9190615aa5565b9450613a49826020015130613a44856020015161124b565b6122b7565b613a67565b613a6682602001513083613a6190615d55565b6122b7565b5b5b50508080600101915050613824565b505092915050565b8260028101928215613aae579160200282015b82811115613aad578235825591602001919060010190613a92565b5b509050613abb9190613abf565b5090565b5b80821115613ad8576000816000905550600101613ac0565b5090565b600081519050919050565b600082825260208201905092915050565b60005b83811015613b16578082015181840152602081019050613afb565b60008484015250505050565b6000601f19601f8301169050919050565b6000613b3e82613adc565b613b488185613ae7565b9350613b58818560208601613af8565b613b6181613b22565b840191505092915050565b60006020820190508181036000830152613b868184613b33565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613bcd82613ba2565b9050919050565b613bdd81613bc2565b8114613be857600080fd5b50565b600081359050613bfa81613bd4565b92915050565b6000819050919050565b613c1381613c00565b8114613c1e57600080fd5b50565b600081359050613c3081613c0a565b92915050565b60008060408385031215613c4d57613c4c613b98565b5b6000613c5b85828601613beb565b9250506020613c6c85828601613c21565b9150509250929050565b60008115159050919050565b613c8b81613c76565b82525050565b6000602082019050613ca66000830184613c82565b92915050565b613cb581613c00565b82525050565b6000602082019050613cd06000830184613cac565b92915050565b600060208284031215613cec57613ceb613b98565b5b6000613cfa84828501613c21565b91505092915050565b600080600060608486031215613d1c57613d1b613b98565b5b6000613d2a86828701613beb565b9350506020613d3b86828701613beb565b9250506040613d4c86828701613c21565b9150509250925092565b613d5f81613c76565b8114613d6a57600080fd5b50565b600081359050613d7c81613d56565b92915050565b600080600060608486031215613d9b57613d9a613b98565b5b6000613da986828701613c21565b9350506020613dba86828701613c21565b9250506040613dcb86828701613d6d565b9150509250925092565b600060ff82169050919050565b613deb81613dd5565b82525050565b6000602082019050613e066000830184613de2565b92915050565b613e1581613bc2565b82525050565b6000602082019050613e306000830184613e0c565b92915050565b600060208284031215613e4c57613e4b613b98565b5b6000613e5a84828501613beb565b91505092915050565b600080600060608486031215613e7c57613e7b613b98565b5b6000613e8a86828701613beb565b9350506020613e9b86828701613c21565b9250506040613eac86828701613c21565b9150509250925092565b60008060008060808587031215613ed057613ecf613b98565b5b6000613ede87828801613c21565b9450506020613eef87828801613beb565b9350506040613f0087828801613c21565b9250506060613f1187828801613d6d565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112613f4257613f41613f1d565b5b8235905067ffffffffffffffff811115613f5f57613f5e613f22565b5b602083019150836001820283011115613f7b57613f7a613f27565b5b9250929050565b600081905082602060020282011115613f9e57613f9d613f27565b5b92915050565b60008083601f840112613fba57613fb9613f1d565b5b8235905067ffffffffffffffff811115613fd757613fd6613f22565b5b602083019150836001820283011115613ff357613ff2613f27565b5b9250929050565b6000806000806000806000806000806101408b8d03121561401e5761401d613b98565b5b60008b013567ffffffffffffffff81111561403c5761403b613b9d565b5b6140488d828e01613f2c565b9a509a5050602061405b8d828e01613c21565b985050604061406c8d828e01613f82565b975050608061407d8d828e01613f82565b96505060c061408e8d828e01613c21565b95505060e061409f8d828e01613d6d565b9450506101006140b18d828e01613d6d565b9350506101208b013567ffffffffffffffff8111156140d3576140d2613b9d565b5b6140df8d828e01613fa4565b92509250509295989b9194979a5092959850565b6140fc81613c00565b82525050565b600060029050919050565b600081905092915050565b6000819050919050565b600061412e83836140f3565b60208301905092915050565b6000602082019050919050565b61415081614102565b61415a818461410d565b925061416582614118565b8060005b8381101561419657815161417d8782614122565b96506141888361413a565b925050600181019050614169565b505050505050565b6141a781613c76565b82525050565b60e0820160008201516141c360008501826140f3565b5060208201516141d66020850182614147565b5060408201516141e96060850182614147565b5060608201516141fc60a08501826140f3565b50608082015161420f60c085018261419e565b50505050565b600081519050919050565b600082825260208201905092915050565b600061423c82614215565b6142468185614220565b9350614256818560208601613af8565b61425f81613b22565b840191505092915050565b600061024082019050614280600083018f613cac565b8181036020830152614292818e613b33565b90506142a1604083018d613e0c565b6142ae606083018c613cac565b6142bb608083018b613cac565b6142c860a083018a6141ad565b6142d6610180830189613cac565b6142e46101a0830188613cac565b6142f26101c0830187613c82565b6143006101e0830186613c82565b61430e610200830185613c82565b8181036102208301526143218184614231565b90509d9c50505050505050505050505050565b6000806020838503121561434b5761434a613b98565b5b600083013567ffffffffffffffff81111561436957614368613b9d565b5b61437585828601613f2c565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6143b681613bc2565b82525050565b6040820160008201516143d260008501826140f3565b5060208201516143e560208501826143ad565b50505050565b60006143f783836143bc565b60408301905092915050565b6000602082019050919050565b600061441b82614381565b614425818561438c565b93506144308361439d565b8060005b8381101561446157815161444888826143eb565b975061445383614403565b925050600181019050614434565b5085935050505092915050565b600060208201905081810360008301526144888184614410565b905092915050565b600080604083850312156144a7576144a6613b98565b5b60006144b585828601613beb565b92505060206144c685828601613beb565b9150509250929050565b60008083601f8401126144e6576144e5613f1d565b5b8235905067ffffffffffffffff81111561450357614502613f22565b5b60208301915083604082028301111561451f5761451e613f27565b5b9250929050565b60008083601f84011261453c5761453b613f1d565b5b8235905067ffffffffffffffff81111561455957614558613f22565b5b60208301915083602082028301111561457557614574613f27565b5b9250929050565b6000806000806000806060878903121561459957614598613b98565b5b600087013567ffffffffffffffff8111156145b7576145b6613b9d565b5b6145c389828a016144d0565b9650965050602087013567ffffffffffffffff8111156145e6576145e5613b9d565b5b6145f289828a01613f2c565b9450945050604087013567ffffffffffffffff81111561461557614614613b9d565b5b61462189828a01614526565b92509250509295509295509295565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61466d82613b22565b810181811067ffffffffffffffff8211171561468c5761468b614635565b5b80604052505050565b600061469f613b8e565b90506146ab8282614664565b919050565b600067ffffffffffffffff8211156146cb576146ca614635565b5b6146d482613b22565b9050602081019050919050565b82818337600083830152505050565b60006147036146fe846146b0565b614695565b90508281526020810184848401111561471f5761471e614630565b5b61472a8482856146e1565b509392505050565b600082601f83011261474757614746613f1d565b5b81356147578482602086016146f0565b91505092915050565b60006020828403121561477657614775613b98565b5b600082013567ffffffffffffffff81111561479457614793613b9d565b5b6147a084828501614732565b91505092915050565b600060608201905081810360008301526147c38186613b33565b90506147d26020830185613e0c565b6147df6040830184613cac565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061482e57607f821691505b602082108103614841576148406147e7565b5b50919050565b7f506f6f6c20697320616c7265616479207265736f6c7665640000000000000000600082015250565b600061487d601883613ae7565b915061488882614847565b602082019050919050565b600060208201905081810360008301526148ac81614870565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006148ed82613c00565b91506148f883613c00565b92508282019050808211156149105761490f6148b3565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061495082613c00565b915061495b83613c00565b92508261496b5761496a614916565b5b828204905092915050565b600061498182613c00565b915061498c83613c00565b92508261499c5761499b614916565b5b828206905092915050565b7f506f6f6c20656e642074696d6520686173206e6f74207965742061727269766560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a03602183613ae7565b9150614a0e826149a7565b604082019050919050565b60006020820190508181036000830152614a32816149f6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614a7382613c00565b9150614a7e83613c00565b9250828202614a8c81613c00565b91508282048414831517614aa357614aa26148b3565b5b5092915050565b6000606082019050614abf6000830186613cac565b614acc6020830185613c82565b614ad96040830184613c82565b949350505050565b60008190508160005260206000209050919050565b60008154614b0381614816565b614b0d8186614220565b94506001821660008114614b285760018114614b3e57614b71565b60ff198316865281151560200286019350614b71565b614b4785614ae1565b60005b83811015614b6957815481890152600182019150602081019050614b4a565b808801955050505b50505092915050565b600060a082019050614b8f6000830188613c82565b614b9c6020830187613c82565b614ba96040830186613cac565b614bb66060830185613cac565b8181036080830152614bc88184614af6565b90509695505050505050565b600081519050614be381613c0a565b92915050565b600060208284031215614bff57614bfe613b98565b5b6000614c0d84828501614bd4565b91505092915050565b6000614c2182613c00565b9150614c2c83613c00565b9250828203905081811115614c4457614c436148b3565b5b92915050565b7f524550207472616e73666572206973206e6f7420616c6c6f7765640000000000600082015250565b6000614c80601b83613ae7565b9150614c8b82614c4a565b602082019050919050565b60006020820190508181036000830152614caf81614c73565b9050919050565b6000606082019050614ccb6000830186613e0c565b614cd86020830185613cac565b614ce56040830184613cac565b949350505050565b7f46656520697320726571756972656420746f20696e6974696174652076616c6960008201527f646174696f6e20706f6f6c000000000000000000000000000000000000000000602082015250565b6000614d49602b83613ae7565b9150614d5482614ced565b604082019050919050565b60006020820190508181036000830152614d7881614d3c565b9050919050565b7f4475726174696f6e20697320746f6f2073686f72740000000000000000000000600082015250565b6000614db5601583613ae7565b9150614dc082614d7f565b602082019050919050565b60006020820190508181036000830152614de481614da8565b9050919050565b7f4475726174696f6e20697320746f6f206c6f6e67000000000000000000000000600082015250565b6000614e21601483613ae7565b9150614e2c82614deb565b602082019050919050565b60006020820190508181036000830152614e5081614e14565b9050919050565b7f51756f72756d2069732062656c6f77206d696e696d756d000000000000000000600082015250565b6000614e8d601783613ae7565b9150614e9882614e57565b602082019050919050565b60006020820190508181036000830152614ebc81614e80565b9050919050565b7f51756f72756d2069732067726561746572207468616e206f6e65000000000000600082015250565b6000614ef9601a83613ae7565b9150614f0482614ec3565b602082019050919050565b60006020820190508181036000830152614f2881614eec565b9050919050565b7f57696e20726174696f2069732067726561746572207468616e206f6e65000000600082015250565b6000614f65601d83613ae7565b9150614f7082614f2f565b602082019050919050565b60006020820190508181036000830152614f9481614f58565b9050919050565b7f42696e64696e672070657263656e74206d757374206265203c3d203130300000600082015250565b6000614fd1601e83613ae7565b9150614fdc82614f9b565b602082019050919050565b6000602082019050818103600083015261500081614fc4565b9050919050565b600081905092915050565b600061501e8385615007565b935061502b8385846146e1565b82840190509392505050565b6000615044828486615012565b91508190509392505050565b7f54617267657420706f7374206e6f7420666f756e640000000000000000000000600082015250565b6000615086601583613ae7565b915061509182615050565b602082019050919050565b600060208201905081810360008301526150b581615079565b9050919050565b60006150c782613c00565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036150f9576150f86148b3565b5b600182019050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026151717fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82615134565b61517b8683615134565b95508019841693508086168417925050509392505050565b6000819050919050565b60006151b86151b36151ae84613c00565b615193565b613c00565b9050919050565b6000819050919050565b6151d28361519d565b6151e66151de826151bf565b848454615141565b825550505050565b600090565b6151fb6151ee565b6152068184846151c9565b505050565b5b8181101561522a5761521f6000826151f3565b60018101905061520c565b5050565b601f82111561526f576152408161510f565b61524984615124565b81016020851015615258578190505b61526c61526485615124565b83018261520b565b50505b505050565b600082821c905092915050565b600061529260001984600802615274565b1980831691505092915050565b60006152ab8383615281565b9150826002028217905092915050565b6152c58383615104565b67ffffffffffffffff8111156152de576152dd614635565b5b6152e88254614816565b6152f382828561522e565b6000601f8311600181146153225760008415615310578287013590505b61531a858261529f565b865550615382565b601f1984166153308661510f565b60005b8281101561535857848901358255600182019150602085019450602081019050615333565b868310156153755784890135615371601f891682615281565b8355505b6001600288020188555050505b50505050505050565b600082905092915050565b601f8211156153d7576153a881614ae1565b6153b184615124565b810160208510156153c0578190505b6153d46153cc85615124565b83018261520b565b50505b505050565b6153e6838361538b565b67ffffffffffffffff8111156153ff576153fe614635565b5b6154098254614816565b615414828285615396565b6000601f8311600181146154435760008415615431578287013590505b61543b858261529f565b8655506154a3565b601f19841661545186614ae1565b60005b8281101561547957848901358255600182019150602085019450602081019050615454565b868310156154965784890135615492601f891682615281565b8355505b6001600288020188555050505b50505050505050565b7f506f7374206d75737420696e636c756465206174206c65617374206f6e65206160008201527f7574686f72000000000000000000000000000000000000000000000000000000602082015250565b6000615508602583613ae7565b9150615513826154ac565b604082019050919050565b60006020820190508181036000830152615537816154fb565b9050919050565b7f4120706f73742077697468207468697320636f6e74656e74496420616c72656160008201527f6479206578697374730000000000000000000000000000000000000000000000602082015250565b600061559a602983613ae7565b91506155a58261553e565b604082019050919050565b600060208201905081810360008301526155c98161558d565b9050919050565b600081356155dd81613c0a565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61561f846155e6565b9350801983169250808416831791505092915050565b61563e8261519d565b61565161564a826151bf565b83546155f3565b8255505050565b6000813561566581613bd4565b80915050919050565b600073ffffffffffffffffffffffffffffffffffffffff61568e846155e6565b9350801983169250808416831791505092915050565b60006156bf6156ba6156b584613ba2565b615193565b613ba2565b9050919050565b60006156d1826156a4565b9050919050565b60006156e3826156c6565b9050919050565b6000819050919050565b6156fd826156d8565b615710615709826156ea565b835461566e565b8255505050565b600081016000830180615729816155d0565b90506157358184615635565b50505060018101602083018061574a81615658565b905061575681846156f4565b5050505050565b6157678282615717565b5050565b7f417574686f722077656967687473206d7573742073756d20746f20313030303060008201527f3030000000000000000000000000000000000000000000000000000000000000602082015250565b60006157c7602283613ae7565b91506157d28261576b565b604082019050919050565b600060208201905081810360008301526157f6816157ba565b9050919050565b600080fd5b600080fd5b600080fd5b600082356001604003833603038112615828576158276157fd565b5b80830191505092915050565b6000819050919050565b61584781615834565b811461585257600080fd5b50565b600081356158628161583e565b80915050919050565b600061588661588161587c84615834565b615193565b615834565b9050919050565b6000819050919050565b6158a08261586b565b6158b36158ac8261588d565b83546155f3565b8255505050565b600080833560016020038436030381126158d7576158d66157fd565b5b80840192508235915067ffffffffffffffff8211156158f9576158f8615802565b5b60208301925060018202360383131561591557615914615807565b5b509250929050565b6159288383836152bb565b505050565b60008101600083018061593f81615855565b905061594b8184615897565b505050600181016020830161596081856158ba565b61596b81838661591d565b505050505050565b61597d828261592d565b5050565b7f45616368206369746174696f6e20776569676874206d757374206265203e3d2060008201527f2d31303030303030000000000000000000000000000000000000000000000000602082015250565b60006159dd602883613ae7565b91506159e882615981565b604082019050919050565b60006020820190508181036000830152615a0c816159d0565b9050919050565b7f45616368206369746174696f6e20776569676874206d757374206265203c3d2060008201527f3130303030303000000000000000000000000000000000000000000000000000602082015250565b6000615a6f602783613ae7565b9150615a7a82615a13565b604082019050919050565b60006020820190508181036000830152615a9e81615a62565b9050919050565b6000615ab082615834565b9150615abb83615834565b925082820190508281121560008312168382126000841215161715615ae357615ae26148b3565b5b92915050565b7f53756d206f6620706f736974697665206369746174696f6e73206d757374206260008201527f65203c3d20313030303030300000000000000000000000000000000000000000602082015250565b6000615b45602c83613ae7565b9150615b5082615ae9565b604082019050919050565b60006020820190508181036000830152615b7481615b38565b9050919050565b7f53756d206f66206e65676174697665206369746174696f6e73206d757374206260008201527f65203e3d202d3130303030303000000000000000000000000000000000000000602082015250565b6000615bd7602d83613ae7565b9150615be282615b7b565b604082019050919050565b60006020820190508181036000830152615c0681615bca565b9050919050565b6000615c198385613ae7565b9350615c268385846146e1565b615c2f83613b22565b840190509392505050565b60006020820190508181036000830152615c55818486615c0d565b90509392505050565b7f506f6f6c20656e642074696d6520686173207061737365640000000000000000600082015250565b6000615c94601883613ae7565b9150615c9f82615c5e565b602082019050919050565b60006020820190508181036000830152615cc381615c87565b9050919050565b6000615cd582613adc565b615cdf8185615007565b9350615cef818560208601613af8565b80840191505092915050565b6000615d078284615cca565b915081905092915050565b6000615d1d82615834565b9150615d2883615834565b9250828203905081811260008412168282136000851215161715615d4f57615d4e6148b3565b5b92915050565b6000615d6082615834565b91507f80000000000000000000000000000000000000000000000000000000000000008203615d9257615d916148b3565b5b816000039050919050565b6000615da882615834565b9150615db383615834565b9250828202615dc181615834565b91507f80000000000000000000000000000000000000000000000000000000000000008414600084121615615df957615df86148b3565b5b8282058414831517615e0e57615e0d6148b3565b5b5092915050565b6000615e2082615834565b9150615e2b83615834565b925082615e3b57615e3a614916565b5b600160000383147f800000000000000000000000000000000000000000000000000000000000000083141615615e7457615e736148b3565b5b828205905092915050565b7f4c65616368696e672066726f6d20696e63696e657261746f7220697320666f7260008201527f62696464656e0000000000000000000000000000000000000000000000000000602082015250565b6000615edb602683613ae7565b9150615ee682615e7f565b604082019050919050565b60006020820190508181036000830152615f0a81615ece565b905091905056fea26469706673582212209f1eb3ff12aa3e0b4012bf2fd5064caa9b3995b97c752a0a223c5e60febeb27a64736f6c63430008180033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/frontend/contractArtifacts/Onboarding.json b/frontend/contractArtifacts/Onboarding.json index 4f4944e..8c61892 100644 --- a/frontend/contractArtifacts/Onboarding.json +++ b/frontend/contractArtifacts/Onboarding.json @@ -458,7 +458,7 @@ "components": [ { "internalType": "int256", - "name": "weightPercent", + "name": "weightPPM", "type": "int256" }, { @@ -478,8 +478,8 @@ "type": "function" } ], - "bytecode": "0x60a06040523480156200001157600080fd5b50604051620035a8380380620035a88339818101604052810190620000379190620001c1565b828282828073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505080600181905550816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050506200021d565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620000f582620000c8565b9050919050565b60006200010982620000e8565b9050919050565b6200011b81620000fc565b81146200012757600080fd5b50565b6000815190506200013b8162000110565b92915050565b60006200014e82620000e8565b9050919050565b620001608162000141565b81146200016c57600080fd5b50565b600081519050620001808162000155565b92915050565b6000819050919050565b6200019b8162000186565b8114620001a757600080fd5b50565b600081519050620001bb8162000190565b92915050565b600080600060608486031215620001dd57620001dc620000c3565b5b6000620001ed868287016200012a565b935050602062000200868287016200016f565b92505060406200021386828701620001aa565b9150509250925092565b60805161334c6200025c6000396000818161097f01528181610a4f01528181610b6c01528181610d7f01528181610f970152611029015261334c6000f3fe6080604052600436106100e85760003560e01c8063a035b1fe1161008a578063cf37625611610059578063cf376256146102de578063d0fae95f1461031c578063d5a44f8614610345578063d76b679414610385576100e8565b8063a035b1fe14610222578063b4e6a1d51461024d578063b5b20c001461028a578063c4a9e116146102b3576100e8565b8063815a0572116100c6578063815a05721461015d57806381d12c581461019a578063854b6a4f146101dd57806399ad6c5614610206576100e8565b80630d0271d6146100ed578063216ed6ad146101095780635badbe4c14610132575b600080fd5b610107600480360381019061010291906117fb565b6103b0565b005b34801561011557600080fd5b50610130600480360381019061012b91906118dc565b61049e565b005b34801561013e57600080fd5b506101476105b1565b604051610154919061193e565b60405180910390f35b34801561016957600080fd5b50610184600480360381019061017f91906119af565b6105b7565b604051610191919061193e565b60405180910390f35b3480156101a657600080fd5b506101c160048036038101906101bc9190611a23565b610636565b6040516101d49796959493929190611b81565b60405180910390f35b3480156101e957600080fd5b5061020460048036038101906101ff9190611c2a565b6107c2565b005b610220600480360381019061021b9190611c8c565b610c2c565b005b34801561022e57600080fd5b50610237610d75565b604051610244919061193e565b60405180910390f35b34801561025957600080fd5b50610274600480360381019061026f9190611d00565b610d7b565b604051610281919061193e565b60405180910390f35b34801561029657600080fd5b506102b160048036038101906102ac9190611d9a565b611127565b005b3480156102bf57600080fd5b506102c861129c565b6040516102d5919061193e565b60405180910390f35b3480156102ea57600080fd5b5061030560048036038101906103009190611a23565b6112a2565b604051610313929190611dda565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e9190611e59565b6112c6565b005b34801561035157600080fd5b5061036c60048036038101906103679190611a23565b6114ff565b60405161037c9493929190611eee565b60405180910390f35b34801561039157600080fd5b5061039a61155c565b6040516103a7919061193e565b60405180910390f35b6001543410156103f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ec90611f7f565b60405180910390fd5b60006007600081548092919061040a90611fce565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034816001018190555061047c82611562565b8160030181905550838382600401918261049792919061225c565b5050505050565b600082116104e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d890612378565b60405180910390fd5b6000600560008154809291906104f690611fce565b9190505590506000600460008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838160010181905550824261056b9190612398565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9826040516105a2919061193e565b60405180910390a15050505050565b60075481565b60008083838101906105c99190611a23565b9050600060026000838152602001908152602001600020905080600001546001819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f2082600154604051610620929190611dda565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461069e9061207f565b80601f01602080910402602001604051908101604052809291908181526020018280546106ca9061207f565b80156107175780601f106106ec57610100808354040283529160200191610717565b820191906000526020600020905b8154815290600101906020018083116106fa57829003601f168201915b50505050509080600501805461072c9061207f565b80601f01602080910402602001604051908101604052809291908181526020018280546107589061207f565b80156107a55780601f1061077a576101008083540402835291602001916107a5565b820191906000526020600020905b81548152906001019060200180831161078857829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b6000600660008481526020019081526020016000209050600160038111156107ed576107ec611a5f565b5b8160020160009054906101000a900460ff16600381111561081157610810611a5f565b5b14610851576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084890612418565b60405180910390fd5b60006004600083600301548152602001908152602001600020905060028260020160006101000a81548160ff0219169083600381111561089457610893611a5f565b5b0217905550828260070160006101000a81548160ff0219169083151502179055506000600167ffffffffffffffff8111156108d2576108d1612021565b5b60405190808252806020026020018201604052801561090b57816020015b6108f861175c565b8152602001906001900390816108f05790505b5090506040518060400160405280606481526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508160008151811061097257610971612438565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b81526004016109e0939291906127d5565b600060405180830381600087803b1580156109fa57600080fd5b505af1158015610a0e573d6000803e3d6000fd5b505050507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc8585604051610a43929190612821565b60405180910390a160007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73600a8660010154610a9a9190612879565b8660010154610aa991906128aa565b8660050160146040518060400160405280600181526020016003815250604051806040016040528060018152602001600281525060646001808f604051602001610af3919061193e565b6040516020818303038152906040526040518a63ffffffff1660e01b8152600401610b25989796959493929190612a0a565b60206040518083038185885af1158015610b43573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b689190612aad565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015460016040518563ffffffff1660e01b8152600401610bf29493929190612ada565b600060405180830381600087803b158015610c0c57600080fd5b505af1158015610c20573d6000803e3d6000fd5b50505050505050505050565b600060036000815480929190610c4190611fce565b919050559050600060026000838152602001908152602001600020905085816000018190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632805b5d93487873388600189604051602001610cbb919061193e565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401610ceb96959493929190612b74565b60206040518083038185885af1158015610d09573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d2e9190612aad565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610d65919061193e565b60405180910390a1505050505050565b60015481565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0290612c49565b60405180910390fd5b60008383810190610e1c9190611a23565b90506000600660008381526020019081526020016000209050881580610e40575087155b15610ecb578060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600a8360010154610e949190612879565b9081150290604051600060405180830381858888f19350505050158015610ebf573d6000803e3d6000fd5b5060019250505061111d565b60606000600167ffffffffffffffff811115610eea57610ee9612021565b5b604051908082528060200260200182016040528015610f2357816020015b610f1061175c565b815260200190600190039081610f085790505b5090506040518060400160405280606481526020018460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525081600081518110610f8a57610f89612438565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600401856040518463ffffffff1660e01b8152600401610ff593929190612d90565b600060405180830381600087803b15801561100f57600080fd5b505af1158015611023573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73600a85600101546110749190612879565b856004016014604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518963ffffffff1660e01b81526004016110d09796959493929190612e02565b60206040518083038185885af11580156110ee573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111139190612aad565b5060009450505050505b9695505050505050565b60006004600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c790612f00565b60405180910390fd5b8060030160009054906101000a900460ff1615611222576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121990612f92565b60405180910390fd5b806002015442111561124757814261123a9190612398565b8160020181905550611260565b8181600201546112579190612398565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e98360405161128f919061193e565b60405180910390a1505050565b60055481565b60026020528060005260406000206000915090508060000154908060010154905082565b6000600660008781526020019081526020016000209050600060038111156112f1576112f0611a5f565b5b8160020160009054906101000a900460ff16600381111561131557611314611a5f565b5b14611355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134c90612ffe565b60405180910390fd5b6000600460008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611402576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f990613090565b60405180910390fd5b60018260020160006101000a81548160ff0219169083600381111561142a57611429611a5f565b5b0217905550858583600501918261144292919061225c565b5060005b848490508110156114be578260060185858381811061146857611467612438565b5b905060200281019061147a91906130bf565b908060018154018082558091505060019003906000526020600020906002020160009091909190915081816114af919061326b565b50508080600101915050611446565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc876040516114ee919061193e565b60405180910390a150505050505050565b60046020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60035481565b600061156c6115e1565b9050600060046000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b483836040516115d3929190611dda565b60405180910390a150919050565b60008060005b600554811015611668576004600082815260200190815260200160002060030160009054906101000a900460ff1661165b576004600082815260200190815260200160002060020154421161165b576004600082815260200190815260200160002060010154826116589190612398565b91505b80806001019150506115e7565b50600081116116ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a3906132c5565b60405180910390fd5b600081446116ba91906132e5565b9050600080600090505b600554811015611755576004600082815260200190815260200160002060030160009054906101000a900460ff166117485760046000828152602001908152602001600020600201544211611748576004600082815260200190815260200160002060010154826117359190612398565b91508282111561174757809450611755565b5b80806001019150506116c4565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126117bb576117ba611796565b5b8235905067ffffffffffffffff8111156117d8576117d761179b565b5b6020830191508360018202830111156117f4576117f36117a0565b5b9250929050565b600080602083850312156118125761181161178c565b5b600083013567ffffffffffffffff8111156118305761182f611791565b5b61183c858286016117a5565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061187382611848565b9050919050565b61188381611868565b811461188e57600080fd5b50565b6000813590506118a08161187a565b92915050565b6000819050919050565b6118b9816118a6565b81146118c457600080fd5b50565b6000813590506118d6816118b0565b92915050565b6000806000606084860312156118f5576118f461178c565b5b600061190386828701611891565b9350506020611914868287016118c7565b9250506040611925868287016118c7565b9150509250925092565b611938816118a6565b82525050565b6000602082019050611953600083018461192f565b92915050565b60008083601f84011261196f5761196e611796565b5b8235905067ffffffffffffffff81111561198c5761198b61179b565b5b6020830191508360018202830111156119a8576119a76117a0565b5b9250929050565b600080600080606085870312156119c9576119c861178c565b5b60006119d7878288016118c7565b94505060206119e8878288016118c7565b935050604085013567ffffffffffffffff811115611a0957611a08611791565b5b611a1587828801611959565b925092505092959194509250565b600060208284031215611a3957611a3861178c565b5b6000611a47848285016118c7565b91505092915050565b611a5981611868565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110611a9f57611a9e611a5f565b5b50565b6000819050611ab082611a8e565b919050565b6000611ac082611aa2565b9050919050565b611ad081611ab5565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611b10578082015181840152602081019050611af5565b60008484015250505050565b6000601f19601f8301169050919050565b6000611b3882611ad6565b611b428185611ae1565b9350611b52818560208601611af2565b611b5b81611b1c565b840191505092915050565b60008115159050919050565b611b7b81611b66565b82525050565b600060e082019050611b96600083018a611a50565b611ba3602083018961192f565b611bb06040830188611ac7565b611bbd606083018761192f565b8181036080830152611bcf8186611b2d565b905081810360a0830152611be38185611b2d565b9050611bf260c0830184611b72565b98975050505050505050565b611c0781611b66565b8114611c1257600080fd5b50565b600081359050611c2481611bfe565b92915050565b60008060408385031215611c4157611c4061178c565b5b6000611c4f858286016118c7565b9250506020611c6085828601611c15565b9150509250929050565b600081905082602060030282011115611c8657611c856117a0565b5b92915050565b60008060008060a08587031215611ca657611ca561178c565b5b6000611cb4878288016118c7565b945050602085013567ffffffffffffffff811115611cd557611cd4611791565b5b611ce1878288016117a5565b93509350506040611cf487828801611c6a565b91505092959194509250565b60008060008060008060a08789031215611d1d57611d1c61178c565b5b6000611d2b89828a01611c15565b9650506020611d3c89828a01611c15565b9550506040611d4d89828a016118c7565b9450506060611d5e89828a016118c7565b935050608087013567ffffffffffffffff811115611d7f57611d7e611791565b5b611d8b89828a01611959565b92509250509295509295509295565b60008060408385031215611db157611db061178c565b5b6000611dbf858286016118c7565b9250506020611dd0858286016118c7565b9150509250929050565b6000604082019050611def600083018561192f565b611dfc602083018461192f565b9392505050565b60008083601f840112611e1957611e18611796565b5b8235905067ffffffffffffffff811115611e3657611e3561179b565b5b602083019150836020820283011115611e5257611e516117a0565b5b9250929050565b600080600080600060608688031215611e7557611e7461178c565b5b6000611e83888289016118c7565b955050602086013567ffffffffffffffff811115611ea457611ea3611791565b5b611eb0888289016117a5565b9450945050604086013567ffffffffffffffff811115611ed357611ed2611791565b5b611edf88828901611e03565b92509250509295509295909350565b6000608082019050611f036000830187611a50565b611f10602083018661192f565b611f1d604083018561192f565b611f2a6060830184611b72565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611f69601083611ae1565b9150611f7482611f33565b602082019050919050565b60006020820190508181036000830152611f9881611f5c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611fd9826118a6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361200b5761200a611f9f565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061209757607f821691505b6020821081036120aa576120a9612050565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026121127fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826120d5565b61211c86836120d5565b95508019841693508086168417925050509392505050565b6000819050919050565b600061215961215461214f846118a6565b612134565b6118a6565b9050919050565b6000819050919050565b6121738361213e565b61218761217f82612160565b8484546120e2565b825550505050565b600090565b61219c61218f565b6121a781848461216a565b505050565b5b818110156121cb576121c0600082612194565b6001810190506121ad565b5050565b601f821115612210576121e1816120b0565b6121ea846120c5565b810160208510156121f9578190505b61220d612205856120c5565b8301826121ac565b50505b505050565b600082821c905092915050565b600061223360001984600802612215565b1980831691505092915050565b600061224c8383612222565b9150826002028217905092915050565b6122668383612016565b67ffffffffffffffff81111561227f5761227e612021565b5b612289825461207f565b6122948282856121cf565b6000601f8311600181146122c357600084156122b1578287013590505b6122bb8582612240565b865550612323565b601f1984166122d1866120b0565b60005b828110156122f9578489013582556001820191506020850194506020810190506122d4565b868310156123165784890135612312601f891682612222565b8355505b6001600288020188555050505b50505050505050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b6000612362601183611ae1565b915061236d8261232c565b602082019050919050565b6000602082019050818103600083015261239181612355565b9050919050565b60006123a3826118a6565b91506123ae836118a6565b92508282019050808211156123c6576123c5611f9f565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b6000612402602083611ae1565b915061240d826123cc565b602082019050919050565b60006020820190508181036000830152612431816123f5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61249c816118a6565b82525050565b6124ab81611868565b82525050565b6040820160008201516124c76000850182612493565b5060208201516124da60208501826124a2565b50505050565b60006124ec83836124b1565b60408301905092915050565b6000602082019050919050565b600061251082612467565b61251a8185612472565b935061252583612483565b8060005b8381101561255657815161253d88826124e0565b9750612548836124f8565b925050600181019050612529565b5085935050505092915050565b600081546125708161207f565b61257a8186611ae1565b9450600182166000811461259557600181146125ab576125de565b60ff1983168652811515602002860193506125de565b6125b4856120b0565b60005b838110156125d6578154818901526001820191506020810190506125b7565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b600061264261263d83612618565b612625565b9050919050565b6000819050919050565b61265c81612649565b82525050565b600082825260208201905092915050565b600081546126808161207f565b61268a8186612662565b945060018216600081146126a557600181146126bb576126ee565b60ff1983168652811515602002860193506126ee565b6126c4856120b0565b60005b838110156126e6578154818901526001820191506020810190506126c7565b808801955050505b50505092915050565b600060408301600080840154905061270e8161262f565b61271b6000870182612653565b506001840185830360208701526127328382612673565b925050819250505092915050565b600061274c83836126f7565b905092915050565b6000600282019050919050565b600061276c826125e7565b61277681856125f2565b93508360208202850161278885612603565b8060005b858110156127c3578484038952816127a48582612740565b94506127af83612754565b925060208a0199505060018101905061278c565b50829750879550505050505092915050565b600060608201905081810360008301526127ef8186612505565b905081810360208301526128038185612563565b905081810360408301526128178184612761565b9050949350505050565b6000604082019050612836600083018561192f565b6128436020830184611b72565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612884826118a6565b915061288f836118a6565b92508261289f5761289e61284a565b5b828204905092915050565b60006128b5826118a6565b91506128c0836118a6565b92508282039050818111156128d8576128d7611f9f565b5b92915050565b600060029050919050565b600081905092915050565b6000819050919050565b600061290a8383612493565b60208301905092915050565b6000602082019050919050565b61292c816128de565b61293681846128e9565b9250612941826128f4565b8060005b8381101561297257815161295987826128fe565b965061296483612916565b925050600181019050612945565b505050505050565b6000819050919050565b600061299f61299a6129958461297a565b612134565b6118a6565b9050919050565b6129af81612984565b82525050565b600081519050919050565b600082825260208201905092915050565b60006129dc826129b5565b6129e681856129c0565b93506129f6818560208601611af2565b6129ff81611b1c565b840191505092915050565b6000610140820190508181036000830152612a25818b612563565b9050612a34602083018a61192f565b612a416040830189612923565b612a4e6080830188612923565b612a5b60c08301876129a6565b612a6860e0830186611b72565b612a76610100830185611b72565b818103610120830152612a8981846129d1565b90509998505050505050505050565b600081519050612aa7816118b0565b92915050565b600060208284031215612ac357612ac261178c565b5b6000612ad184828501612a98565b91505092915050565b6000608082019050612aef600083018761192f565b612afc6020830186611a50565b612b09604083018561192f565b612b166060830184611b72565b95945050505050565b82818337600083830152505050565b6000612b3a8385611ae1565b9350612b47838584612b1f565b612b5083611b1c565b840190509392505050565b82818337505050565b612b7060608383612b5b565b5050565b600060e0820190508181036000830152612b8f81888a612b2e565b9050612b9e6020830187611a50565b612bab6040830186612b64565b612bb860a0830185611b72565b81810360c0830152612bca81846129d1565b9050979650505050505050565b7f6f6e56616c6964617465206d6179206f6e6c792062652063616c6c656420627960008201527f207468652044414f20636f6e7472616374000000000000000000000000000000602082015250565b6000612c33603183611ae1565b9150612c3e82612bd7565b604082019050919050565b60006020820190508181036000830152612c6281612c26565b9050919050565b600081519050919050565b6000819050602082019050919050565b6000612c8f82611ad6565b612c998185612662565b9350612ca9818560208601611af2565b612cb281611b1c565b840191505092915050565b6000604083016000830151612cd56000860182612653565b5060208301518482036020860152612ced8282612c84565b9150508091505092915050565b6000612d068383612cbd565b905092915050565b6000602082019050919050565b6000612d2682612c69565b612d3081856125f2565b935083602082028501612d4285612c74565b8060005b85811015612d7e5784840389528151612d5f8582612cfa565b9450612d6a83612d0e565b925060208a01995050600181019050612d46565b50829750879550505050505092915050565b60006060820190508181036000830152612daa8186612505565b90508181036020830152612dbe8185612563565b90508181036040830152612dd28184612d1b565b9050949350505050565b50565b6000612dec6000836129c0565b9150612df782612ddc565b600082019050919050565b6000610140820190508181036000830152612e1d818a612563565b9050612e2c602083018961192f565b612e396040830188612923565b612e466080830187612923565b612e5360c08301866129a6565b612e6060e0830185611b72565b612e6e610100830184611b72565b818103610120830152612e8081612ddf565b905098975050505050505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b6000612eea603383611ae1565b9150612ef582612e8e565b604082019050919050565b60006020820190508181036000830152612f1981612edd565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b6000612f7c602483611ae1565b9150612f8782612f20565b604082019050919050565b60006020820190508181036000830152612fab81612f6f565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b6000612fe8601883611ae1565b9150612ff382612fb2565b602082019050919050565b6000602082019050818103600083015261301781612fdb565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b600061307a603a83611ae1565b91506130858261301e565b604082019050919050565b600060208201905081810360008301526130a98161306d565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126130db576130da6130b0565b5b80830191505092915050565b6130f081612649565b81146130fb57600080fd5b50565b6000813561310b816130e7565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61314d84613114565b9350801983169250808416831791505092915050565b600061317e61317961317484612649565b612134565b612649565b9050919050565b6000819050919050565b61319882613163565b6131ab6131a482613185565b8354613121565b8255505050565b600080833560016020038436030381126131cf576131ce6130b0565b5b80840192508235915067ffffffffffffffff8211156131f1576131f06130b5565b5b60208301925060018202360383131561320d5761320c6130ba565b5b509250929050565b61322083838361225c565b505050565b600081016000830180613237816130fe565b9050613243818461318f565b505050600181016020830161325881856131b2565b613263818386613215565b505050505050565b6132758282613225565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b60006132af601a83611ae1565b91506132ba82613279565b602082019050919050565b600060208201905081810360008301526132de816132a2565b9050919050565b60006132f0826118a6565b91506132fb836118a6565b92508261330b5761330a61284a565b5b82820690509291505056fea2646970667358221220164153e9f6ad91835bb31f8713d71c0bdf6c641329056becf94f10475988c58f64736f6c63430008180033", - "deployedBytecode": "0x6080604052600436106100e85760003560e01c8063a035b1fe1161008a578063cf37625611610059578063cf376256146102de578063d0fae95f1461031c578063d5a44f8614610345578063d76b679414610385576100e8565b8063a035b1fe14610222578063b4e6a1d51461024d578063b5b20c001461028a578063c4a9e116146102b3576100e8565b8063815a0572116100c6578063815a05721461015d57806381d12c581461019a578063854b6a4f146101dd57806399ad6c5614610206576100e8565b80630d0271d6146100ed578063216ed6ad146101095780635badbe4c14610132575b600080fd5b610107600480360381019061010291906117fb565b6103b0565b005b34801561011557600080fd5b50610130600480360381019061012b91906118dc565b61049e565b005b34801561013e57600080fd5b506101476105b1565b604051610154919061193e565b60405180910390f35b34801561016957600080fd5b50610184600480360381019061017f91906119af565b6105b7565b604051610191919061193e565b60405180910390f35b3480156101a657600080fd5b506101c160048036038101906101bc9190611a23565b610636565b6040516101d49796959493929190611b81565b60405180910390f35b3480156101e957600080fd5b5061020460048036038101906101ff9190611c2a565b6107c2565b005b610220600480360381019061021b9190611c8c565b610c2c565b005b34801561022e57600080fd5b50610237610d75565b604051610244919061193e565b60405180910390f35b34801561025957600080fd5b50610274600480360381019061026f9190611d00565b610d7b565b604051610281919061193e565b60405180910390f35b34801561029657600080fd5b506102b160048036038101906102ac9190611d9a565b611127565b005b3480156102bf57600080fd5b506102c861129c565b6040516102d5919061193e565b60405180910390f35b3480156102ea57600080fd5b5061030560048036038101906103009190611a23565b6112a2565b604051610313929190611dda565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e9190611e59565b6112c6565b005b34801561035157600080fd5b5061036c60048036038101906103679190611a23565b6114ff565b60405161037c9493929190611eee565b60405180910390f35b34801561039157600080fd5b5061039a61155c565b6040516103a7919061193e565b60405180910390f35b6001543410156103f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ec90611f7f565b60405180910390fd5b60006007600081548092919061040a90611fce565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034816001018190555061047c82611562565b8160030181905550838382600401918261049792919061225c565b5050505050565b600082116104e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d890612378565b60405180910390fd5b6000600560008154809291906104f690611fce565b9190505590506000600460008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838160010181905550824261056b9190612398565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9826040516105a2919061193e565b60405180910390a15050505050565b60075481565b60008083838101906105c99190611a23565b9050600060026000838152602001908152602001600020905080600001546001819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f2082600154604051610620929190611dda565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461069e9061207f565b80601f01602080910402602001604051908101604052809291908181526020018280546106ca9061207f565b80156107175780601f106106ec57610100808354040283529160200191610717565b820191906000526020600020905b8154815290600101906020018083116106fa57829003601f168201915b50505050509080600501805461072c9061207f565b80601f01602080910402602001604051908101604052809291908181526020018280546107589061207f565b80156107a55780601f1061077a576101008083540402835291602001916107a5565b820191906000526020600020905b81548152906001019060200180831161078857829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b6000600660008481526020019081526020016000209050600160038111156107ed576107ec611a5f565b5b8160020160009054906101000a900460ff16600381111561081157610810611a5f565b5b14610851576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084890612418565b60405180910390fd5b60006004600083600301548152602001908152602001600020905060028260020160006101000a81548160ff0219169083600381111561089457610893611a5f565b5b0217905550828260070160006101000a81548160ff0219169083151502179055506000600167ffffffffffffffff8111156108d2576108d1612021565b5b60405190808252806020026020018201604052801561090b57816020015b6108f861175c565b8152602001906001900390816108f05790505b5090506040518060400160405280606481526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508160008151811061097257610971612438565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b81526004016109e0939291906127d5565b600060405180830381600087803b1580156109fa57600080fd5b505af1158015610a0e573d6000803e3d6000fd5b505050507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc8585604051610a43929190612821565b60405180910390a160007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73600a8660010154610a9a9190612879565b8660010154610aa991906128aa565b8660050160146040518060400160405280600181526020016003815250604051806040016040528060018152602001600281525060646001808f604051602001610af3919061193e565b6040516020818303038152906040526040518a63ffffffff1660e01b8152600401610b25989796959493929190612a0a565b60206040518083038185885af1158015610b43573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b689190612aad565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015460016040518563ffffffff1660e01b8152600401610bf29493929190612ada565b600060405180830381600087803b158015610c0c57600080fd5b505af1158015610c20573d6000803e3d6000fd5b50505050505050505050565b600060036000815480929190610c4190611fce565b919050559050600060026000838152602001908152602001600020905085816000018190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632805b5d93487873388600189604051602001610cbb919061193e565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401610ceb96959493929190612b74565b60206040518083038185885af1158015610d09573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d2e9190612aad565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610d65919061193e565b60405180910390a1505050505050565b60015481565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0290612c49565b60405180910390fd5b60008383810190610e1c9190611a23565b90506000600660008381526020019081526020016000209050881580610e40575087155b15610ecb578060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600a8360010154610e949190612879565b9081150290604051600060405180830381858888f19350505050158015610ebf573d6000803e3d6000fd5b5060019250505061111d565b60606000600167ffffffffffffffff811115610eea57610ee9612021565b5b604051908082528060200260200182016040528015610f2357816020015b610f1061175c565b815260200190600190039081610f085790505b5090506040518060400160405280606481526020018460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525081600081518110610f8a57610f89612438565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600401856040518463ffffffff1660e01b8152600401610ff593929190612d90565b600060405180830381600087803b15801561100f57600080fd5b505af1158015611023573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73600a85600101546110749190612879565b856004016014604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518963ffffffff1660e01b81526004016110d09796959493929190612e02565b60206040518083038185885af11580156110ee573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111139190612aad565b5060009450505050505b9695505050505050565b60006004600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c790612f00565b60405180910390fd5b8060030160009054906101000a900460ff1615611222576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121990612f92565b60405180910390fd5b806002015442111561124757814261123a9190612398565b8160020181905550611260565b8181600201546112579190612398565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e98360405161128f919061193e565b60405180910390a1505050565b60055481565b60026020528060005260406000206000915090508060000154908060010154905082565b6000600660008781526020019081526020016000209050600060038111156112f1576112f0611a5f565b5b8160020160009054906101000a900460ff16600381111561131557611314611a5f565b5b14611355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134c90612ffe565b60405180910390fd5b6000600460008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611402576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f990613090565b60405180910390fd5b60018260020160006101000a81548160ff0219169083600381111561142a57611429611a5f565b5b0217905550858583600501918261144292919061225c565b5060005b848490508110156114be578260060185858381811061146857611467612438565b5b905060200281019061147a91906130bf565b908060018154018082558091505060019003906000526020600020906002020160009091909190915081816114af919061326b565b50508080600101915050611446565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc876040516114ee919061193e565b60405180910390a150505050505050565b60046020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60035481565b600061156c6115e1565b9050600060046000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b483836040516115d3929190611dda565b60405180910390a150919050565b60008060005b600554811015611668576004600082815260200190815260200160002060030160009054906101000a900460ff1661165b576004600082815260200190815260200160002060020154421161165b576004600082815260200190815260200160002060010154826116589190612398565b91505b80806001019150506115e7565b50600081116116ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a3906132c5565b60405180910390fd5b600081446116ba91906132e5565b9050600080600090505b600554811015611755576004600082815260200190815260200160002060030160009054906101000a900460ff166117485760046000828152602001908152602001600020600201544211611748576004600082815260200190815260200160002060010154826117359190612398565b91508282111561174757809450611755565b5b80806001019150506116c4565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126117bb576117ba611796565b5b8235905067ffffffffffffffff8111156117d8576117d761179b565b5b6020830191508360018202830111156117f4576117f36117a0565b5b9250929050565b600080602083850312156118125761181161178c565b5b600083013567ffffffffffffffff8111156118305761182f611791565b5b61183c858286016117a5565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061187382611848565b9050919050565b61188381611868565b811461188e57600080fd5b50565b6000813590506118a08161187a565b92915050565b6000819050919050565b6118b9816118a6565b81146118c457600080fd5b50565b6000813590506118d6816118b0565b92915050565b6000806000606084860312156118f5576118f461178c565b5b600061190386828701611891565b9350506020611914868287016118c7565b9250506040611925868287016118c7565b9150509250925092565b611938816118a6565b82525050565b6000602082019050611953600083018461192f565b92915050565b60008083601f84011261196f5761196e611796565b5b8235905067ffffffffffffffff81111561198c5761198b61179b565b5b6020830191508360018202830111156119a8576119a76117a0565b5b9250929050565b600080600080606085870312156119c9576119c861178c565b5b60006119d7878288016118c7565b94505060206119e8878288016118c7565b935050604085013567ffffffffffffffff811115611a0957611a08611791565b5b611a1587828801611959565b925092505092959194509250565b600060208284031215611a3957611a3861178c565b5b6000611a47848285016118c7565b91505092915050565b611a5981611868565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110611a9f57611a9e611a5f565b5b50565b6000819050611ab082611a8e565b919050565b6000611ac082611aa2565b9050919050565b611ad081611ab5565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611b10578082015181840152602081019050611af5565b60008484015250505050565b6000601f19601f8301169050919050565b6000611b3882611ad6565b611b428185611ae1565b9350611b52818560208601611af2565b611b5b81611b1c565b840191505092915050565b60008115159050919050565b611b7b81611b66565b82525050565b600060e082019050611b96600083018a611a50565b611ba3602083018961192f565b611bb06040830188611ac7565b611bbd606083018761192f565b8181036080830152611bcf8186611b2d565b905081810360a0830152611be38185611b2d565b9050611bf260c0830184611b72565b98975050505050505050565b611c0781611b66565b8114611c1257600080fd5b50565b600081359050611c2481611bfe565b92915050565b60008060408385031215611c4157611c4061178c565b5b6000611c4f858286016118c7565b9250506020611c6085828601611c15565b9150509250929050565b600081905082602060030282011115611c8657611c856117a0565b5b92915050565b60008060008060a08587031215611ca657611ca561178c565b5b6000611cb4878288016118c7565b945050602085013567ffffffffffffffff811115611cd557611cd4611791565b5b611ce1878288016117a5565b93509350506040611cf487828801611c6a565b91505092959194509250565b60008060008060008060a08789031215611d1d57611d1c61178c565b5b6000611d2b89828a01611c15565b9650506020611d3c89828a01611c15565b9550506040611d4d89828a016118c7565b9450506060611d5e89828a016118c7565b935050608087013567ffffffffffffffff811115611d7f57611d7e611791565b5b611d8b89828a01611959565b92509250509295509295509295565b60008060408385031215611db157611db061178c565b5b6000611dbf858286016118c7565b9250506020611dd0858286016118c7565b9150509250929050565b6000604082019050611def600083018561192f565b611dfc602083018461192f565b9392505050565b60008083601f840112611e1957611e18611796565b5b8235905067ffffffffffffffff811115611e3657611e3561179b565b5b602083019150836020820283011115611e5257611e516117a0565b5b9250929050565b600080600080600060608688031215611e7557611e7461178c565b5b6000611e83888289016118c7565b955050602086013567ffffffffffffffff811115611ea457611ea3611791565b5b611eb0888289016117a5565b9450945050604086013567ffffffffffffffff811115611ed357611ed2611791565b5b611edf88828901611e03565b92509250509295509295909350565b6000608082019050611f036000830187611a50565b611f10602083018661192f565b611f1d604083018561192f565b611f2a6060830184611b72565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611f69601083611ae1565b9150611f7482611f33565b602082019050919050565b60006020820190508181036000830152611f9881611f5c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611fd9826118a6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361200b5761200a611f9f565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061209757607f821691505b6020821081036120aa576120a9612050565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026121127fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826120d5565b61211c86836120d5565b95508019841693508086168417925050509392505050565b6000819050919050565b600061215961215461214f846118a6565b612134565b6118a6565b9050919050565b6000819050919050565b6121738361213e565b61218761217f82612160565b8484546120e2565b825550505050565b600090565b61219c61218f565b6121a781848461216a565b505050565b5b818110156121cb576121c0600082612194565b6001810190506121ad565b5050565b601f821115612210576121e1816120b0565b6121ea846120c5565b810160208510156121f9578190505b61220d612205856120c5565b8301826121ac565b50505b505050565b600082821c905092915050565b600061223360001984600802612215565b1980831691505092915050565b600061224c8383612222565b9150826002028217905092915050565b6122668383612016565b67ffffffffffffffff81111561227f5761227e612021565b5b612289825461207f565b6122948282856121cf565b6000601f8311600181146122c357600084156122b1578287013590505b6122bb8582612240565b865550612323565b601f1984166122d1866120b0565b60005b828110156122f9578489013582556001820191506020850194506020810190506122d4565b868310156123165784890135612312601f891682612222565b8355505b6001600288020188555050505b50505050505050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b6000612362601183611ae1565b915061236d8261232c565b602082019050919050565b6000602082019050818103600083015261239181612355565b9050919050565b60006123a3826118a6565b91506123ae836118a6565b92508282019050808211156123c6576123c5611f9f565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b6000612402602083611ae1565b915061240d826123cc565b602082019050919050565b60006020820190508181036000830152612431816123f5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61249c816118a6565b82525050565b6124ab81611868565b82525050565b6040820160008201516124c76000850182612493565b5060208201516124da60208501826124a2565b50505050565b60006124ec83836124b1565b60408301905092915050565b6000602082019050919050565b600061251082612467565b61251a8185612472565b935061252583612483565b8060005b8381101561255657815161253d88826124e0565b9750612548836124f8565b925050600181019050612529565b5085935050505092915050565b600081546125708161207f565b61257a8186611ae1565b9450600182166000811461259557600181146125ab576125de565b60ff1983168652811515602002860193506125de565b6125b4856120b0565b60005b838110156125d6578154818901526001820191506020810190506125b7565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b600061264261263d83612618565b612625565b9050919050565b6000819050919050565b61265c81612649565b82525050565b600082825260208201905092915050565b600081546126808161207f565b61268a8186612662565b945060018216600081146126a557600181146126bb576126ee565b60ff1983168652811515602002860193506126ee565b6126c4856120b0565b60005b838110156126e6578154818901526001820191506020810190506126c7565b808801955050505b50505092915050565b600060408301600080840154905061270e8161262f565b61271b6000870182612653565b506001840185830360208701526127328382612673565b925050819250505092915050565b600061274c83836126f7565b905092915050565b6000600282019050919050565b600061276c826125e7565b61277681856125f2565b93508360208202850161278885612603565b8060005b858110156127c3578484038952816127a48582612740565b94506127af83612754565b925060208a0199505060018101905061278c565b50829750879550505050505092915050565b600060608201905081810360008301526127ef8186612505565b905081810360208301526128038185612563565b905081810360408301526128178184612761565b9050949350505050565b6000604082019050612836600083018561192f565b6128436020830184611b72565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612884826118a6565b915061288f836118a6565b92508261289f5761289e61284a565b5b828204905092915050565b60006128b5826118a6565b91506128c0836118a6565b92508282039050818111156128d8576128d7611f9f565b5b92915050565b600060029050919050565b600081905092915050565b6000819050919050565b600061290a8383612493565b60208301905092915050565b6000602082019050919050565b61292c816128de565b61293681846128e9565b9250612941826128f4565b8060005b8381101561297257815161295987826128fe565b965061296483612916565b925050600181019050612945565b505050505050565b6000819050919050565b600061299f61299a6129958461297a565b612134565b6118a6565b9050919050565b6129af81612984565b82525050565b600081519050919050565b600082825260208201905092915050565b60006129dc826129b5565b6129e681856129c0565b93506129f6818560208601611af2565b6129ff81611b1c565b840191505092915050565b6000610140820190508181036000830152612a25818b612563565b9050612a34602083018a61192f565b612a416040830189612923565b612a4e6080830188612923565b612a5b60c08301876129a6565b612a6860e0830186611b72565b612a76610100830185611b72565b818103610120830152612a8981846129d1565b90509998505050505050505050565b600081519050612aa7816118b0565b92915050565b600060208284031215612ac357612ac261178c565b5b6000612ad184828501612a98565b91505092915050565b6000608082019050612aef600083018761192f565b612afc6020830186611a50565b612b09604083018561192f565b612b166060830184611b72565b95945050505050565b82818337600083830152505050565b6000612b3a8385611ae1565b9350612b47838584612b1f565b612b5083611b1c565b840190509392505050565b82818337505050565b612b7060608383612b5b565b5050565b600060e0820190508181036000830152612b8f81888a612b2e565b9050612b9e6020830187611a50565b612bab6040830186612b64565b612bb860a0830185611b72565b81810360c0830152612bca81846129d1565b9050979650505050505050565b7f6f6e56616c6964617465206d6179206f6e6c792062652063616c6c656420627960008201527f207468652044414f20636f6e7472616374000000000000000000000000000000602082015250565b6000612c33603183611ae1565b9150612c3e82612bd7565b604082019050919050565b60006020820190508181036000830152612c6281612c26565b9050919050565b600081519050919050565b6000819050602082019050919050565b6000612c8f82611ad6565b612c998185612662565b9350612ca9818560208601611af2565b612cb281611b1c565b840191505092915050565b6000604083016000830151612cd56000860182612653565b5060208301518482036020860152612ced8282612c84565b9150508091505092915050565b6000612d068383612cbd565b905092915050565b6000602082019050919050565b6000612d2682612c69565b612d3081856125f2565b935083602082028501612d4285612c74565b8060005b85811015612d7e5784840389528151612d5f8582612cfa565b9450612d6a83612d0e565b925060208a01995050600181019050612d46565b50829750879550505050505092915050565b60006060820190508181036000830152612daa8186612505565b90508181036020830152612dbe8185612563565b90508181036040830152612dd28184612d1b565b9050949350505050565b50565b6000612dec6000836129c0565b9150612df782612ddc565b600082019050919050565b6000610140820190508181036000830152612e1d818a612563565b9050612e2c602083018961192f565b612e396040830188612923565b612e466080830187612923565b612e5360c08301866129a6565b612e6060e0830185611b72565b612e6e610100830184611b72565b818103610120830152612e8081612ddf565b905098975050505050505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b6000612eea603383611ae1565b9150612ef582612e8e565b604082019050919050565b60006020820190508181036000830152612f1981612edd565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b6000612f7c602483611ae1565b9150612f8782612f20565b604082019050919050565b60006020820190508181036000830152612fab81612f6f565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b6000612fe8601883611ae1565b9150612ff382612fb2565b602082019050919050565b6000602082019050818103600083015261301781612fdb565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b600061307a603a83611ae1565b91506130858261301e565b604082019050919050565b600060208201905081810360008301526130a98161306d565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126130db576130da6130b0565b5b80830191505092915050565b6130f081612649565b81146130fb57600080fd5b50565b6000813561310b816130e7565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61314d84613114565b9350801983169250808416831791505092915050565b600061317e61317961317484612649565b612134565b612649565b9050919050565b6000819050919050565b61319882613163565b6131ab6131a482613185565b8354613121565b8255505050565b600080833560016020038436030381126131cf576131ce6130b0565b5b80840192508235915067ffffffffffffffff8211156131f1576131f06130b5565b5b60208301925060018202360383131561320d5761320c6130ba565b5b509250929050565b61322083838361225c565b505050565b600081016000830180613237816130fe565b9050613243818461318f565b505050600181016020830161325881856131b2565b613263818386613215565b505050505050565b6132758282613225565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b60006132af601a83611ae1565b91506132ba82613279565b602082019050919050565b600060208201905081810360008301526132de816132a2565b9050919050565b60006132f0826118a6565b91506132fb836118a6565b92508261330b5761330a61284a565b5b82820690509291505056fea2646970667358221220164153e9f6ad91835bb31f8713d71c0bdf6c641329056becf94f10475988c58f64736f6c63430008180033", + "bytecode": "0x60a06040523480156200001157600080fd5b50604051620035ac380380620035ac8339818101604052810190620000379190620001c1565b828282828073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505080600181905550816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050506200021d565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620000f582620000c8565b9050919050565b60006200010982620000e8565b9050919050565b6200011b81620000fc565b81146200012757600080fd5b50565b6000815190506200013b8162000110565b92915050565b60006200014e82620000e8565b9050919050565b620001608162000141565b81146200016c57600080fd5b50565b600081519050620001808162000155565b92915050565b6000819050919050565b6200019b8162000186565b8114620001a757600080fd5b50565b600081519050620001bb8162000190565b92915050565b600080600060608486031215620001dd57620001dc620000c3565b5b6000620001ed868287016200012a565b935050602062000200868287016200016f565b92505060406200021386828701620001aa565b9150509250925092565b6080516133506200025c6000396000818161098101528181610a5101528181610b6e01528181610d8101528181610f9b015261102d01526133506000f3fe6080604052600436106100e85760003560e01c8063a035b1fe1161008a578063cf37625611610059578063cf376256146102de578063d0fae95f1461031c578063d5a44f8614610345578063d76b679414610385576100e8565b8063a035b1fe14610222578063b4e6a1d51461024d578063b5b20c001461028a578063c4a9e116146102b3576100e8565b8063815a0572116100c6578063815a05721461015d57806381d12c581461019a578063854b6a4f146101dd57806399ad6c5614610206576100e8565b80630d0271d6146100ed578063216ed6ad146101095780635badbe4c14610132575b600080fd5b610107600480360381019061010291906117ff565b6103b0565b005b34801561011557600080fd5b50610130600480360381019061012b91906118e0565b61049e565b005b34801561013e57600080fd5b506101476105b1565b6040516101549190611942565b60405180910390f35b34801561016957600080fd5b50610184600480360381019061017f91906119b3565b6105b7565b6040516101919190611942565b60405180910390f35b3480156101a657600080fd5b506101c160048036038101906101bc9190611a27565b610636565b6040516101d49796959493929190611b85565b60405180910390f35b3480156101e957600080fd5b5061020460048036038101906101ff9190611c2e565b6107c2565b005b610220600480360381019061021b9190611c90565b610c2e565b005b34801561022e57600080fd5b50610237610d77565b6040516102449190611942565b60405180910390f35b34801561025957600080fd5b50610274600480360381019061026f9190611d04565b610d7d565b6040516102819190611942565b60405180910390f35b34801561029657600080fd5b506102b160048036038101906102ac9190611d9e565b61112b565b005b3480156102bf57600080fd5b506102c86112a0565b6040516102d59190611942565b60405180910390f35b3480156102ea57600080fd5b5061030560048036038101906103009190611a27565b6112a6565b604051610313929190611dde565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e9190611e5d565b6112ca565b005b34801561035157600080fd5b5061036c60048036038101906103679190611a27565b611503565b60405161037c9493929190611ef2565b60405180910390f35b34801561039157600080fd5b5061039a611560565b6040516103a79190611942565b60405180910390f35b6001543410156103f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ec90611f83565b60405180910390fd5b60006007600081548092919061040a90611fd2565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034816001018190555061047c82611566565b81600301819055508383826004019182610497929190612260565b5050505050565b600082116104e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d89061237c565b60405180910390fd5b6000600560008154809291906104f690611fd2565b9190505590506000600460008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838160010181905550824261056b919061239c565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9826040516105a29190611942565b60405180910390a15050505050565b60075481565b60008083838101906105c99190611a27565b9050600060026000838152602001908152602001600020905080600001546001819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f2082600154604051610620929190611dde565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461069e90612083565b80601f01602080910402602001604051908101604052809291908181526020018280546106ca90612083565b80156107175780601f106106ec57610100808354040283529160200191610717565b820191906000526020600020905b8154815290600101906020018083116106fa57829003601f168201915b50505050509080600501805461072c90612083565b80601f016020809104026020016040519081016040528092919081815260200182805461075890612083565b80156107a55780601f1061077a576101008083540402835291602001916107a5565b820191906000526020600020905b81548152906001019060200180831161078857829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b6000600660008481526020019081526020016000209050600160038111156107ed576107ec611a63565b5b8160020160009054906101000a900460ff16600381111561081157610810611a63565b5b14610851576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108489061241c565b60405180910390fd5b60006004600083600301548152602001908152602001600020905060028260020160006101000a81548160ff0219169083600381111561089457610893611a63565b5b0217905550828260070160006101000a81548160ff0219169083151502179055506000600167ffffffffffffffff8111156108d2576108d1612025565b5b60405190808252806020026020018201604052801561090b57816020015b6108f8611760565b8152602001906001900390816108f05790505b5090506040518060400160405280620f424081526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250816000815181106109745761097361243c565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b81526004016109e2939291906127d9565b600060405180830381600087803b1580156109fc57600080fd5b505af1158015610a10573d6000803e3d6000fd5b505050507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc8585604051610a45929190612825565b60405180910390a160007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73600a8660010154610a9c919061287d565b8660010154610aab91906128ae565b8660050160146040518060400160405280600181526020016003815250604051806040016040528060018152602001600281525060646001808f604051602001610af59190611942565b6040516020818303038152906040526040518a63ffffffff1660e01b8152600401610b27989796959493929190612a0e565b60206040518083038185885af1158015610b45573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b6a9190612ab1565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015460016040518563ffffffff1660e01b8152600401610bf49493929190612ade565b600060405180830381600087803b158015610c0e57600080fd5b505af1158015610c22573d6000803e3d6000fd5b50505050505050505050565b600060036000815480929190610c4390611fd2565b919050559050600060026000838152602001908152602001600020905085816000018190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632805b5d93487873388600189604051602001610cbd9190611942565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401610ced96959493929190612b78565b60206040518083038185885af1158015610d0b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d309190612ab1565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610d679190611942565b60405180910390a1505050505050565b60015481565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0490612c4d565b60405180910390fd5b60008383810190610e1e9190611a27565b90506000600660008381526020019081526020016000209050881580610e42575087155b15610ecd578060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600a8360010154610e96919061287d565b9081150290604051600060405180830381858888f19350505050158015610ec1573d6000803e3d6000fd5b50600192505050611121565b60606000600167ffffffffffffffff811115610eec57610eeb612025565b5b604051908082528060200260200182016040528015610f2557816020015b610f12611760565b815260200190600190039081610f0a5790505b5090506040518060400160405280620f424081526020018460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525081600081518110610f8e57610f8d61243c565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600401856040518463ffffffff1660e01b8152600401610ff993929190612d94565b600060405180830381600087803b15801561101357600080fd5b505af1158015611027573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73600a8560010154611078919061287d565b856004016014604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518963ffffffff1660e01b81526004016110d49796959493929190612e06565b60206040518083038185885af11580156110f2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111179190612ab1565b5060009450505050505b9695505050505050565b60006004600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cb90612f04565b60405180910390fd5b8060030160009054906101000a900460ff1615611226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121d90612f96565b60405180910390fd5b806002015442111561124b57814261123e919061239c565b8160020181905550611264565b81816002015461125b919061239c565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9836040516112939190611942565b60405180910390a1505050565b60055481565b60026020528060005260406000206000915090508060000154908060010154905082565b6000600660008781526020019081526020016000209050600060038111156112f5576112f4611a63565b5b8160020160009054906101000a900460ff16600381111561131957611318611a63565b5b14611359576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135090613002565b60405180910390fd5b6000600460008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fd90613094565b60405180910390fd5b60018260020160006101000a81548160ff0219169083600381111561142e5761142d611a63565b5b02179055508585836005019182611446929190612260565b5060005b848490508110156114c2578260060185858381811061146c5761146b61243c565b5b905060200281019061147e91906130c3565b908060018154018082558091505060019003906000526020600020906002020160009091909190915081816114b3919061326f565b5050808060010191505061144a565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc876040516114f29190611942565b60405180910390a150505050505050565b60046020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60035481565b60006115706115e5565b9050600060046000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b483836040516115d7929190611dde565b60405180910390a150919050565b60008060005b60055481101561166c576004600082815260200190815260200160002060030160009054906101000a900460ff1661165f576004600082815260200190815260200160002060020154421161165f5760046000828152602001908152602001600020600101548261165c919061239c565b91505b80806001019150506115eb565b50600081116116b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a7906132c9565b60405180910390fd5b600081446116be91906132e9565b9050600080600090505b600554811015611759576004600082815260200190815260200160002060030160009054906101000a900460ff1661174c576004600082815260200190815260200160002060020154421161174c57600460008281526020019081526020016000206001015482611739919061239c565b91508282111561174b57809450611759565b5b80806001019150506116c8565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126117bf576117be61179a565b5b8235905067ffffffffffffffff8111156117dc576117db61179f565b5b6020830191508360018202830111156117f8576117f76117a4565b5b9250929050565b6000806020838503121561181657611815611790565b5b600083013567ffffffffffffffff81111561183457611833611795565b5b611840858286016117a9565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006118778261184c565b9050919050565b6118878161186c565b811461189257600080fd5b50565b6000813590506118a48161187e565b92915050565b6000819050919050565b6118bd816118aa565b81146118c857600080fd5b50565b6000813590506118da816118b4565b92915050565b6000806000606084860312156118f9576118f8611790565b5b600061190786828701611895565b9350506020611918868287016118cb565b9250506040611929868287016118cb565b9150509250925092565b61193c816118aa565b82525050565b60006020820190506119576000830184611933565b92915050565b60008083601f8401126119735761197261179a565b5b8235905067ffffffffffffffff8111156119905761198f61179f565b5b6020830191508360018202830111156119ac576119ab6117a4565b5b9250929050565b600080600080606085870312156119cd576119cc611790565b5b60006119db878288016118cb565b94505060206119ec878288016118cb565b935050604085013567ffffffffffffffff811115611a0d57611a0c611795565b5b611a198782880161195d565b925092505092959194509250565b600060208284031215611a3d57611a3c611790565b5b6000611a4b848285016118cb565b91505092915050565b611a5d8161186c565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110611aa357611aa2611a63565b5b50565b6000819050611ab482611a92565b919050565b6000611ac482611aa6565b9050919050565b611ad481611ab9565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611b14578082015181840152602081019050611af9565b60008484015250505050565b6000601f19601f8301169050919050565b6000611b3c82611ada565b611b468185611ae5565b9350611b56818560208601611af6565b611b5f81611b20565b840191505092915050565b60008115159050919050565b611b7f81611b6a565b82525050565b600060e082019050611b9a600083018a611a54565b611ba76020830189611933565b611bb46040830188611acb565b611bc16060830187611933565b8181036080830152611bd38186611b31565b905081810360a0830152611be78185611b31565b9050611bf660c0830184611b76565b98975050505050505050565b611c0b81611b6a565b8114611c1657600080fd5b50565b600081359050611c2881611c02565b92915050565b60008060408385031215611c4557611c44611790565b5b6000611c53858286016118cb565b9250506020611c6485828601611c19565b9150509250929050565b600081905082602060030282011115611c8a57611c896117a4565b5b92915050565b60008060008060a08587031215611caa57611ca9611790565b5b6000611cb8878288016118cb565b945050602085013567ffffffffffffffff811115611cd957611cd8611795565b5b611ce5878288016117a9565b93509350506040611cf887828801611c6e565b91505092959194509250565b60008060008060008060a08789031215611d2157611d20611790565b5b6000611d2f89828a01611c19565b9650506020611d4089828a01611c19565b9550506040611d5189828a016118cb565b9450506060611d6289828a016118cb565b935050608087013567ffffffffffffffff811115611d8357611d82611795565b5b611d8f89828a0161195d565b92509250509295509295509295565b60008060408385031215611db557611db4611790565b5b6000611dc3858286016118cb565b9250506020611dd4858286016118cb565b9150509250929050565b6000604082019050611df36000830185611933565b611e006020830184611933565b9392505050565b60008083601f840112611e1d57611e1c61179a565b5b8235905067ffffffffffffffff811115611e3a57611e3961179f565b5b602083019150836020820283011115611e5657611e556117a4565b5b9250929050565b600080600080600060608688031215611e7957611e78611790565b5b6000611e87888289016118cb565b955050602086013567ffffffffffffffff811115611ea857611ea7611795565b5b611eb4888289016117a9565b9450945050604086013567ffffffffffffffff811115611ed757611ed6611795565b5b611ee388828901611e07565b92509250509295509295909350565b6000608082019050611f076000830187611a54565b611f146020830186611933565b611f216040830185611933565b611f2e6060830184611b76565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611f6d601083611ae5565b9150611f7882611f37565b602082019050919050565b60006020820190508181036000830152611f9c81611f60565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611fdd826118aa565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361200f5761200e611fa3565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061209b57607f821691505b6020821081036120ae576120ad612054565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026121167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826120d9565b61212086836120d9565b95508019841693508086168417925050509392505050565b6000819050919050565b600061215d612158612153846118aa565b612138565b6118aa565b9050919050565b6000819050919050565b61217783612142565b61218b61218382612164565b8484546120e6565b825550505050565b600090565b6121a0612193565b6121ab81848461216e565b505050565b5b818110156121cf576121c4600082612198565b6001810190506121b1565b5050565b601f821115612214576121e5816120b4565b6121ee846120c9565b810160208510156121fd578190505b612211612209856120c9565b8301826121b0565b50505b505050565b600082821c905092915050565b600061223760001984600802612219565b1980831691505092915050565b60006122508383612226565b9150826002028217905092915050565b61226a838361201a565b67ffffffffffffffff81111561228357612282612025565b5b61228d8254612083565b6122988282856121d3565b6000601f8311600181146122c757600084156122b5578287013590505b6122bf8582612244565b865550612327565b601f1984166122d5866120b4565b60005b828110156122fd578489013582556001820191506020850194506020810190506122d8565b8683101561231a5784890135612316601f891682612226565b8355505b6001600288020188555050505b50505050505050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b6000612366601183611ae5565b915061237182612330565b602082019050919050565b6000602082019050818103600083015261239581612359565b9050919050565b60006123a7826118aa565b91506123b2836118aa565b92508282019050808211156123ca576123c9611fa3565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b6000612406602083611ae5565b9150612411826123d0565b602082019050919050565b60006020820190508181036000830152612435816123f9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6124a0816118aa565b82525050565b6124af8161186c565b82525050565b6040820160008201516124cb6000850182612497565b5060208201516124de60208501826124a6565b50505050565b60006124f083836124b5565b60408301905092915050565b6000602082019050919050565b60006125148261246b565b61251e8185612476565b935061252983612487565b8060005b8381101561255a57815161254188826124e4565b975061254c836124fc565b92505060018101905061252d565b5085935050505092915050565b6000815461257481612083565b61257e8186611ae5565b9450600182166000811461259957600181146125af576125e2565b60ff1983168652811515602002860193506125e2565b6125b8856120b4565b60005b838110156125da578154818901526001820191506020810190506125bb565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b60006126466126418361261c565b612629565b9050919050565b6000819050919050565b6126608161264d565b82525050565b600082825260208201905092915050565b6000815461268481612083565b61268e8186612666565b945060018216600081146126a957600181146126bf576126f2565b60ff1983168652811515602002860193506126f2565b6126c8856120b4565b60005b838110156126ea578154818901526001820191506020810190506126cb565b808801955050505b50505092915050565b600060408301600080840154905061271281612633565b61271f6000870182612657565b506001840185830360208701526127368382612677565b925050819250505092915050565b600061275083836126fb565b905092915050565b6000600282019050919050565b6000612770826125eb565b61277a81856125f6565b93508360208202850161278c85612607565b8060005b858110156127c7578484038952816127a88582612744565b94506127b383612758565b925060208a01995050600181019050612790565b50829750879550505050505092915050565b600060608201905081810360008301526127f38186612509565b905081810360208301526128078185612567565b9050818103604083015261281b8184612765565b9050949350505050565b600060408201905061283a6000830185611933565b6128476020830184611b76565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612888826118aa565b9150612893836118aa565b9250826128a3576128a261284e565b5b828204905092915050565b60006128b9826118aa565b91506128c4836118aa565b92508282039050818111156128dc576128db611fa3565b5b92915050565b600060029050919050565b600081905092915050565b6000819050919050565b600061290e8383612497565b60208301905092915050565b6000602082019050919050565b612930816128e2565b61293a81846128ed565b9250612945826128f8565b8060005b8381101561297657815161295d8782612902565b96506129688361291a565b925050600181019050612949565b505050505050565b6000819050919050565b60006129a361299e6129998461297e565b612138565b6118aa565b9050919050565b6129b381612988565b82525050565b600081519050919050565b600082825260208201905092915050565b60006129e0826129b9565b6129ea81856129c4565b93506129fa818560208601611af6565b612a0381611b20565b840191505092915050565b6000610140820190508181036000830152612a29818b612567565b9050612a38602083018a611933565b612a456040830189612927565b612a526080830188612927565b612a5f60c08301876129aa565b612a6c60e0830186611b76565b612a7a610100830185611b76565b818103610120830152612a8d81846129d5565b90509998505050505050505050565b600081519050612aab816118b4565b92915050565b600060208284031215612ac757612ac6611790565b5b6000612ad584828501612a9c565b91505092915050565b6000608082019050612af36000830187611933565b612b006020830186611a54565b612b0d6040830185611933565b612b1a6060830184611b76565b95945050505050565b82818337600083830152505050565b6000612b3e8385611ae5565b9350612b4b838584612b23565b612b5483611b20565b840190509392505050565b82818337505050565b612b7460608383612b5f565b5050565b600060e0820190508181036000830152612b9381888a612b32565b9050612ba26020830187611a54565b612baf6040830186612b68565b612bbc60a0830185611b76565b81810360c0830152612bce81846129d5565b9050979650505050505050565b7f6f6e56616c6964617465206d6179206f6e6c792062652063616c6c656420627960008201527f207468652044414f20636f6e7472616374000000000000000000000000000000602082015250565b6000612c37603183611ae5565b9150612c4282612bdb565b604082019050919050565b60006020820190508181036000830152612c6681612c2a565b9050919050565b600081519050919050565b6000819050602082019050919050565b6000612c9382611ada565b612c9d8185612666565b9350612cad818560208601611af6565b612cb681611b20565b840191505092915050565b6000604083016000830151612cd96000860182612657565b5060208301518482036020860152612cf18282612c88565b9150508091505092915050565b6000612d0a8383612cc1565b905092915050565b6000602082019050919050565b6000612d2a82612c6d565b612d3481856125f6565b935083602082028501612d4685612c78565b8060005b85811015612d825784840389528151612d638582612cfe565b9450612d6e83612d12565b925060208a01995050600181019050612d4a565b50829750879550505050505092915050565b60006060820190508181036000830152612dae8186612509565b90508181036020830152612dc28185612567565b90508181036040830152612dd68184612d1f565b9050949350505050565b50565b6000612df06000836129c4565b9150612dfb82612de0565b600082019050919050565b6000610140820190508181036000830152612e21818a612567565b9050612e306020830189611933565b612e3d6040830188612927565b612e4a6080830187612927565b612e5760c08301866129aa565b612e6460e0830185611b76565b612e72610100830184611b76565b818103610120830152612e8481612de3565b905098975050505050505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b6000612eee603383611ae5565b9150612ef982612e92565b604082019050919050565b60006020820190508181036000830152612f1d81612ee1565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b6000612f80602483611ae5565b9150612f8b82612f24565b604082019050919050565b60006020820190508181036000830152612faf81612f73565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b6000612fec601883611ae5565b9150612ff782612fb6565b602082019050919050565b6000602082019050818103600083015261301b81612fdf565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b600061307e603a83611ae5565b915061308982613022565b604082019050919050565b600060208201905081810360008301526130ad81613071565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126130df576130de6130b4565b5b80830191505092915050565b6130f48161264d565b81146130ff57600080fd5b50565b6000813561310f816130eb565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61315184613118565b9350801983169250808416831791505092915050565b600061318261317d6131788461264d565b612138565b61264d565b9050919050565b6000819050919050565b61319c82613167565b6131af6131a882613189565b8354613125565b8255505050565b600080833560016020038436030381126131d3576131d26130b4565b5b80840192508235915067ffffffffffffffff8211156131f5576131f46130b9565b5b602083019250600182023603831315613211576132106130be565b5b509250929050565b613224838383612260565b505050565b60008101600083018061323b81613102565b90506132478184613193565b505050600181016020830161325c81856131b6565b613267818386613219565b505050505050565b6132798282613229565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b60006132b3601a83611ae5565b91506132be8261327d565b602082019050919050565b600060208201905081810360008301526132e2816132a6565b9050919050565b60006132f4826118aa565b91506132ff836118aa565b92508261330f5761330e61284e565b5b82820690509291505056fea26469706673582212206e18b5b44c6fcdd479868a02ae8ae98200838357ab90af830d1b0e4af00035ba64736f6c63430008180033", + "deployedBytecode": "0x6080604052600436106100e85760003560e01c8063a035b1fe1161008a578063cf37625611610059578063cf376256146102de578063d0fae95f1461031c578063d5a44f8614610345578063d76b679414610385576100e8565b8063a035b1fe14610222578063b4e6a1d51461024d578063b5b20c001461028a578063c4a9e116146102b3576100e8565b8063815a0572116100c6578063815a05721461015d57806381d12c581461019a578063854b6a4f146101dd57806399ad6c5614610206576100e8565b80630d0271d6146100ed578063216ed6ad146101095780635badbe4c14610132575b600080fd5b610107600480360381019061010291906117ff565b6103b0565b005b34801561011557600080fd5b50610130600480360381019061012b91906118e0565b61049e565b005b34801561013e57600080fd5b506101476105b1565b6040516101549190611942565b60405180910390f35b34801561016957600080fd5b50610184600480360381019061017f91906119b3565b6105b7565b6040516101919190611942565b60405180910390f35b3480156101a657600080fd5b506101c160048036038101906101bc9190611a27565b610636565b6040516101d49796959493929190611b85565b60405180910390f35b3480156101e957600080fd5b5061020460048036038101906101ff9190611c2e565b6107c2565b005b610220600480360381019061021b9190611c90565b610c2e565b005b34801561022e57600080fd5b50610237610d77565b6040516102449190611942565b60405180910390f35b34801561025957600080fd5b50610274600480360381019061026f9190611d04565b610d7d565b6040516102819190611942565b60405180910390f35b34801561029657600080fd5b506102b160048036038101906102ac9190611d9e565b61112b565b005b3480156102bf57600080fd5b506102c86112a0565b6040516102d59190611942565b60405180910390f35b3480156102ea57600080fd5b5061030560048036038101906103009190611a27565b6112a6565b604051610313929190611dde565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e9190611e5d565b6112ca565b005b34801561035157600080fd5b5061036c60048036038101906103679190611a27565b611503565b60405161037c9493929190611ef2565b60405180910390f35b34801561039157600080fd5b5061039a611560565b6040516103a79190611942565b60405180910390f35b6001543410156103f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ec90611f83565b60405180910390fd5b60006007600081548092919061040a90611fd2565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034816001018190555061047c82611566565b81600301819055508383826004019182610497929190612260565b5050505050565b600082116104e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d89061237c565b60405180910390fd5b6000600560008154809291906104f690611fd2565b9190505590506000600460008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838160010181905550824261056b919061239c565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9826040516105a29190611942565b60405180910390a15050505050565b60075481565b60008083838101906105c99190611a27565b9050600060026000838152602001908152602001600020905080600001546001819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f2082600154604051610620929190611dde565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461069e90612083565b80601f01602080910402602001604051908101604052809291908181526020018280546106ca90612083565b80156107175780601f106106ec57610100808354040283529160200191610717565b820191906000526020600020905b8154815290600101906020018083116106fa57829003601f168201915b50505050509080600501805461072c90612083565b80601f016020809104026020016040519081016040528092919081815260200182805461075890612083565b80156107a55780601f1061077a576101008083540402835291602001916107a5565b820191906000526020600020905b81548152906001019060200180831161078857829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b6000600660008481526020019081526020016000209050600160038111156107ed576107ec611a63565b5b8160020160009054906101000a900460ff16600381111561081157610810611a63565b5b14610851576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108489061241c565b60405180910390fd5b60006004600083600301548152602001908152602001600020905060028260020160006101000a81548160ff0219169083600381111561089457610893611a63565b5b0217905550828260070160006101000a81548160ff0219169083151502179055506000600167ffffffffffffffff8111156108d2576108d1612025565b5b60405190808252806020026020018201604052801561090b57816020015b6108f8611760565b8152602001906001900390816108f05790505b5090506040518060400160405280620f424081526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250816000815181106109745761097361243c565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b81526004016109e2939291906127d9565b600060405180830381600087803b1580156109fc57600080fd5b505af1158015610a10573d6000803e3d6000fd5b505050507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc8585604051610a45929190612825565b60405180910390a160007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73600a8660010154610a9c919061287d565b8660010154610aab91906128ae565b8660050160146040518060400160405280600181526020016003815250604051806040016040528060018152602001600281525060646001808f604051602001610af59190611942565b6040516020818303038152906040526040518a63ffffffff1660e01b8152600401610b27989796959493929190612a0e565b60206040518083038185885af1158015610b45573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b6a9190612ab1565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015460016040518563ffffffff1660e01b8152600401610bf49493929190612ade565b600060405180830381600087803b158015610c0e57600080fd5b505af1158015610c22573d6000803e3d6000fd5b50505050505050505050565b600060036000815480929190610c4390611fd2565b919050559050600060026000838152602001908152602001600020905085816000018190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632805b5d93487873388600189604051602001610cbd9190611942565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401610ced96959493929190612b78565b60206040518083038185885af1158015610d0b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d309190612ab1565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610d679190611942565b60405180910390a1505050505050565b60015481565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0490612c4d565b60405180910390fd5b60008383810190610e1e9190611a27565b90506000600660008381526020019081526020016000209050881580610e42575087155b15610ecd578060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600a8360010154610e96919061287d565b9081150290604051600060405180830381858888f19350505050158015610ec1573d6000803e3d6000fd5b50600192505050611121565b60606000600167ffffffffffffffff811115610eec57610eeb612025565b5b604051908082528060200260200182016040528015610f2557816020015b610f12611760565b815260200190600190039081610f0a5790505b5090506040518060400160405280620f424081526020018460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525081600081518110610f8e57610f8d61243c565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600401856040518463ffffffff1660e01b8152600401610ff993929190612d94565b600060405180830381600087803b15801561101357600080fd5b505af1158015611027573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73600a8560010154611078919061287d565b856004016014604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518963ffffffff1660e01b81526004016110d49796959493929190612e06565b60206040518083038185885af11580156110f2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111179190612ab1565b5060009450505050505b9695505050505050565b60006004600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cb90612f04565b60405180910390fd5b8060030160009054906101000a900460ff1615611226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121d90612f96565b60405180910390fd5b806002015442111561124b57814261123e919061239c565b8160020181905550611264565b81816002015461125b919061239c565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9836040516112939190611942565b60405180910390a1505050565b60055481565b60026020528060005260406000206000915090508060000154908060010154905082565b6000600660008781526020019081526020016000209050600060038111156112f5576112f4611a63565b5b8160020160009054906101000a900460ff16600381111561131957611318611a63565b5b14611359576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135090613002565b60405180910390fd5b6000600460008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fd90613094565b60405180910390fd5b60018260020160006101000a81548160ff0219169083600381111561142e5761142d611a63565b5b02179055508585836005019182611446929190612260565b5060005b848490508110156114c2578260060185858381811061146c5761146b61243c565b5b905060200281019061147e91906130c3565b908060018154018082558091505060019003906000526020600020906002020160009091909190915081816114b3919061326f565b5050808060010191505061144a565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc876040516114f29190611942565b60405180910390a150505050505050565b60046020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60035481565b60006115706115e5565b9050600060046000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b483836040516115d7929190611dde565b60405180910390a150919050565b60008060005b60055481101561166c576004600082815260200190815260200160002060030160009054906101000a900460ff1661165f576004600082815260200190815260200160002060020154421161165f5760046000828152602001908152602001600020600101548261165c919061239c565b91505b80806001019150506115eb565b50600081116116b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a7906132c9565b60405180910390fd5b600081446116be91906132e9565b9050600080600090505b600554811015611759576004600082815260200190815260200160002060030160009054906101000a900460ff1661174c576004600082815260200190815260200160002060020154421161174c57600460008281526020019081526020016000206001015482611739919061239c565b91508282111561174b57809450611759565b5b80806001019150506116c8565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126117bf576117be61179a565b5b8235905067ffffffffffffffff8111156117dc576117db61179f565b5b6020830191508360018202830111156117f8576117f76117a4565b5b9250929050565b6000806020838503121561181657611815611790565b5b600083013567ffffffffffffffff81111561183457611833611795565b5b611840858286016117a9565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006118778261184c565b9050919050565b6118878161186c565b811461189257600080fd5b50565b6000813590506118a48161187e565b92915050565b6000819050919050565b6118bd816118aa565b81146118c857600080fd5b50565b6000813590506118da816118b4565b92915050565b6000806000606084860312156118f9576118f8611790565b5b600061190786828701611895565b9350506020611918868287016118cb565b9250506040611929868287016118cb565b9150509250925092565b61193c816118aa565b82525050565b60006020820190506119576000830184611933565b92915050565b60008083601f8401126119735761197261179a565b5b8235905067ffffffffffffffff8111156119905761198f61179f565b5b6020830191508360018202830111156119ac576119ab6117a4565b5b9250929050565b600080600080606085870312156119cd576119cc611790565b5b60006119db878288016118cb565b94505060206119ec878288016118cb565b935050604085013567ffffffffffffffff811115611a0d57611a0c611795565b5b611a198782880161195d565b925092505092959194509250565b600060208284031215611a3d57611a3c611790565b5b6000611a4b848285016118cb565b91505092915050565b611a5d8161186c565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110611aa357611aa2611a63565b5b50565b6000819050611ab482611a92565b919050565b6000611ac482611aa6565b9050919050565b611ad481611ab9565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611b14578082015181840152602081019050611af9565b60008484015250505050565b6000601f19601f8301169050919050565b6000611b3c82611ada565b611b468185611ae5565b9350611b56818560208601611af6565b611b5f81611b20565b840191505092915050565b60008115159050919050565b611b7f81611b6a565b82525050565b600060e082019050611b9a600083018a611a54565b611ba76020830189611933565b611bb46040830188611acb565b611bc16060830187611933565b8181036080830152611bd38186611b31565b905081810360a0830152611be78185611b31565b9050611bf660c0830184611b76565b98975050505050505050565b611c0b81611b6a565b8114611c1657600080fd5b50565b600081359050611c2881611c02565b92915050565b60008060408385031215611c4557611c44611790565b5b6000611c53858286016118cb565b9250506020611c6485828601611c19565b9150509250929050565b600081905082602060030282011115611c8a57611c896117a4565b5b92915050565b60008060008060a08587031215611caa57611ca9611790565b5b6000611cb8878288016118cb565b945050602085013567ffffffffffffffff811115611cd957611cd8611795565b5b611ce5878288016117a9565b93509350506040611cf887828801611c6e565b91505092959194509250565b60008060008060008060a08789031215611d2157611d20611790565b5b6000611d2f89828a01611c19565b9650506020611d4089828a01611c19565b9550506040611d5189828a016118cb565b9450506060611d6289828a016118cb565b935050608087013567ffffffffffffffff811115611d8357611d82611795565b5b611d8f89828a0161195d565b92509250509295509295509295565b60008060408385031215611db557611db4611790565b5b6000611dc3858286016118cb565b9250506020611dd4858286016118cb565b9150509250929050565b6000604082019050611df36000830185611933565b611e006020830184611933565b9392505050565b60008083601f840112611e1d57611e1c61179a565b5b8235905067ffffffffffffffff811115611e3a57611e3961179f565b5b602083019150836020820283011115611e5657611e556117a4565b5b9250929050565b600080600080600060608688031215611e7957611e78611790565b5b6000611e87888289016118cb565b955050602086013567ffffffffffffffff811115611ea857611ea7611795565b5b611eb4888289016117a9565b9450945050604086013567ffffffffffffffff811115611ed757611ed6611795565b5b611ee388828901611e07565b92509250509295509295909350565b6000608082019050611f076000830187611a54565b611f146020830186611933565b611f216040830185611933565b611f2e6060830184611b76565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611f6d601083611ae5565b9150611f7882611f37565b602082019050919050565b60006020820190508181036000830152611f9c81611f60565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611fdd826118aa565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361200f5761200e611fa3565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061209b57607f821691505b6020821081036120ae576120ad612054565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026121167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826120d9565b61212086836120d9565b95508019841693508086168417925050509392505050565b6000819050919050565b600061215d612158612153846118aa565b612138565b6118aa565b9050919050565b6000819050919050565b61217783612142565b61218b61218382612164565b8484546120e6565b825550505050565b600090565b6121a0612193565b6121ab81848461216e565b505050565b5b818110156121cf576121c4600082612198565b6001810190506121b1565b5050565b601f821115612214576121e5816120b4565b6121ee846120c9565b810160208510156121fd578190505b612211612209856120c9565b8301826121b0565b50505b505050565b600082821c905092915050565b600061223760001984600802612219565b1980831691505092915050565b60006122508383612226565b9150826002028217905092915050565b61226a838361201a565b67ffffffffffffffff81111561228357612282612025565b5b61228d8254612083565b6122988282856121d3565b6000601f8311600181146122c757600084156122b5578287013590505b6122bf8582612244565b865550612327565b601f1984166122d5866120b4565b60005b828110156122fd578489013582556001820191506020850194506020810190506122d8565b8683101561231a5784890135612316601f891682612226565b8355505b6001600288020188555050505b50505050505050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b6000612366601183611ae5565b915061237182612330565b602082019050919050565b6000602082019050818103600083015261239581612359565b9050919050565b60006123a7826118aa565b91506123b2836118aa565b92508282019050808211156123ca576123c9611fa3565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b6000612406602083611ae5565b9150612411826123d0565b602082019050919050565b60006020820190508181036000830152612435816123f9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6124a0816118aa565b82525050565b6124af8161186c565b82525050565b6040820160008201516124cb6000850182612497565b5060208201516124de60208501826124a6565b50505050565b60006124f083836124b5565b60408301905092915050565b6000602082019050919050565b60006125148261246b565b61251e8185612476565b935061252983612487565b8060005b8381101561255a57815161254188826124e4565b975061254c836124fc565b92505060018101905061252d565b5085935050505092915050565b6000815461257481612083565b61257e8186611ae5565b9450600182166000811461259957600181146125af576125e2565b60ff1983168652811515602002860193506125e2565b6125b8856120b4565b60005b838110156125da578154818901526001820191506020810190506125bb565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b60006126466126418361261c565b612629565b9050919050565b6000819050919050565b6126608161264d565b82525050565b600082825260208201905092915050565b6000815461268481612083565b61268e8186612666565b945060018216600081146126a957600181146126bf576126f2565b60ff1983168652811515602002860193506126f2565b6126c8856120b4565b60005b838110156126ea578154818901526001820191506020810190506126cb565b808801955050505b50505092915050565b600060408301600080840154905061271281612633565b61271f6000870182612657565b506001840185830360208701526127368382612677565b925050819250505092915050565b600061275083836126fb565b905092915050565b6000600282019050919050565b6000612770826125eb565b61277a81856125f6565b93508360208202850161278c85612607565b8060005b858110156127c7578484038952816127a88582612744565b94506127b383612758565b925060208a01995050600181019050612790565b50829750879550505050505092915050565b600060608201905081810360008301526127f38186612509565b905081810360208301526128078185612567565b9050818103604083015261281b8184612765565b9050949350505050565b600060408201905061283a6000830185611933565b6128476020830184611b76565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612888826118aa565b9150612893836118aa565b9250826128a3576128a261284e565b5b828204905092915050565b60006128b9826118aa565b91506128c4836118aa565b92508282039050818111156128dc576128db611fa3565b5b92915050565b600060029050919050565b600081905092915050565b6000819050919050565b600061290e8383612497565b60208301905092915050565b6000602082019050919050565b612930816128e2565b61293a81846128ed565b9250612945826128f8565b8060005b8381101561297657815161295d8782612902565b96506129688361291a565b925050600181019050612949565b505050505050565b6000819050919050565b60006129a361299e6129998461297e565b612138565b6118aa565b9050919050565b6129b381612988565b82525050565b600081519050919050565b600082825260208201905092915050565b60006129e0826129b9565b6129ea81856129c4565b93506129fa818560208601611af6565b612a0381611b20565b840191505092915050565b6000610140820190508181036000830152612a29818b612567565b9050612a38602083018a611933565b612a456040830189612927565b612a526080830188612927565b612a5f60c08301876129aa565b612a6c60e0830186611b76565b612a7a610100830185611b76565b818103610120830152612a8d81846129d5565b90509998505050505050505050565b600081519050612aab816118b4565b92915050565b600060208284031215612ac757612ac6611790565b5b6000612ad584828501612a9c565b91505092915050565b6000608082019050612af36000830187611933565b612b006020830186611a54565b612b0d6040830185611933565b612b1a6060830184611b76565b95945050505050565b82818337600083830152505050565b6000612b3e8385611ae5565b9350612b4b838584612b23565b612b5483611b20565b840190509392505050565b82818337505050565b612b7460608383612b5f565b5050565b600060e0820190508181036000830152612b9381888a612b32565b9050612ba26020830187611a54565b612baf6040830186612b68565b612bbc60a0830185611b76565b81810360c0830152612bce81846129d5565b9050979650505050505050565b7f6f6e56616c6964617465206d6179206f6e6c792062652063616c6c656420627960008201527f207468652044414f20636f6e7472616374000000000000000000000000000000602082015250565b6000612c37603183611ae5565b9150612c4282612bdb565b604082019050919050565b60006020820190508181036000830152612c6681612c2a565b9050919050565b600081519050919050565b6000819050602082019050919050565b6000612c9382611ada565b612c9d8185612666565b9350612cad818560208601611af6565b612cb681611b20565b840191505092915050565b6000604083016000830151612cd96000860182612657565b5060208301518482036020860152612cf18282612c88565b9150508091505092915050565b6000612d0a8383612cc1565b905092915050565b6000602082019050919050565b6000612d2a82612c6d565b612d3481856125f6565b935083602082028501612d4685612c78565b8060005b85811015612d825784840389528151612d638582612cfe565b9450612d6e83612d12565b925060208a01995050600181019050612d4a565b50829750879550505050505092915050565b60006060820190508181036000830152612dae8186612509565b90508181036020830152612dc28185612567565b90508181036040830152612dd68184612d1f565b9050949350505050565b50565b6000612df06000836129c4565b9150612dfb82612de0565b600082019050919050565b6000610140820190508181036000830152612e21818a612567565b9050612e306020830189611933565b612e3d6040830188612927565b612e4a6080830187612927565b612e5760c08301866129aa565b612e6460e0830185611b76565b612e72610100830184611b76565b818103610120830152612e8481612de3565b905098975050505050505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b6000612eee603383611ae5565b9150612ef982612e92565b604082019050919050565b60006020820190508181036000830152612f1d81612ee1565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b6000612f80602483611ae5565b9150612f8b82612f24565b604082019050919050565b60006020820190508181036000830152612faf81612f73565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b6000612fec601883611ae5565b9150612ff782612fb6565b602082019050919050565b6000602082019050818103600083015261301b81612fdf565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b600061307e603a83611ae5565b915061308982613022565b604082019050919050565b600060208201905081810360008301526130ad81613071565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126130df576130de6130b4565b5b80830191505092915050565b6130f48161264d565b81146130ff57600080fd5b50565b6000813561310f816130eb565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61315184613118565b9350801983169250808416831791505092915050565b600061318261317d6131788461264d565b612138565b61264d565b9050919050565b6000819050919050565b61319c82613167565b6131af6131a882613189565b8354613125565b8255505050565b600080833560016020038436030381126131d3576131d26130b4565b5b80840192508235915067ffffffffffffffff8211156131f5576131f46130b9565b5b602083019250600182023603831315613211576132106130be565b5b509250929050565b613224838383612260565b505050565b60008101600083018061323b81613102565b90506132478184613193565b505050600181016020830161325c81856131b6565b613267818386613219565b505050505050565b6132798282613229565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b60006132b3601a83611ae5565b91506132be8261327d565b602082019050919050565b600060208201905081810360008301526132e2816132a6565b9050919050565b60006132f4826118aa565b91506132ff836118aa565b92508261330f5761330e61284e565b5b82820690509291505056fea26469706673582212206e18b5b44c6fcdd479868a02ae8ae98200838357ab90af830d1b0e4af00035ba64736f6c63430008180033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/frontend/contractArtifacts/Proposals.json b/frontend/contractArtifacts/Proposals.json index 0491fe7..e7375c1 100644 --- a/frontend/contractArtifacts/Proposals.json +++ b/frontend/contractArtifacts/Proposals.json @@ -348,8 +348,8 @@ "type": "function" } ], - "bytecode": "0x60a06040526040518060600160405280600060ff168152602001600160ff168152602001606460ff1681525060029060036200003d929190620001ef565b5060405180606001604052806000151515158152602001600015151515815260200160011515151581525060059060036200007a92919062000239565b5060405180606001604052806040518060400160405280600160ff168152602001600a60ff1681525081526020016040518060400160405280600160ff168152602001600a60ff1681525081526020016040518060400160405280600160ff168152602001600a60ff168152508152506006906003620000fc929190620002d9565b5060405180606001604052806040518060400160405280600260ff168152602001600360ff1681525081526020016040518060400160405280600260ff168152602001600360ff1681525081526020016040518060400160405280600260ff168152602001600360ff16815250815250600c9060036200017e929190620002d9565b503480156200018c57600080fd5b50604051620039cf380380620039cf8339818101604052810190620001b291906200044e565b808073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050505062000480565b826003810192821562000226579160200282015b8281111562000225578251829060ff1690559160200191906001019062000203565b5b50905062000235919062000331565b5090565b826003601f01602090048101928215620002c65791602002820160005b838211156200029557835183826101000a81548160ff021916908315150217905550926020019260010160208160000104928301926001030262000256565b8015620002c45782816101000a81549060ff021916905560010160208160000104928301926001030262000295565b505b509050620002d5919062000331565b5090565b82600360020281019282156200031e579160200282015b828111156200031d578251829060026200030c92919062000350565b5091602001919060020190620002f0565b5b5090506200032d91906200039a565b5090565b5b808211156200034c57600081600090555060010162000332565b5090565b826002810192821562000387579160200282015b8281111562000386578251829060ff1690559160200191906001019062000364565b5b50905062000396919062000331565b5090565b5b80821115620003be5760008181620003b49190620003c2565b506002016200039b565b5090565b506000815560010160009055565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200040282620003d5565b9050919050565b60006200041682620003f5565b9050919050565b620004288162000409565b81146200043457600080fd5b50565b60008151905062000448816200041d565b92915050565b600060208284031215620004675762000466620003d0565b5b6000620004778482850162000437565b91505092915050565b608051613510620004bf6000396000818161046b01528181610a0101528181610bed01528181610de701528181611683015261185101526135106000f3fe60806040526004361061007b5760003560e01c8063b4e6a1d51161004e578063b4e6a1d51461015b578063c019faab14610198578063da35c664146101c1578063ea923e63146101ec5761007b565b8063013cf08b146100805780632805b5d9146100c557806362d26ed7146100f5578063a3bb24cc14610132575b600080fd5b34801561008c57600080fd5b506100a760048036038101906100a29190611b63565b610229565b6040516100bc99989796959493929190611d57565b60405180910390f35b6100df60048036038101906100da9190611f27565b6103c1565b6040516100ec9190611fe3565b60405180910390f35b34801561010157600080fd5b5061011c60048036038101906101179190611b63565b6106c5565b60405161012991906121e3565b60405180910390f35b34801561013e57600080fd5b50610159600480360381019061015491906121ff565b6109fe565b005b34801561016757600080fd5b50610182600480360381019061017d919061223f565b610be9565b60405161018f9190611fe3565b60405180910390f35b3480156101a457600080fd5b506101bf60048036038101906101ba9190611b63565b6114be565b005b3480156101cd57600080fd5b506101d66115ea565b6040516101e39190611fe3565b60405180910390f35b3480156101f857600080fd5b50610213600480360381019061020e9190611b63565b6115f0565b60405161022091906122d9565b60405180910390f35b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600101549080600201549080600301805461027e90612323565b80601f01602080910402602001604051908101604052809291908181526020018280546102aa90612323565b80156102f75780601f106102cc576101008083540402835291602001916102f7565b820191906000526020600020905b8154815290600101906020018083116102da57829003601f168201915b5050505050908060040154908060050160009054906101000a900460ff169080600701549080603b0160009054906101000a900460ff169080603c01805461033e90612323565b80601f016020809104026020016040519081016040528092919081815260200182805461036a90612323565b80156103b75780601f1061038c576101008083540402835291602001916103b7565b820191906000526020600020905b81548152906001019060200180831161039a57829003601f168201915b5050505050905089565b600060606000600167ffffffffffffffff8111156103e2576103e1612354565b5b60405190808252806020026020018201604052801561041b57816020015b610408611a54565b8152602001906001900390816104005790505b5090506040518060400160405280606481526020018973ffffffffffffffffffffffffffffffffffffffff168152508160008151811061045e5761045d612383565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d827828c8c866040518563ffffffff1660e01b81526004016104c8949392919061263d565b600060405180830381600087803b1580156104e257600080fd5b505af11580156104f6573d6000803e3d6000fd5b505050506001600081548092919061050d906126ba565b91905055925060008060008581526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508a8a82600301918261057f9291906128b9565b504281600401819055508760006003811061059d5761059c612383565b5b6020020135816008016000600381106105b9576105b8612383565b5b6011020160000181905550876001600381106105d8576105d7612383565b5b6020020135816008016001600381106105f4576105f3612383565b5b60110201600001819055508760026003811061061357610612612383565b5b60200201358160080160026003811061062f5761062e612383565b5b6011020160000181905550348160010181905550806001015481600201819055508681603b0160006101000a81548160ff021916908315150217905550858582603c01918261067f9291906129ef565b507f9a863892f20a6b9c6cec64d611b5864be6373191ce2cacc3b05a299bce3bf80e846040516106af9190611fe3565b60405180910390a1505050979650505050505050565b6106cd611a84565b60008060008481526020019081526020016000209050806008016000600381106106fa576106f9612383565b5b60110201600101600380602002604051908101604052809291906000905b828210156107ca578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff16151515158152505081526020019060010190610718565b50505050826000600381106107e2576107e1612383565b5b60200201819052508060080160016003811061080157610800612383565b5b60110201600101600380602002604051908101604052809291906000905b828210156108d1578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff1615151515815250508152602001906001019061081f565b50505050826001600381106108e9576108e8612383565b5b60200201819052508060080160026003811061090857610907612383565b5b60110201600101600380602002604051908101604052809291906000905b828210156109d8578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff16151515158152505081526020019060010190610926565b50505050826002600381106109f0576109ef612383565b5b602002018190525050919050565b807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610a589190612abf565b602060405180830381865afa158015610a75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a999190612aef565b1015610ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad190612b8e565b60405180910390fd5b600080600084815260200190815260200160002090508060060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054816007016000828254610b459190612bae565b92505081905550818160060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081816007016000828254610ba69190612be2565b925050819055507fc23775ba00d23f337b9f790bd67eb5194aa9b95876933f9ccd1887becbb55ccb83604051610bdc9190611fe3565b60405180910390a1505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7090612c88565b60405180910390fd5b60008060008585810190610c8d9190612ca8565b925092509250600080600085815260200190815260200160002090506000816008018460038110610cc157610cc0612383565b5b601102019050600081600101826010015460038110610ce357610ce2612383565b5b60050201905060018160010160016101000a81548160ff0219169083151502179055508a81600201819055508981600301819055508b8160040160016101000a81548160ff0219169083151502179055508c8160040160006101000a81548160ff0219169083151502179055508b610de35760048360050160006101000a81548160ff02191690836005811115610d7d57610d7c611c70565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb86604051610db19190612d47565b60405180910390a183836002016000828254610dcd9190612be2565b92505081905550600196505050505050506114b4565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e749190612aef565b8b8d610e809190612be2565b6002610e8c9190612d75565b1015905060016005811115610ea457610ea3611c70565b5b8460050160009054906101000a900460ff166005811115610ec857610ec7611c70565b5b03610fe95760008614610f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0790612e03565b60405180910390fd5b8d8015610f1a5750805b15610f515760028460050160006101000a81548160ff02191690836005811115610f4757610f46611c70565b5b0217905550610fe4565b6002836010015410610fc65760048460050160006101000a81548160ff02191690836005811115610f8557610f84611c70565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb87604051610fb99190612e6f565b60405180910390a1610fe3565b6001836010016000828254610fdb9190612be2565b925050819055505b5b611390565b60026005811115610ffd57610ffc611c70565b5b8460050160009054906101000a900460ff16600581111561102157611020611c70565b5b036111425760018614611069576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106090612ee9565b60405180910390fd5b8d80156110735750805b156110aa5760038460050160006101000a81548160ff021916908360058111156110a05761109f611c70565b5b021790555061113d565b600283601001541061111f5760048460050160006101000a81548160ff021916908360058111156110de576110dd611c70565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb876040516111129190612e6f565b60405180910390a161113c565b60018360100160008282546111349190612be2565b925050819055505b5b61138f565b6003600581111561115657611155611c70565b5b8460050160009054906101000a900460ff16600581111561117a57611179611c70565b5b0361138e57600286146111c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b990612f55565b60405180910390fd5b8d80156111cc5750805b156112fa5760058460050160006101000a81548160ff021916908360058111156111f9576111f8611c70565b5b02179055507fd24c2047577899547bacebb29e319fc7d73f6712b5adb401d45556f34bb2aa3b8760405161122d9190611fe3565b60405180910390a183603b0160009054906101000a900460ff16156112f5578360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663815a05728d8d87603c016040518463ffffffff1660e01b81526004016112b093929190612ff9565b6020604051808303816000875af11580156112cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f39190612aef565b505b61138d565b600283601001541061136f5760048460050160006101000a81548160ff0219169083600581111561132e5761132d611c70565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb876040516113629190612e6f565b60405180910390a161138c565b60018360100160008282546113849190612be2565b925050819055505b5b5b5b5b600160058111156113a4576113a3611c70565b5b8460050160009054906101000a900460ff1660058111156113c8576113c7611c70565b5b036113ee576113e9876000600a87600101546113e49190613066565b61181c565b6114a8565b6002600581111561140257611401611c70565b5b8460050160009054906101000a900460ff16600581111561142657611425611c70565b5b0361144c57611447876001600a87600101546114429190613066565b61181c565b6114a7565b600360058111156114605761145f611c70565b5b8460050160009054906101000a900460ff16600581111561148457611483611c70565b5b036114a6576114a5876002600a87600101546114a09190613066565b61181c565b5b5b5b60009750505050505050505b9695505050505050565b60008060008381526020019081526020016000209050600460058111156114e8576114e7611c70565b5b8160050160009054906101000a900460ff16600581111561150c5761150b611c70565b5b148061154c575060058081111561152657611525611c70565b5b8160050160009054906101000a900460ff16600581111561154a57611549611c70565b5b145b61158b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115829061312f565b60405180910390fd5b600081600201549050600082600201819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156115e4573d6000803e3d6000fd5b50505050565b60015481565b60008060008084815260200190815260200160002090506000600581111561161b5761161a611c70565b5b8160050160009054906101000a900460ff16600581111561163f5761163e611c70565b5b1461167f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611676906131c1565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117109190612aef565b8260070154600a6117219190612d75565b1015905060006301e13380836004015461173b9190612be2565b42119050816117c65780156117ba5760048360050160006101000a81548160ff0219169083600581111561177257611771611c70565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb856040516117a69190613253565b60405180910390a160009350505050611817565b60009350505050611817565b60018360050160006101000a81548160ff021916908360058111156117ee576117ed611c70565b5b021790555061180f856000600a866001015461180a9190613066565b61181c565b600193505050505b919050565b60008060008581526020019081526020016000209050818160020160008282546118469190612bae565b9250508190555060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c7384846003018560080188600381106118a6576118a5612383565b5b6011020160000154600689600381106118c2576118c1612383565b5b60020201600c8a600381106118da576118d9612383565b5b6002020160028b600381106118f2576118f1612383565b5b015460058c6003811061190857611907612383565b5b602091828204019190069054906101000a900460ff1660018e8e8e60405160200161193593929190613281565b6040516020818303038152906040526040518a63ffffffff1660e01b8152600401611967989796959493929190613423565b60206040518083038185885af1158015611985573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119aa9190612aef565b905060008260080185600381106119c4576119c3612383565b5b6011020190506000816001018260100154600381106119e6576119e5612383565b5b60050201905082816000018190555060018160010160006101000a81548160ff0219169083151502179055507f4c14e16a98683e5b8bd70d51192048d0499fb3999b27ff1e9dce7e4a2c6734798784604051611a439291906134b1565b60405180910390a150505050505050565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b60405180606001604052806003905b611a9b611ab1565b815260200190600190039081611a935790505090565b60405180606001604052806003905b611ac8611ade565b815260200190600190039081611ac05790505090565b6040518060e001604052806000815260200160001515815260200160001515815260200160008152602001600081526020016000151581526020016000151581525090565b600080fd5b600080fd5b6000819050919050565b611b4081611b2d565b8114611b4b57600080fd5b50565b600081359050611b5d81611b37565b92915050565b600060208284031215611b7957611b78611b23565b5b6000611b8784828501611b4e565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611bbb82611b90565b9050919050565b611bcb81611bb0565b82525050565b611bda81611b2d565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611c1a578082015181840152602081019050611bff565b60008484015250505050565b6000601f19601f8301169050919050565b6000611c4282611be0565b611c4c8185611beb565b9350611c5c818560208601611bfc565b611c6581611c26565b840191505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60068110611cb057611caf611c70565b5b50565b6000819050611cc182611c9f565b919050565b6000611cd182611cb3565b9050919050565b611ce181611cc6565b82525050565b60008115159050919050565b611cfc81611ce7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000611d2982611d02565b611d338185611d0d565b9350611d43818560208601611bfc565b611d4c81611c26565b840191505092915050565b600061012082019050611d6d600083018c611bc2565b611d7a602083018b611bd1565b611d87604083018a611bd1565b8181036060830152611d998189611c37565b9050611da86080830188611bd1565b611db560a0830187611cd8565b611dc260c0830186611bd1565b611dcf60e0830185611cf3565b818103610100830152611de28184611d1e565b90509a9950505050505050505050565b600080fd5b600080fd5b600080fd5b60008083601f840112611e1757611e16611df2565b5b8235905067ffffffffffffffff811115611e3457611e33611df7565b5b602083019150836001820283011115611e5057611e4f611dfc565b5b9250929050565b611e6081611bb0565b8114611e6b57600080fd5b50565b600081359050611e7d81611e57565b92915050565b600081905082602060030282011115611e9f57611e9e611dfc565b5b92915050565b611eae81611ce7565b8114611eb957600080fd5b50565b600081359050611ecb81611ea5565b92915050565b60008083601f840112611ee757611ee6611df2565b5b8235905067ffffffffffffffff811115611f0457611f03611df7565b5b602083019150836001820283011115611f2057611f1f611dfc565b5b9250929050565b600080600080600080600060e0888a031215611f4657611f45611b23565b5b600088013567ffffffffffffffff811115611f6457611f63611b28565b5b611f708a828b01611e01565b97509750506020611f838a828b01611e6e565b9550506040611f948a828b01611e83565b94505060a0611fa58a828b01611ebc565b93505060c088013567ffffffffffffffff811115611fc657611fc5611b28565b5b611fd28a828b01611ed1565b925092505092959891949750929550565b6000602082019050611ff86000830184611bd1565b92915050565b600060039050919050565b600081905092915050565b6000819050919050565b600060039050919050565b600081905092915050565b6000819050919050565b61204781611b2d565b82525050565b61205681611ce7565b82525050565b60e082016000820151612072600085018261203e565b506020820151612085602085018261204d565b506040820151612098604085018261204d565b5060608201516120ab606085018261203e565b5060808201516120be608085018261203e565b5060a08201516120d160a085018261204d565b5060c08201516120e460c085018261204d565b50505050565b60006120f6838361205c565b60e08301905092915050565b6000602082019050919050565b6121188161201e565b6121228184612029565b925061212d82612034565b8060005b8381101561215e57815161214587826120ea565b965061215083612102565b925050600181019050612131565b505050505050565b6000612172838361210f565b6102a08301905092915050565b6000602082019050919050565b61219581611ffe565b61219f8184612009565b92506121aa82612014565b8060005b838110156121db5781516121c28782612166565b96506121cd8361217f565b9250506001810190506121ae565b505050505050565b60006107e0820190506121f9600083018461218c565b92915050565b6000806040838503121561221657612215611b23565b5b600061222485828601611b4e565b925050602061223585828601611b4e565b9150509250929050565b60008060008060008060a0878903121561225c5761225b611b23565b5b600061226a89828a01611ebc565b965050602061227b89828a01611ebc565b955050604061228c89828a01611b4e565b945050606061229d89828a01611b4e565b935050608087013567ffffffffffffffff8111156122be576122bd611b28565b5b6122ca89828a01611ed1565b92509250509295509295509295565b60006020820190506122ee6000830184611cf3565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061233b57607f821691505b60208210810361234e5761234d6122f4565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6123e781611bb0565b82525050565b604082016000820151612403600085018261203e565b50602082015161241660208501826123de565b50505050565b600061242883836123ed565b60408301905092915050565b6000602082019050919050565b600061244c826123b2565b61245681856123bd565b9350612461836123ce565b8060005b83811015612492578151612479888261241c565b975061248483612434565b925050600181019050612465565b5085935050505092915050565b82818337600083830152505050565b60006124ba8385611beb565b93506124c783858461249f565b6124d083611c26565b840190509392505050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000819050919050565b61251a81612507565b82525050565b600082825260208201905092915050565b600061253c82611be0565b6125468185612520565b9350612556818560208601611bfc565b61255f81611c26565b840191505092915050565b60006040830160008301516125826000860182612511565b506020830151848203602086015261259a8282612531565b9150508091505092915050565b60006125b3838361256a565b905092915050565b6000602082019050919050565b60006125d3826124db565b6125dd81856124e6565b9350836020820285016125ef856124f7565b8060005b8581101561262b578484038952815161260c85826125a7565b9450612617836125bb565b925060208a019950506001810190506125f3565b50829750879550505050505092915050565b600060608201905081810360008301526126578187612441565b9050818103602083015261266c8185876124ae565b9050818103604083015261268081846125c8565b905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006126c582611b2d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036126f7576126f661268b565b5b600182019050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261276f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612732565b6127798683612732565b95508019841693508086168417925050509392505050565b6000819050919050565b60006127b66127b16127ac84611b2d565b612791565b611b2d565b9050919050565b6000819050919050565b6127d08361279b565b6127e46127dc826127bd565b84845461273f565b825550505050565b600090565b6127f96127ec565b6128048184846127c7565b505050565b5b818110156128285761281d6000826127f1565b60018101905061280a565b5050565b601f82111561286d5761283e8161270d565b61284784612722565b81016020851015612856578190505b61286a61286285612722565b830182612809565b50505b505050565b600082821c905092915050565b600061289060001984600802612872565b1980831691505092915050565b60006128a9838361287f565b9150826002028217905092915050565b6128c38383612702565b67ffffffffffffffff8111156128dc576128db612354565b5b6128e68254612323565b6128f182828561282c565b6000601f831160018114612920576000841561290e578287013590505b612918858261289d565b865550612980565b601f19841661292e8661270d565b60005b8281101561295657848901358255600182019150602085019450602081019050612931565b86831015612973578489013561296f601f89168261287f565b8355505b6001600288020188555050505b50505050505050565b600082905092915050565b60008190508160005260206000209050919050565b601f8211156129ea576129bb81612994565b6129c484612722565b810160208510156129d3578190505b6129e76129df85612722565b830182612809565b50505b505050565b6129f98383612989565b67ffffffffffffffff811115612a1257612a11612354565b5b612a1c8254612323565b612a278282856129a9565b6000601f831160018114612a565760008415612a44578287013590505b612a4e858261289d565b865550612ab6565b601f198416612a6486612994565b60005b82811015612a8c57848901358255600182019150602085019450602081019050612a67565b86831015612aa95784890135612aa5601f89168261287f565b8355505b6001600288020188555050505b50505050505050565b6000602082019050612ad46000830184611bc2565b92915050565b600081519050612ae981611b37565b92915050565b600060208284031215612b0557612b04611b23565b5b6000612b1384828501612ada565b91505092915050565b7f53656e6465722068617320696e73756666696369656e74205245502062616c6160008201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b6000612b78602383611beb565b9150612b8382612b1c565b604082019050919050565b60006020820190508181036000830152612ba781612b6b565b9050919050565b6000612bb982611b2d565b9150612bc483611b2d565b9250828203905081811115612bdc57612bdb61268b565b5b92915050565b6000612bed82611b2d565b9150612bf883611b2d565b9250828201905080821115612c1057612c0f61268b565b5b92915050565b7f6f6e56616c6964617465206d6179206f6e6c792062652063616c6c656420627960008201527f207468652044414f20636f6e7472616374000000000000000000000000000000602082015250565b6000612c72603183611beb565b9150612c7d82612c16565b604082019050919050565b60006020820190508181036000830152612ca181612c65565b9050919050565b600080600060608486031215612cc157612cc0611b23565b5b6000612ccf86828701611b4e565b9350506020612ce086828701611b4e565b9250506040612cf186828701611b4e565b9150509250925092565b7f51756f72756d206e6f74206d6574000000000000000000000000000000000000600082015250565b6000612d31600e83611beb565b9150612d3c82612cfb565b602082019050919050565b6000604082019050612d5c6000830184611bd1565b8181036020830152612d6d81612d24565b905092915050565b6000612d8082611b2d565b9150612d8b83611b2d565b9250828202612d9981611b2d565b91508282048414831517612db057612daf61268b565b5b5092915050565b7f5374616765203020696e646578206d69736d6174636800000000000000000000600082015250565b6000612ded601683611beb565b9150612df882612db7565b602082019050919050565b60006020820190508181036000830152612e1c81612de0565b9050919050565b7f526574727920636f756e74206578636565646564000000000000000000000000600082015250565b6000612e59601483611beb565b9150612e6482612e23565b602082019050919050565b6000604082019050612e846000830184611bd1565b8181036020830152612e9581612e4c565b905092915050565b7f5374616765203120696e646578206d69736d6174636800000000000000000000600082015250565b6000612ed3601683611beb565b9150612ede82612e9d565b602082019050919050565b60006020820190508181036000830152612f0281612ec6565b9050919050565b7f5374616765203220696e646578206d69736d6174636800000000000000000000600082015250565b6000612f3f601683611beb565b9150612f4a82612f09565b602082019050919050565b60006020820190508181036000830152612f6e81612f32565b9050919050565b60008154612f8281612323565b612f8c8186611d0d565b94506001821660008114612fa75760018114612fbd57612ff0565b60ff198316865281151560200286019350612ff0565b612fc685612994565b60005b83811015612fe857815481890152600182019150602081019050612fc9565b808801955050505b50505092915050565b600060608201905061300e6000830186611bd1565b61301b6020830185611bd1565b818103604083015261302d8184612f75565b9050949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061307182611b2d565b915061307c83611b2d565b92508261308c5761308b613037565b5b828204905092915050565b7f52656d61696e696e6720666565732063616e206f6e6c79206265207265636c6160008201527f696d6564207768656e2070726f706f73616c20686173206265656e206163636560208201527f70746564206f72206661696c6564000000000000000000000000000000000000604082015250565b6000613119604e83611beb565b915061312482613097565b606082019050919050565b600060208201905081810360008301526131488161310c565b9050919050565b7f4174746573746174696f6e206f6e6c79207065727461696e7320746f2050726f60008201527f706f73616c207374616765000000000000000000000000000000000000000000602082015250565b60006131ab602b83611beb565b91506131b68261314f565b604082019050919050565b600060208201905081810360008301526131da8161319e565b9050919050565b7f4578706972656420776974686f7574206d656574696e6720617474657374617460008201527f696f6e207468726573686f6c6400000000000000000000000000000000000000602082015250565b600061323d602d83611beb565b9150613248826131e1565b604082019050919050565b60006040820190506132686000830184611bd1565b818103602083015261327981613230565b905092915050565b60006060820190506132966000830186611bd1565b6132a36020830185611bd1565b6132b06040830184611bd1565b949350505050565b600081546132c581612323565b6132cf8186611beb565b945060018216600081146132ea576001811461330057613333565b60ff198316865281151560200286019350613333565b6133098561270d565b60005b8381101561332b5781548189015260018201915060208101905061330c565b808801955050505b50505092915050565b600060029050919050565b600081905092915050565b6000819050919050565b6000613368838361203e565b60208301905092915050565b60008160001c9050919050565b6000819050919050565b600061339e61339983613374565b613381565b9050919050565b60006133b1825461338b565b9050919050565b6000600182019050919050565b6133ce8161333c565b6133d88184613347565b92506133e382613352565b8060005b8381101561341b576133f8826133a5565b613402878261335c565b965061340d836133b8565b9250506001810190506133e7565b505050505050565b600061014082019050818103600083015261343e818b6132b8565b905061344d602083018a611bd1565b61345a60408301896133c5565b61346760808301886133c5565b61347460c0830187611bd1565b61348160e0830186611cf3565b61348f610100830185611cf3565b8181036101208301526134a28184611d1e565b90509998505050505050505050565b60006040820190506134c66000830185611bd1565b6134d36020830184611bd1565b939250505056fea26469706673582212206762b0e3b407cd420cb9bdf0883517503c54ce561ac6228459ea6d2de0d1511d64736f6c63430008180033", - "deployedBytecode": "0x60806040526004361061007b5760003560e01c8063b4e6a1d51161004e578063b4e6a1d51461015b578063c019faab14610198578063da35c664146101c1578063ea923e63146101ec5761007b565b8063013cf08b146100805780632805b5d9146100c557806362d26ed7146100f5578063a3bb24cc14610132575b600080fd5b34801561008c57600080fd5b506100a760048036038101906100a29190611b63565b610229565b6040516100bc99989796959493929190611d57565b60405180910390f35b6100df60048036038101906100da9190611f27565b6103c1565b6040516100ec9190611fe3565b60405180910390f35b34801561010157600080fd5b5061011c60048036038101906101179190611b63565b6106c5565b60405161012991906121e3565b60405180910390f35b34801561013e57600080fd5b50610159600480360381019061015491906121ff565b6109fe565b005b34801561016757600080fd5b50610182600480360381019061017d919061223f565b610be9565b60405161018f9190611fe3565b60405180910390f35b3480156101a457600080fd5b506101bf60048036038101906101ba9190611b63565b6114be565b005b3480156101cd57600080fd5b506101d66115ea565b6040516101e39190611fe3565b60405180910390f35b3480156101f857600080fd5b50610213600480360381019061020e9190611b63565b6115f0565b60405161022091906122d9565b60405180910390f35b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600101549080600201549080600301805461027e90612323565b80601f01602080910402602001604051908101604052809291908181526020018280546102aa90612323565b80156102f75780601f106102cc576101008083540402835291602001916102f7565b820191906000526020600020905b8154815290600101906020018083116102da57829003601f168201915b5050505050908060040154908060050160009054906101000a900460ff169080600701549080603b0160009054906101000a900460ff169080603c01805461033e90612323565b80601f016020809104026020016040519081016040528092919081815260200182805461036a90612323565b80156103b75780601f1061038c576101008083540402835291602001916103b7565b820191906000526020600020905b81548152906001019060200180831161039a57829003601f168201915b5050505050905089565b600060606000600167ffffffffffffffff8111156103e2576103e1612354565b5b60405190808252806020026020018201604052801561041b57816020015b610408611a54565b8152602001906001900390816104005790505b5090506040518060400160405280606481526020018973ffffffffffffffffffffffffffffffffffffffff168152508160008151811061045e5761045d612383565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d827828c8c866040518563ffffffff1660e01b81526004016104c8949392919061263d565b600060405180830381600087803b1580156104e257600080fd5b505af11580156104f6573d6000803e3d6000fd5b505050506001600081548092919061050d906126ba565b91905055925060008060008581526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508a8a82600301918261057f9291906128b9565b504281600401819055508760006003811061059d5761059c612383565b5b6020020135816008016000600381106105b9576105b8612383565b5b6011020160000181905550876001600381106105d8576105d7612383565b5b6020020135816008016001600381106105f4576105f3612383565b5b60110201600001819055508760026003811061061357610612612383565b5b60200201358160080160026003811061062f5761062e612383565b5b6011020160000181905550348160010181905550806001015481600201819055508681603b0160006101000a81548160ff021916908315150217905550858582603c01918261067f9291906129ef565b507f9a863892f20a6b9c6cec64d611b5864be6373191ce2cacc3b05a299bce3bf80e846040516106af9190611fe3565b60405180910390a1505050979650505050505050565b6106cd611a84565b60008060008481526020019081526020016000209050806008016000600381106106fa576106f9612383565b5b60110201600101600380602002604051908101604052809291906000905b828210156107ca578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff16151515158152505081526020019060010190610718565b50505050826000600381106107e2576107e1612383565b5b60200201819052508060080160016003811061080157610800612383565b5b60110201600101600380602002604051908101604052809291906000905b828210156108d1578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff1615151515815250508152602001906001019061081f565b50505050826001600381106108e9576108e8612383565b5b60200201819052508060080160026003811061090857610907612383565b5b60110201600101600380602002604051908101604052809291906000905b828210156109d8578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff16151515158152505081526020019060010190610926565b50505050826002600381106109f0576109ef612383565b5b602002018190525050919050565b807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610a589190612abf565b602060405180830381865afa158015610a75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a999190612aef565b1015610ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad190612b8e565b60405180910390fd5b600080600084815260200190815260200160002090508060060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054816007016000828254610b459190612bae565b92505081905550818160060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081816007016000828254610ba69190612be2565b925050819055507fc23775ba00d23f337b9f790bd67eb5194aa9b95876933f9ccd1887becbb55ccb83604051610bdc9190611fe3565b60405180910390a1505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7090612c88565b60405180910390fd5b60008060008585810190610c8d9190612ca8565b925092509250600080600085815260200190815260200160002090506000816008018460038110610cc157610cc0612383565b5b601102019050600081600101826010015460038110610ce357610ce2612383565b5b60050201905060018160010160016101000a81548160ff0219169083151502179055508a81600201819055508981600301819055508b8160040160016101000a81548160ff0219169083151502179055508c8160040160006101000a81548160ff0219169083151502179055508b610de35760048360050160006101000a81548160ff02191690836005811115610d7d57610d7c611c70565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb86604051610db19190612d47565b60405180910390a183836002016000828254610dcd9190612be2565b92505081905550600196505050505050506114b4565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e749190612aef565b8b8d610e809190612be2565b6002610e8c9190612d75565b1015905060016005811115610ea457610ea3611c70565b5b8460050160009054906101000a900460ff166005811115610ec857610ec7611c70565b5b03610fe95760008614610f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0790612e03565b60405180910390fd5b8d8015610f1a5750805b15610f515760028460050160006101000a81548160ff02191690836005811115610f4757610f46611c70565b5b0217905550610fe4565b6002836010015410610fc65760048460050160006101000a81548160ff02191690836005811115610f8557610f84611c70565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb87604051610fb99190612e6f565b60405180910390a1610fe3565b6001836010016000828254610fdb9190612be2565b925050819055505b5b611390565b60026005811115610ffd57610ffc611c70565b5b8460050160009054906101000a900460ff16600581111561102157611020611c70565b5b036111425760018614611069576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106090612ee9565b60405180910390fd5b8d80156110735750805b156110aa5760038460050160006101000a81548160ff021916908360058111156110a05761109f611c70565b5b021790555061113d565b600283601001541061111f5760048460050160006101000a81548160ff021916908360058111156110de576110dd611c70565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb876040516111129190612e6f565b60405180910390a161113c565b60018360100160008282546111349190612be2565b925050819055505b5b61138f565b6003600581111561115657611155611c70565b5b8460050160009054906101000a900460ff16600581111561117a57611179611c70565b5b0361138e57600286146111c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b990612f55565b60405180910390fd5b8d80156111cc5750805b156112fa5760058460050160006101000a81548160ff021916908360058111156111f9576111f8611c70565b5b02179055507fd24c2047577899547bacebb29e319fc7d73f6712b5adb401d45556f34bb2aa3b8760405161122d9190611fe3565b60405180910390a183603b0160009054906101000a900460ff16156112f5578360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663815a05728d8d87603c016040518463ffffffff1660e01b81526004016112b093929190612ff9565b6020604051808303816000875af11580156112cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f39190612aef565b505b61138d565b600283601001541061136f5760048460050160006101000a81548160ff0219169083600581111561132e5761132d611c70565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb876040516113629190612e6f565b60405180910390a161138c565b60018360100160008282546113849190612be2565b925050819055505b5b5b5b5b600160058111156113a4576113a3611c70565b5b8460050160009054906101000a900460ff1660058111156113c8576113c7611c70565b5b036113ee576113e9876000600a87600101546113e49190613066565b61181c565b6114a8565b6002600581111561140257611401611c70565b5b8460050160009054906101000a900460ff16600581111561142657611425611c70565b5b0361144c57611447876001600a87600101546114429190613066565b61181c565b6114a7565b600360058111156114605761145f611c70565b5b8460050160009054906101000a900460ff16600581111561148457611483611c70565b5b036114a6576114a5876002600a87600101546114a09190613066565b61181c565b5b5b5b60009750505050505050505b9695505050505050565b60008060008381526020019081526020016000209050600460058111156114e8576114e7611c70565b5b8160050160009054906101000a900460ff16600581111561150c5761150b611c70565b5b148061154c575060058081111561152657611525611c70565b5b8160050160009054906101000a900460ff16600581111561154a57611549611c70565b5b145b61158b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115829061312f565b60405180910390fd5b600081600201549050600082600201819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156115e4573d6000803e3d6000fd5b50505050565b60015481565b60008060008084815260200190815260200160002090506000600581111561161b5761161a611c70565b5b8160050160009054906101000a900460ff16600581111561163f5761163e611c70565b5b1461167f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611676906131c1565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117109190612aef565b8260070154600a6117219190612d75565b1015905060006301e13380836004015461173b9190612be2565b42119050816117c65780156117ba5760048360050160006101000a81548160ff0219169083600581111561177257611771611c70565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb856040516117a69190613253565b60405180910390a160009350505050611817565b60009350505050611817565b60018360050160006101000a81548160ff021916908360058111156117ee576117ed611c70565b5b021790555061180f856000600a866001015461180a9190613066565b61181c565b600193505050505b919050565b60008060008581526020019081526020016000209050818160020160008282546118469190612bae565b9250508190555060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c7384846003018560080188600381106118a6576118a5612383565b5b6011020160000154600689600381106118c2576118c1612383565b5b60020201600c8a600381106118da576118d9612383565b5b6002020160028b600381106118f2576118f1612383565b5b015460058c6003811061190857611907612383565b5b602091828204019190069054906101000a900460ff1660018e8e8e60405160200161193593929190613281565b6040516020818303038152906040526040518a63ffffffff1660e01b8152600401611967989796959493929190613423565b60206040518083038185885af1158015611985573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119aa9190612aef565b905060008260080185600381106119c4576119c3612383565b5b6011020190506000816001018260100154600381106119e6576119e5612383565b5b60050201905082816000018190555060018160010160006101000a81548160ff0219169083151502179055507f4c14e16a98683e5b8bd70d51192048d0499fb3999b27ff1e9dce7e4a2c6734798784604051611a439291906134b1565b60405180910390a150505050505050565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b60405180606001604052806003905b611a9b611ab1565b815260200190600190039081611a935790505090565b60405180606001604052806003905b611ac8611ade565b815260200190600190039081611ac05790505090565b6040518060e001604052806000815260200160001515815260200160001515815260200160008152602001600081526020016000151581526020016000151581525090565b600080fd5b600080fd5b6000819050919050565b611b4081611b2d565b8114611b4b57600080fd5b50565b600081359050611b5d81611b37565b92915050565b600060208284031215611b7957611b78611b23565b5b6000611b8784828501611b4e565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611bbb82611b90565b9050919050565b611bcb81611bb0565b82525050565b611bda81611b2d565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611c1a578082015181840152602081019050611bff565b60008484015250505050565b6000601f19601f8301169050919050565b6000611c4282611be0565b611c4c8185611beb565b9350611c5c818560208601611bfc565b611c6581611c26565b840191505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60068110611cb057611caf611c70565b5b50565b6000819050611cc182611c9f565b919050565b6000611cd182611cb3565b9050919050565b611ce181611cc6565b82525050565b60008115159050919050565b611cfc81611ce7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000611d2982611d02565b611d338185611d0d565b9350611d43818560208601611bfc565b611d4c81611c26565b840191505092915050565b600061012082019050611d6d600083018c611bc2565b611d7a602083018b611bd1565b611d87604083018a611bd1565b8181036060830152611d998189611c37565b9050611da86080830188611bd1565b611db560a0830187611cd8565b611dc260c0830186611bd1565b611dcf60e0830185611cf3565b818103610100830152611de28184611d1e565b90509a9950505050505050505050565b600080fd5b600080fd5b600080fd5b60008083601f840112611e1757611e16611df2565b5b8235905067ffffffffffffffff811115611e3457611e33611df7565b5b602083019150836001820283011115611e5057611e4f611dfc565b5b9250929050565b611e6081611bb0565b8114611e6b57600080fd5b50565b600081359050611e7d81611e57565b92915050565b600081905082602060030282011115611e9f57611e9e611dfc565b5b92915050565b611eae81611ce7565b8114611eb957600080fd5b50565b600081359050611ecb81611ea5565b92915050565b60008083601f840112611ee757611ee6611df2565b5b8235905067ffffffffffffffff811115611f0457611f03611df7565b5b602083019150836001820283011115611f2057611f1f611dfc565b5b9250929050565b600080600080600080600060e0888a031215611f4657611f45611b23565b5b600088013567ffffffffffffffff811115611f6457611f63611b28565b5b611f708a828b01611e01565b97509750506020611f838a828b01611e6e565b9550506040611f948a828b01611e83565b94505060a0611fa58a828b01611ebc565b93505060c088013567ffffffffffffffff811115611fc657611fc5611b28565b5b611fd28a828b01611ed1565b925092505092959891949750929550565b6000602082019050611ff86000830184611bd1565b92915050565b600060039050919050565b600081905092915050565b6000819050919050565b600060039050919050565b600081905092915050565b6000819050919050565b61204781611b2d565b82525050565b61205681611ce7565b82525050565b60e082016000820151612072600085018261203e565b506020820151612085602085018261204d565b506040820151612098604085018261204d565b5060608201516120ab606085018261203e565b5060808201516120be608085018261203e565b5060a08201516120d160a085018261204d565b5060c08201516120e460c085018261204d565b50505050565b60006120f6838361205c565b60e08301905092915050565b6000602082019050919050565b6121188161201e565b6121228184612029565b925061212d82612034565b8060005b8381101561215e57815161214587826120ea565b965061215083612102565b925050600181019050612131565b505050505050565b6000612172838361210f565b6102a08301905092915050565b6000602082019050919050565b61219581611ffe565b61219f8184612009565b92506121aa82612014565b8060005b838110156121db5781516121c28782612166565b96506121cd8361217f565b9250506001810190506121ae565b505050505050565b60006107e0820190506121f9600083018461218c565b92915050565b6000806040838503121561221657612215611b23565b5b600061222485828601611b4e565b925050602061223585828601611b4e565b9150509250929050565b60008060008060008060a0878903121561225c5761225b611b23565b5b600061226a89828a01611ebc565b965050602061227b89828a01611ebc565b955050604061228c89828a01611b4e565b945050606061229d89828a01611b4e565b935050608087013567ffffffffffffffff8111156122be576122bd611b28565b5b6122ca89828a01611ed1565b92509250509295509295509295565b60006020820190506122ee6000830184611cf3565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061233b57607f821691505b60208210810361234e5761234d6122f4565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6123e781611bb0565b82525050565b604082016000820151612403600085018261203e565b50602082015161241660208501826123de565b50505050565b600061242883836123ed565b60408301905092915050565b6000602082019050919050565b600061244c826123b2565b61245681856123bd565b9350612461836123ce565b8060005b83811015612492578151612479888261241c565b975061248483612434565b925050600181019050612465565b5085935050505092915050565b82818337600083830152505050565b60006124ba8385611beb565b93506124c783858461249f565b6124d083611c26565b840190509392505050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000819050919050565b61251a81612507565b82525050565b600082825260208201905092915050565b600061253c82611be0565b6125468185612520565b9350612556818560208601611bfc565b61255f81611c26565b840191505092915050565b60006040830160008301516125826000860182612511565b506020830151848203602086015261259a8282612531565b9150508091505092915050565b60006125b3838361256a565b905092915050565b6000602082019050919050565b60006125d3826124db565b6125dd81856124e6565b9350836020820285016125ef856124f7565b8060005b8581101561262b578484038952815161260c85826125a7565b9450612617836125bb565b925060208a019950506001810190506125f3565b50829750879550505050505092915050565b600060608201905081810360008301526126578187612441565b9050818103602083015261266c8185876124ae565b9050818103604083015261268081846125c8565b905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006126c582611b2d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036126f7576126f661268b565b5b600182019050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261276f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612732565b6127798683612732565b95508019841693508086168417925050509392505050565b6000819050919050565b60006127b66127b16127ac84611b2d565b612791565b611b2d565b9050919050565b6000819050919050565b6127d08361279b565b6127e46127dc826127bd565b84845461273f565b825550505050565b600090565b6127f96127ec565b6128048184846127c7565b505050565b5b818110156128285761281d6000826127f1565b60018101905061280a565b5050565b601f82111561286d5761283e8161270d565b61284784612722565b81016020851015612856578190505b61286a61286285612722565b830182612809565b50505b505050565b600082821c905092915050565b600061289060001984600802612872565b1980831691505092915050565b60006128a9838361287f565b9150826002028217905092915050565b6128c38383612702565b67ffffffffffffffff8111156128dc576128db612354565b5b6128e68254612323565b6128f182828561282c565b6000601f831160018114612920576000841561290e578287013590505b612918858261289d565b865550612980565b601f19841661292e8661270d565b60005b8281101561295657848901358255600182019150602085019450602081019050612931565b86831015612973578489013561296f601f89168261287f565b8355505b6001600288020188555050505b50505050505050565b600082905092915050565b60008190508160005260206000209050919050565b601f8211156129ea576129bb81612994565b6129c484612722565b810160208510156129d3578190505b6129e76129df85612722565b830182612809565b50505b505050565b6129f98383612989565b67ffffffffffffffff811115612a1257612a11612354565b5b612a1c8254612323565b612a278282856129a9565b6000601f831160018114612a565760008415612a44578287013590505b612a4e858261289d565b865550612ab6565b601f198416612a6486612994565b60005b82811015612a8c57848901358255600182019150602085019450602081019050612a67565b86831015612aa95784890135612aa5601f89168261287f565b8355505b6001600288020188555050505b50505050505050565b6000602082019050612ad46000830184611bc2565b92915050565b600081519050612ae981611b37565b92915050565b600060208284031215612b0557612b04611b23565b5b6000612b1384828501612ada565b91505092915050565b7f53656e6465722068617320696e73756666696369656e74205245502062616c6160008201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b6000612b78602383611beb565b9150612b8382612b1c565b604082019050919050565b60006020820190508181036000830152612ba781612b6b565b9050919050565b6000612bb982611b2d565b9150612bc483611b2d565b9250828203905081811115612bdc57612bdb61268b565b5b92915050565b6000612bed82611b2d565b9150612bf883611b2d565b9250828201905080821115612c1057612c0f61268b565b5b92915050565b7f6f6e56616c6964617465206d6179206f6e6c792062652063616c6c656420627960008201527f207468652044414f20636f6e7472616374000000000000000000000000000000602082015250565b6000612c72603183611beb565b9150612c7d82612c16565b604082019050919050565b60006020820190508181036000830152612ca181612c65565b9050919050565b600080600060608486031215612cc157612cc0611b23565b5b6000612ccf86828701611b4e565b9350506020612ce086828701611b4e565b9250506040612cf186828701611b4e565b9150509250925092565b7f51756f72756d206e6f74206d6574000000000000000000000000000000000000600082015250565b6000612d31600e83611beb565b9150612d3c82612cfb565b602082019050919050565b6000604082019050612d5c6000830184611bd1565b8181036020830152612d6d81612d24565b905092915050565b6000612d8082611b2d565b9150612d8b83611b2d565b9250828202612d9981611b2d565b91508282048414831517612db057612daf61268b565b5b5092915050565b7f5374616765203020696e646578206d69736d6174636800000000000000000000600082015250565b6000612ded601683611beb565b9150612df882612db7565b602082019050919050565b60006020820190508181036000830152612e1c81612de0565b9050919050565b7f526574727920636f756e74206578636565646564000000000000000000000000600082015250565b6000612e59601483611beb565b9150612e6482612e23565b602082019050919050565b6000604082019050612e846000830184611bd1565b8181036020830152612e9581612e4c565b905092915050565b7f5374616765203120696e646578206d69736d6174636800000000000000000000600082015250565b6000612ed3601683611beb565b9150612ede82612e9d565b602082019050919050565b60006020820190508181036000830152612f0281612ec6565b9050919050565b7f5374616765203220696e646578206d69736d6174636800000000000000000000600082015250565b6000612f3f601683611beb565b9150612f4a82612f09565b602082019050919050565b60006020820190508181036000830152612f6e81612f32565b9050919050565b60008154612f8281612323565b612f8c8186611d0d565b94506001821660008114612fa75760018114612fbd57612ff0565b60ff198316865281151560200286019350612ff0565b612fc685612994565b60005b83811015612fe857815481890152600182019150602081019050612fc9565b808801955050505b50505092915050565b600060608201905061300e6000830186611bd1565b61301b6020830185611bd1565b818103604083015261302d8184612f75565b9050949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061307182611b2d565b915061307c83611b2d565b92508261308c5761308b613037565b5b828204905092915050565b7f52656d61696e696e6720666565732063616e206f6e6c79206265207265636c6160008201527f696d6564207768656e2070726f706f73616c20686173206265656e206163636560208201527f70746564206f72206661696c6564000000000000000000000000000000000000604082015250565b6000613119604e83611beb565b915061312482613097565b606082019050919050565b600060208201905081810360008301526131488161310c565b9050919050565b7f4174746573746174696f6e206f6e6c79207065727461696e7320746f2050726f60008201527f706f73616c207374616765000000000000000000000000000000000000000000602082015250565b60006131ab602b83611beb565b91506131b68261314f565b604082019050919050565b600060208201905081810360008301526131da8161319e565b9050919050565b7f4578706972656420776974686f7574206d656574696e6720617474657374617460008201527f696f6e207468726573686f6c6400000000000000000000000000000000000000602082015250565b600061323d602d83611beb565b9150613248826131e1565b604082019050919050565b60006040820190506132686000830184611bd1565b818103602083015261327981613230565b905092915050565b60006060820190506132966000830186611bd1565b6132a36020830185611bd1565b6132b06040830184611bd1565b949350505050565b600081546132c581612323565b6132cf8186611beb565b945060018216600081146132ea576001811461330057613333565b60ff198316865281151560200286019350613333565b6133098561270d565b60005b8381101561332b5781548189015260018201915060208101905061330c565b808801955050505b50505092915050565b600060029050919050565b600081905092915050565b6000819050919050565b6000613368838361203e565b60208301905092915050565b60008160001c9050919050565b6000819050919050565b600061339e61339983613374565b613381565b9050919050565b60006133b1825461338b565b9050919050565b6000600182019050919050565b6133ce8161333c565b6133d88184613347565b92506133e382613352565b8060005b8381101561341b576133f8826133a5565b613402878261335c565b965061340d836133b8565b9250506001810190506133e7565b505050505050565b600061014082019050818103600083015261343e818b6132b8565b905061344d602083018a611bd1565b61345a60408301896133c5565b61346760808301886133c5565b61347460c0830187611bd1565b61348160e0830186611cf3565b61348f610100830185611cf3565b8181036101208301526134a28184611d1e565b90509998505050505050505050565b60006040820190506134c66000830185611bd1565b6134d36020830184611bd1565b939250505056fea26469706673582212206762b0e3b407cd420cb9bdf0883517503c54ce561ac6228459ea6d2de0d1511d64736f6c63430008180033", + "bytecode": "0x60a06040526040518060600160405280600060ff168152602001600160ff168152602001606460ff1681525060029060036200003d929190620001ef565b5060405180606001604052806000151515158152602001600015151515815260200160011515151581525060059060036200007a92919062000239565b5060405180606001604052806040518060400160405280600160ff168152602001600a60ff1681525081526020016040518060400160405280600160ff168152602001600a60ff1681525081526020016040518060400160405280600160ff168152602001600a60ff168152508152506006906003620000fc929190620002d9565b5060405180606001604052806040518060400160405280600260ff168152602001600360ff1681525081526020016040518060400160405280600260ff168152602001600360ff1681525081526020016040518060400160405280600260ff168152602001600360ff16815250815250600c9060036200017e929190620002d9565b503480156200018c57600080fd5b50604051620039d1380380620039d18339818101604052810190620001b291906200044e565b808073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050505062000480565b826003810192821562000226579160200282015b8281111562000225578251829060ff1690559160200191906001019062000203565b5b50905062000235919062000331565b5090565b826003601f01602090048101928215620002c65791602002820160005b838211156200029557835183826101000a81548160ff021916908315150217905550926020019260010160208160000104928301926001030262000256565b8015620002c45782816101000a81549060ff021916905560010160208160000104928301926001030262000295565b505b509050620002d5919062000331565b5090565b82600360020281019282156200031e579160200282015b828111156200031d578251829060026200030c92919062000350565b5091602001919060020190620002f0565b5b5090506200032d91906200039a565b5090565b5b808211156200034c57600081600090555060010162000332565b5090565b826002810192821562000387579160200282015b8281111562000386578251829060ff1690559160200191906001019062000364565b5b50905062000396919062000331565b5090565b5b80821115620003be5760008181620003b49190620003c2565b506002016200039b565b5090565b506000815560010160009055565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200040282620003d5565b9050919050565b60006200041682620003f5565b9050919050565b620004288162000409565b81146200043457600080fd5b50565b60008151905062000448816200041d565b92915050565b600060208284031215620004675762000466620003d0565b5b6000620004778482850162000437565b91505092915050565b608051613512620004bf6000396000818161046d01528181610a0301528181610bef01528181610de901528181611685015261185301526135126000f3fe60806040526004361061007b5760003560e01c8063b4e6a1d51161004e578063b4e6a1d51461015b578063c019faab14610198578063da35c664146101c1578063ea923e63146101ec5761007b565b8063013cf08b146100805780632805b5d9146100c557806362d26ed7146100f5578063a3bb24cc14610132575b600080fd5b34801561008c57600080fd5b506100a760048036038101906100a29190611b65565b610229565b6040516100bc99989796959493929190611d59565b60405180910390f35b6100df60048036038101906100da9190611f29565b6103c1565b6040516100ec9190611fe5565b60405180910390f35b34801561010157600080fd5b5061011c60048036038101906101179190611b65565b6106c7565b60405161012991906121e5565b60405180910390f35b34801561013e57600080fd5b5061015960048036038101906101549190612201565b610a00565b005b34801561016757600080fd5b50610182600480360381019061017d9190612241565b610beb565b60405161018f9190611fe5565b60405180910390f35b3480156101a457600080fd5b506101bf60048036038101906101ba9190611b65565b6114c0565b005b3480156101cd57600080fd5b506101d66115ec565b6040516101e39190611fe5565b60405180910390f35b3480156101f857600080fd5b50610213600480360381019061020e9190611b65565b6115f2565b60405161022091906122db565b60405180910390f35b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600101549080600201549080600301805461027e90612325565b80601f01602080910402602001604051908101604052809291908181526020018280546102aa90612325565b80156102f75780601f106102cc576101008083540402835291602001916102f7565b820191906000526020600020905b8154815290600101906020018083116102da57829003601f168201915b5050505050908060040154908060050160009054906101000a900460ff169080600701549080603b0160009054906101000a900460ff169080603c01805461033e90612325565b80601f016020809104026020016040519081016040528092919081815260200182805461036a90612325565b80156103b75780601f1061038c576101008083540402835291602001916103b7565b820191906000526020600020905b81548152906001019060200180831161039a57829003601f168201915b5050505050905089565b600060606000600167ffffffffffffffff8111156103e2576103e1612356565b5b60405190808252806020026020018201604052801561041b57816020015b610408611a56565b8152602001906001900390816104005790505b5090506040518060400160405280620f424081526020018973ffffffffffffffffffffffffffffffffffffffff16815250816000815181106104605761045f612385565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d827828c8c866040518563ffffffff1660e01b81526004016104ca949392919061263f565b600060405180830381600087803b1580156104e457600080fd5b505af11580156104f8573d6000803e3d6000fd5b505050506001600081548092919061050f906126bc565b91905055925060008060008581526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508a8a8260030191826105819291906128bb565b504281600401819055508760006003811061059f5761059e612385565b5b6020020135816008016000600381106105bb576105ba612385565b5b6011020160000181905550876001600381106105da576105d9612385565b5b6020020135816008016001600381106105f6576105f5612385565b5b60110201600001819055508760026003811061061557610614612385565b5b60200201358160080160026003811061063157610630612385565b5b6011020160000181905550348160010181905550806001015481600201819055508681603b0160006101000a81548160ff021916908315150217905550858582603c0191826106819291906129f1565b507f9a863892f20a6b9c6cec64d611b5864be6373191ce2cacc3b05a299bce3bf80e846040516106b19190611fe5565b60405180910390a1505050979650505050505050565b6106cf611a86565b60008060008481526020019081526020016000209050806008016000600381106106fc576106fb612385565b5b60110201600101600380602002604051908101604052809291906000905b828210156107cc578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff1615151515815250508152602001906001019061071a565b50505050826000600381106107e4576107e3612385565b5b60200201819052508060080160016003811061080357610802612385565b5b60110201600101600380602002604051908101604052809291906000905b828210156108d3578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff16151515158152505081526020019060010190610821565b50505050826001600381106108eb576108ea612385565b5b60200201819052508060080160026003811061090a57610909612385565b5b60110201600101600380602002604051908101604052809291906000905b828210156109da578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff16151515158152505081526020019060010190610928565b50505050826002600381106109f2576109f1612385565b5b602002018190525050919050565b807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610a5a9190612ac1565b602060405180830381865afa158015610a77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9b9190612af1565b1015610adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad390612b90565b60405180910390fd5b600080600084815260200190815260200160002090508060060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054816007016000828254610b479190612bb0565b92505081905550818160060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081816007016000828254610ba89190612be4565b925050819055507fc23775ba00d23f337b9f790bd67eb5194aa9b95876933f9ccd1887becbb55ccb83604051610bde9190611fe5565b60405180910390a1505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7290612c8a565b60405180910390fd5b60008060008585810190610c8f9190612caa565b925092509250600080600085815260200190815260200160002090506000816008018460038110610cc357610cc2612385565b5b601102019050600081600101826010015460038110610ce557610ce4612385565b5b60050201905060018160010160016101000a81548160ff0219169083151502179055508a81600201819055508981600301819055508b8160040160016101000a81548160ff0219169083151502179055508c8160040160006101000a81548160ff0219169083151502179055508b610de55760048360050160006101000a81548160ff02191690836005811115610d7f57610d7e611c72565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb86604051610db39190612d49565b60405180910390a183836002016000828254610dcf9190612be4565b92505081905550600196505050505050506114b6565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e769190612af1565b8b8d610e829190612be4565b6002610e8e9190612d77565b1015905060016005811115610ea657610ea5611c72565b5b8460050160009054906101000a900460ff166005811115610eca57610ec9611c72565b5b03610feb5760008614610f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0990612e05565b60405180910390fd5b8d8015610f1c5750805b15610f535760028460050160006101000a81548160ff02191690836005811115610f4957610f48611c72565b5b0217905550610fe6565b6002836010015410610fc85760048460050160006101000a81548160ff02191690836005811115610f8757610f86611c72565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb87604051610fbb9190612e71565b60405180910390a1610fe5565b6001836010016000828254610fdd9190612be4565b925050819055505b5b611392565b60026005811115610fff57610ffe611c72565b5b8460050160009054906101000a900460ff16600581111561102357611022611c72565b5b03611144576001861461106b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106290612eeb565b60405180910390fd5b8d80156110755750805b156110ac5760038460050160006101000a81548160ff021916908360058111156110a2576110a1611c72565b5b021790555061113f565b60028360100154106111215760048460050160006101000a81548160ff021916908360058111156110e0576110df611c72565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb876040516111149190612e71565b60405180910390a161113e565b60018360100160008282546111369190612be4565b925050819055505b5b611391565b6003600581111561115857611157611c72565b5b8460050160009054906101000a900460ff16600581111561117c5761117b611c72565b5b0361139057600286146111c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bb90612f57565b60405180910390fd5b8d80156111ce5750805b156112fc5760058460050160006101000a81548160ff021916908360058111156111fb576111fa611c72565b5b02179055507fd24c2047577899547bacebb29e319fc7d73f6712b5adb401d45556f34bb2aa3b8760405161122f9190611fe5565b60405180910390a183603b0160009054906101000a900460ff16156112f7578360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663815a05728d8d87603c016040518463ffffffff1660e01b81526004016112b293929190612ffb565b6020604051808303816000875af11580156112d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f59190612af1565b505b61138f565b60028360100154106113715760048460050160006101000a81548160ff021916908360058111156113305761132f611c72565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb876040516113649190612e71565b60405180910390a161138e565b60018360100160008282546113869190612be4565b925050819055505b5b5b5b5b600160058111156113a6576113a5611c72565b5b8460050160009054906101000a900460ff1660058111156113ca576113c9611c72565b5b036113f0576113eb876000600a87600101546113e69190613068565b61181e565b6114aa565b6002600581111561140457611403611c72565b5b8460050160009054906101000a900460ff16600581111561142857611427611c72565b5b0361144e57611449876001600a87600101546114449190613068565b61181e565b6114a9565b6003600581111561146257611461611c72565b5b8460050160009054906101000a900460ff16600581111561148657611485611c72565b5b036114a8576114a7876002600a87600101546114a29190613068565b61181e565b5b5b5b60009750505050505050505b9695505050505050565b60008060008381526020019081526020016000209050600460058111156114ea576114e9611c72565b5b8160050160009054906101000a900460ff16600581111561150e5761150d611c72565b5b148061154e575060058081111561152857611527611c72565b5b8160050160009054906101000a900460ff16600581111561154c5761154b611c72565b5b145b61158d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158490613131565b60405180910390fd5b600081600201549050600082600201819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156115e6573d6000803e3d6000fd5b50505050565b60015481565b60008060008084815260200190815260200160002090506000600581111561161d5761161c611c72565b5b8160050160009054906101000a900460ff16600581111561164157611640611c72565b5b14611681576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611678906131c3565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117129190612af1565b8260070154600a6117239190612d77565b1015905060006301e13380836004015461173d9190612be4565b42119050816117c85780156117bc5760048360050160006101000a81548160ff0219169083600581111561177457611773611c72565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb856040516117a89190613255565b60405180910390a160009350505050611819565b60009350505050611819565b60018360050160006101000a81548160ff021916908360058111156117f0576117ef611c72565b5b0217905550611811856000600a866001015461180c9190613068565b61181e565b600193505050505b919050565b60008060008581526020019081526020016000209050818160020160008282546118489190612bb0565b9250508190555060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c7384846003018560080188600381106118a8576118a7612385565b5b6011020160000154600689600381106118c4576118c3612385565b5b60020201600c8a600381106118dc576118db612385565b5b6002020160028b600381106118f4576118f3612385565b5b015460058c6003811061190a57611909612385565b5b602091828204019190069054906101000a900460ff1660018e8e8e60405160200161193793929190613283565b6040516020818303038152906040526040518a63ffffffff1660e01b8152600401611969989796959493929190613425565b60206040518083038185885af1158015611987573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119ac9190612af1565b905060008260080185600381106119c6576119c5612385565b5b6011020190506000816001018260100154600381106119e8576119e7612385565b5b60050201905082816000018190555060018160010160006101000a81548160ff0219169083151502179055507f4c14e16a98683e5b8bd70d51192048d0499fb3999b27ff1e9dce7e4a2c6734798784604051611a459291906134b3565b60405180910390a150505050505050565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b60405180606001604052806003905b611a9d611ab3565b815260200190600190039081611a955790505090565b60405180606001604052806003905b611aca611ae0565b815260200190600190039081611ac25790505090565b6040518060e001604052806000815260200160001515815260200160001515815260200160008152602001600081526020016000151581526020016000151581525090565b600080fd5b600080fd5b6000819050919050565b611b4281611b2f565b8114611b4d57600080fd5b50565b600081359050611b5f81611b39565b92915050565b600060208284031215611b7b57611b7a611b25565b5b6000611b8984828501611b50565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611bbd82611b92565b9050919050565b611bcd81611bb2565b82525050565b611bdc81611b2f565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611c1c578082015181840152602081019050611c01565b60008484015250505050565b6000601f19601f8301169050919050565b6000611c4482611be2565b611c4e8185611bed565b9350611c5e818560208601611bfe565b611c6781611c28565b840191505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60068110611cb257611cb1611c72565b5b50565b6000819050611cc382611ca1565b919050565b6000611cd382611cb5565b9050919050565b611ce381611cc8565b82525050565b60008115159050919050565b611cfe81611ce9565b82525050565b600081519050919050565b600082825260208201905092915050565b6000611d2b82611d04565b611d358185611d0f565b9350611d45818560208601611bfe565b611d4e81611c28565b840191505092915050565b600061012082019050611d6f600083018c611bc4565b611d7c602083018b611bd3565b611d89604083018a611bd3565b8181036060830152611d9b8189611c39565b9050611daa6080830188611bd3565b611db760a0830187611cda565b611dc460c0830186611bd3565b611dd160e0830185611cf5565b818103610100830152611de48184611d20565b90509a9950505050505050505050565b600080fd5b600080fd5b600080fd5b60008083601f840112611e1957611e18611df4565b5b8235905067ffffffffffffffff811115611e3657611e35611df9565b5b602083019150836001820283011115611e5257611e51611dfe565b5b9250929050565b611e6281611bb2565b8114611e6d57600080fd5b50565b600081359050611e7f81611e59565b92915050565b600081905082602060030282011115611ea157611ea0611dfe565b5b92915050565b611eb081611ce9565b8114611ebb57600080fd5b50565b600081359050611ecd81611ea7565b92915050565b60008083601f840112611ee957611ee8611df4565b5b8235905067ffffffffffffffff811115611f0657611f05611df9565b5b602083019150836001820283011115611f2257611f21611dfe565b5b9250929050565b600080600080600080600060e0888a031215611f4857611f47611b25565b5b600088013567ffffffffffffffff811115611f6657611f65611b2a565b5b611f728a828b01611e03565b97509750506020611f858a828b01611e70565b9550506040611f968a828b01611e85565b94505060a0611fa78a828b01611ebe565b93505060c088013567ffffffffffffffff811115611fc857611fc7611b2a565b5b611fd48a828b01611ed3565b925092505092959891949750929550565b6000602082019050611ffa6000830184611bd3565b92915050565b600060039050919050565b600081905092915050565b6000819050919050565b600060039050919050565b600081905092915050565b6000819050919050565b61204981611b2f565b82525050565b61205881611ce9565b82525050565b60e0820160008201516120746000850182612040565b506020820151612087602085018261204f565b50604082015161209a604085018261204f565b5060608201516120ad6060850182612040565b5060808201516120c06080850182612040565b5060a08201516120d360a085018261204f565b5060c08201516120e660c085018261204f565b50505050565b60006120f8838361205e565b60e08301905092915050565b6000602082019050919050565b61211a81612020565b612124818461202b565b925061212f82612036565b8060005b8381101561216057815161214787826120ec565b965061215283612104565b925050600181019050612133565b505050505050565b60006121748383612111565b6102a08301905092915050565b6000602082019050919050565b61219781612000565b6121a1818461200b565b92506121ac82612016565b8060005b838110156121dd5781516121c48782612168565b96506121cf83612181565b9250506001810190506121b0565b505050505050565b60006107e0820190506121fb600083018461218e565b92915050565b6000806040838503121561221857612217611b25565b5b600061222685828601611b50565b925050602061223785828601611b50565b9150509250929050565b60008060008060008060a0878903121561225e5761225d611b25565b5b600061226c89828a01611ebe565b965050602061227d89828a01611ebe565b955050604061228e89828a01611b50565b945050606061229f89828a01611b50565b935050608087013567ffffffffffffffff8111156122c0576122bf611b2a565b5b6122cc89828a01611ed3565b92509250509295509295509295565b60006020820190506122f06000830184611cf5565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061233d57607f821691505b6020821081036123505761234f6122f6565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6123e981611bb2565b82525050565b6040820160008201516124056000850182612040565b50602082015161241860208501826123e0565b50505050565b600061242a83836123ef565b60408301905092915050565b6000602082019050919050565b600061244e826123b4565b61245881856123bf565b9350612463836123d0565b8060005b8381101561249457815161247b888261241e565b975061248683612436565b925050600181019050612467565b5085935050505092915050565b82818337600083830152505050565b60006124bc8385611bed565b93506124c98385846124a1565b6124d283611c28565b840190509392505050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000819050919050565b61251c81612509565b82525050565b600082825260208201905092915050565b600061253e82611be2565b6125488185612522565b9350612558818560208601611bfe565b61256181611c28565b840191505092915050565b60006040830160008301516125846000860182612513565b506020830151848203602086015261259c8282612533565b9150508091505092915050565b60006125b5838361256c565b905092915050565b6000602082019050919050565b60006125d5826124dd565b6125df81856124e8565b9350836020820285016125f1856124f9565b8060005b8581101561262d578484038952815161260e85826125a9565b9450612619836125bd565b925060208a019950506001810190506125f5565b50829750879550505050505092915050565b600060608201905081810360008301526126598187612443565b9050818103602083015261266e8185876124b0565b9050818103604083015261268281846125ca565b905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006126c782611b2f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036126f9576126f861268d565b5b600182019050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026127717fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612734565b61277b8683612734565b95508019841693508086168417925050509392505050565b6000819050919050565b60006127b86127b36127ae84611b2f565b612793565b611b2f565b9050919050565b6000819050919050565b6127d28361279d565b6127e66127de826127bf565b848454612741565b825550505050565b600090565b6127fb6127ee565b6128068184846127c9565b505050565b5b8181101561282a5761281f6000826127f3565b60018101905061280c565b5050565b601f82111561286f576128408161270f565b61284984612724565b81016020851015612858578190505b61286c61286485612724565b83018261280b565b50505b505050565b600082821c905092915050565b600061289260001984600802612874565b1980831691505092915050565b60006128ab8383612881565b9150826002028217905092915050565b6128c58383612704565b67ffffffffffffffff8111156128de576128dd612356565b5b6128e88254612325565b6128f382828561282e565b6000601f8311600181146129225760008415612910578287013590505b61291a858261289f565b865550612982565b601f1984166129308661270f565b60005b8281101561295857848901358255600182019150602085019450602081019050612933565b868310156129755784890135612971601f891682612881565b8355505b6001600288020188555050505b50505050505050565b600082905092915050565b60008190508160005260206000209050919050565b601f8211156129ec576129bd81612996565b6129c684612724565b810160208510156129d5578190505b6129e96129e185612724565b83018261280b565b50505b505050565b6129fb838361298b565b67ffffffffffffffff811115612a1457612a13612356565b5b612a1e8254612325565b612a298282856129ab565b6000601f831160018114612a585760008415612a46578287013590505b612a50858261289f565b865550612ab8565b601f198416612a6686612996565b60005b82811015612a8e57848901358255600182019150602085019450602081019050612a69565b86831015612aab5784890135612aa7601f891682612881565b8355505b6001600288020188555050505b50505050505050565b6000602082019050612ad66000830184611bc4565b92915050565b600081519050612aeb81611b39565b92915050565b600060208284031215612b0757612b06611b25565b5b6000612b1584828501612adc565b91505092915050565b7f53656e6465722068617320696e73756666696369656e74205245502062616c6160008201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b6000612b7a602383611bed565b9150612b8582612b1e565b604082019050919050565b60006020820190508181036000830152612ba981612b6d565b9050919050565b6000612bbb82611b2f565b9150612bc683611b2f565b9250828203905081811115612bde57612bdd61268d565b5b92915050565b6000612bef82611b2f565b9150612bfa83611b2f565b9250828201905080821115612c1257612c1161268d565b5b92915050565b7f6f6e56616c6964617465206d6179206f6e6c792062652063616c6c656420627960008201527f207468652044414f20636f6e7472616374000000000000000000000000000000602082015250565b6000612c74603183611bed565b9150612c7f82612c18565b604082019050919050565b60006020820190508181036000830152612ca381612c67565b9050919050565b600080600060608486031215612cc357612cc2611b25565b5b6000612cd186828701611b50565b9350506020612ce286828701611b50565b9250506040612cf386828701611b50565b9150509250925092565b7f51756f72756d206e6f74206d6574000000000000000000000000000000000000600082015250565b6000612d33600e83611bed565b9150612d3e82612cfd565b602082019050919050565b6000604082019050612d5e6000830184611bd3565b8181036020830152612d6f81612d26565b905092915050565b6000612d8282611b2f565b9150612d8d83611b2f565b9250828202612d9b81611b2f565b91508282048414831517612db257612db161268d565b5b5092915050565b7f5374616765203020696e646578206d69736d6174636800000000000000000000600082015250565b6000612def601683611bed565b9150612dfa82612db9565b602082019050919050565b60006020820190508181036000830152612e1e81612de2565b9050919050565b7f526574727920636f756e74206578636565646564000000000000000000000000600082015250565b6000612e5b601483611bed565b9150612e6682612e25565b602082019050919050565b6000604082019050612e866000830184611bd3565b8181036020830152612e9781612e4e565b905092915050565b7f5374616765203120696e646578206d69736d6174636800000000000000000000600082015250565b6000612ed5601683611bed565b9150612ee082612e9f565b602082019050919050565b60006020820190508181036000830152612f0481612ec8565b9050919050565b7f5374616765203220696e646578206d69736d6174636800000000000000000000600082015250565b6000612f41601683611bed565b9150612f4c82612f0b565b602082019050919050565b60006020820190508181036000830152612f7081612f34565b9050919050565b60008154612f8481612325565b612f8e8186611d0f565b94506001821660008114612fa95760018114612fbf57612ff2565b60ff198316865281151560200286019350612ff2565b612fc885612996565b60005b83811015612fea57815481890152600182019150602081019050612fcb565b808801955050505b50505092915050565b60006060820190506130106000830186611bd3565b61301d6020830185611bd3565b818103604083015261302f8184612f77565b9050949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061307382611b2f565b915061307e83611b2f565b92508261308e5761308d613039565b5b828204905092915050565b7f52656d61696e696e6720666565732063616e206f6e6c79206265207265636c6160008201527f696d6564207768656e2070726f706f73616c20686173206265656e206163636560208201527f70746564206f72206661696c6564000000000000000000000000000000000000604082015250565b600061311b604e83611bed565b915061312682613099565b606082019050919050565b6000602082019050818103600083015261314a8161310e565b9050919050565b7f4174746573746174696f6e206f6e6c79207065727461696e7320746f2050726f60008201527f706f73616c207374616765000000000000000000000000000000000000000000602082015250565b60006131ad602b83611bed565b91506131b882613151565b604082019050919050565b600060208201905081810360008301526131dc816131a0565b9050919050565b7f4578706972656420776974686f7574206d656574696e6720617474657374617460008201527f696f6e207468726573686f6c6400000000000000000000000000000000000000602082015250565b600061323f602d83611bed565b915061324a826131e3565b604082019050919050565b600060408201905061326a6000830184611bd3565b818103602083015261327b81613232565b905092915050565b60006060820190506132986000830186611bd3565b6132a56020830185611bd3565b6132b26040830184611bd3565b949350505050565b600081546132c781612325565b6132d18186611bed565b945060018216600081146132ec576001811461330257613335565b60ff198316865281151560200286019350613335565b61330b8561270f565b60005b8381101561332d5781548189015260018201915060208101905061330e565b808801955050505b50505092915050565b600060029050919050565b600081905092915050565b6000819050919050565b600061336a8383612040565b60208301905092915050565b60008160001c9050919050565b6000819050919050565b60006133a061339b83613376565b613383565b9050919050565b60006133b3825461338d565b9050919050565b6000600182019050919050565b6133d08161333e565b6133da8184613349565b92506133e582613354565b8060005b8381101561341d576133fa826133a7565b613404878261335e565b965061340f836133ba565b9250506001810190506133e9565b505050505050565b6000610140820190508181036000830152613440818b6132ba565b905061344f602083018a611bd3565b61345c60408301896133c7565b61346960808301886133c7565b61347660c0830187611bd3565b61348360e0830186611cf5565b613491610100830185611cf5565b8181036101208301526134a48184611d20565b90509998505050505050505050565b60006040820190506134c86000830185611bd3565b6134d56020830184611bd3565b939250505056fea26469706673582212201d58ad841ab3f497dc4dea4ae300f38d6bdbcc8e2ce2c13aa171bea2125b7f0b64736f6c63430008180033", + "deployedBytecode": "0x60806040526004361061007b5760003560e01c8063b4e6a1d51161004e578063b4e6a1d51461015b578063c019faab14610198578063da35c664146101c1578063ea923e63146101ec5761007b565b8063013cf08b146100805780632805b5d9146100c557806362d26ed7146100f5578063a3bb24cc14610132575b600080fd5b34801561008c57600080fd5b506100a760048036038101906100a29190611b65565b610229565b6040516100bc99989796959493929190611d59565b60405180910390f35b6100df60048036038101906100da9190611f29565b6103c1565b6040516100ec9190611fe5565b60405180910390f35b34801561010157600080fd5b5061011c60048036038101906101179190611b65565b6106c7565b60405161012991906121e5565b60405180910390f35b34801561013e57600080fd5b5061015960048036038101906101549190612201565b610a00565b005b34801561016757600080fd5b50610182600480360381019061017d9190612241565b610beb565b60405161018f9190611fe5565b60405180910390f35b3480156101a457600080fd5b506101bf60048036038101906101ba9190611b65565b6114c0565b005b3480156101cd57600080fd5b506101d66115ec565b6040516101e39190611fe5565b60405180910390f35b3480156101f857600080fd5b50610213600480360381019061020e9190611b65565b6115f2565b60405161022091906122db565b60405180910390f35b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600101549080600201549080600301805461027e90612325565b80601f01602080910402602001604051908101604052809291908181526020018280546102aa90612325565b80156102f75780601f106102cc576101008083540402835291602001916102f7565b820191906000526020600020905b8154815290600101906020018083116102da57829003601f168201915b5050505050908060040154908060050160009054906101000a900460ff169080600701549080603b0160009054906101000a900460ff169080603c01805461033e90612325565b80601f016020809104026020016040519081016040528092919081815260200182805461036a90612325565b80156103b75780601f1061038c576101008083540402835291602001916103b7565b820191906000526020600020905b81548152906001019060200180831161039a57829003601f168201915b5050505050905089565b600060606000600167ffffffffffffffff8111156103e2576103e1612356565b5b60405190808252806020026020018201604052801561041b57816020015b610408611a56565b8152602001906001900390816104005790505b5090506040518060400160405280620f424081526020018973ffffffffffffffffffffffffffffffffffffffff16815250816000815181106104605761045f612385565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d827828c8c866040518563ffffffff1660e01b81526004016104ca949392919061263f565b600060405180830381600087803b1580156104e457600080fd5b505af11580156104f8573d6000803e3d6000fd5b505050506001600081548092919061050f906126bc565b91905055925060008060008581526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508a8a8260030191826105819291906128bb565b504281600401819055508760006003811061059f5761059e612385565b5b6020020135816008016000600381106105bb576105ba612385565b5b6011020160000181905550876001600381106105da576105d9612385565b5b6020020135816008016001600381106105f6576105f5612385565b5b60110201600001819055508760026003811061061557610614612385565b5b60200201358160080160026003811061063157610630612385565b5b6011020160000181905550348160010181905550806001015481600201819055508681603b0160006101000a81548160ff021916908315150217905550858582603c0191826106819291906129f1565b507f9a863892f20a6b9c6cec64d611b5864be6373191ce2cacc3b05a299bce3bf80e846040516106b19190611fe5565b60405180910390a1505050979650505050505050565b6106cf611a86565b60008060008481526020019081526020016000209050806008016000600381106106fc576106fb612385565b5b60110201600101600380602002604051908101604052809291906000905b828210156107cc578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff1615151515815250508152602001906001019061071a565b50505050826000600381106107e4576107e3612385565b5b60200201819052508060080160016003811061080357610802612385565b5b60110201600101600380602002604051908101604052809291906000905b828210156108d3578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff16151515158152505081526020019060010190610821565b50505050826001600381106108eb576108ea612385565b5b60200201819052508060080160026003811061090a57610909612385565b5b60110201600101600380602002604051908101604052809291906000905b828210156109da578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff16151515158152505081526020019060010190610928565b50505050826002600381106109f2576109f1612385565b5b602002018190525050919050565b807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610a5a9190612ac1565b602060405180830381865afa158015610a77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9b9190612af1565b1015610adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad390612b90565b60405180910390fd5b600080600084815260200190815260200160002090508060060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054816007016000828254610b479190612bb0565b92505081905550818160060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081816007016000828254610ba89190612be4565b925050819055507fc23775ba00d23f337b9f790bd67eb5194aa9b95876933f9ccd1887becbb55ccb83604051610bde9190611fe5565b60405180910390a1505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7290612c8a565b60405180910390fd5b60008060008585810190610c8f9190612caa565b925092509250600080600085815260200190815260200160002090506000816008018460038110610cc357610cc2612385565b5b601102019050600081600101826010015460038110610ce557610ce4612385565b5b60050201905060018160010160016101000a81548160ff0219169083151502179055508a81600201819055508981600301819055508b8160040160016101000a81548160ff0219169083151502179055508c8160040160006101000a81548160ff0219169083151502179055508b610de55760048360050160006101000a81548160ff02191690836005811115610d7f57610d7e611c72565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb86604051610db39190612d49565b60405180910390a183836002016000828254610dcf9190612be4565b92505081905550600196505050505050506114b6565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e769190612af1565b8b8d610e829190612be4565b6002610e8e9190612d77565b1015905060016005811115610ea657610ea5611c72565b5b8460050160009054906101000a900460ff166005811115610eca57610ec9611c72565b5b03610feb5760008614610f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0990612e05565b60405180910390fd5b8d8015610f1c5750805b15610f535760028460050160006101000a81548160ff02191690836005811115610f4957610f48611c72565b5b0217905550610fe6565b6002836010015410610fc85760048460050160006101000a81548160ff02191690836005811115610f8757610f86611c72565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb87604051610fbb9190612e71565b60405180910390a1610fe5565b6001836010016000828254610fdd9190612be4565b925050819055505b5b611392565b60026005811115610fff57610ffe611c72565b5b8460050160009054906101000a900460ff16600581111561102357611022611c72565b5b03611144576001861461106b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106290612eeb565b60405180910390fd5b8d80156110755750805b156110ac5760038460050160006101000a81548160ff021916908360058111156110a2576110a1611c72565b5b021790555061113f565b60028360100154106111215760048460050160006101000a81548160ff021916908360058111156110e0576110df611c72565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb876040516111149190612e71565b60405180910390a161113e565b60018360100160008282546111369190612be4565b925050819055505b5b611391565b6003600581111561115857611157611c72565b5b8460050160009054906101000a900460ff16600581111561117c5761117b611c72565b5b0361139057600286146111c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bb90612f57565b60405180910390fd5b8d80156111ce5750805b156112fc5760058460050160006101000a81548160ff021916908360058111156111fb576111fa611c72565b5b02179055507fd24c2047577899547bacebb29e319fc7d73f6712b5adb401d45556f34bb2aa3b8760405161122f9190611fe5565b60405180910390a183603b0160009054906101000a900460ff16156112f7578360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663815a05728d8d87603c016040518463ffffffff1660e01b81526004016112b293929190612ffb565b6020604051808303816000875af11580156112d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f59190612af1565b505b61138f565b60028360100154106113715760048460050160006101000a81548160ff021916908360058111156113305761132f611c72565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb876040516113649190612e71565b60405180910390a161138e565b60018360100160008282546113869190612be4565b925050819055505b5b5b5b5b600160058111156113a6576113a5611c72565b5b8460050160009054906101000a900460ff1660058111156113ca576113c9611c72565b5b036113f0576113eb876000600a87600101546113e69190613068565b61181e565b6114aa565b6002600581111561140457611403611c72565b5b8460050160009054906101000a900460ff16600581111561142857611427611c72565b5b0361144e57611449876001600a87600101546114449190613068565b61181e565b6114a9565b6003600581111561146257611461611c72565b5b8460050160009054906101000a900460ff16600581111561148657611485611c72565b5b036114a8576114a7876002600a87600101546114a29190613068565b61181e565b5b5b5b60009750505050505050505b9695505050505050565b60008060008381526020019081526020016000209050600460058111156114ea576114e9611c72565b5b8160050160009054906101000a900460ff16600581111561150e5761150d611c72565b5b148061154e575060058081111561152857611527611c72565b5b8160050160009054906101000a900460ff16600581111561154c5761154b611c72565b5b145b61158d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158490613131565b60405180910390fd5b600081600201549050600082600201819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156115e6573d6000803e3d6000fd5b50505050565b60015481565b60008060008084815260200190815260200160002090506000600581111561161d5761161c611c72565b5b8160050160009054906101000a900460ff16600581111561164157611640611c72565b5b14611681576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611678906131c3565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117129190612af1565b8260070154600a6117239190612d77565b1015905060006301e13380836004015461173d9190612be4565b42119050816117c85780156117bc5760048360050160006101000a81548160ff0219169083600581111561177457611773611c72565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb856040516117a89190613255565b60405180910390a160009350505050611819565b60009350505050611819565b60018360050160006101000a81548160ff021916908360058111156117f0576117ef611c72565b5b0217905550611811856000600a866001015461180c9190613068565b61181e565b600193505050505b919050565b60008060008581526020019081526020016000209050818160020160008282546118489190612bb0565b9250508190555060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c7384846003018560080188600381106118a8576118a7612385565b5b6011020160000154600689600381106118c4576118c3612385565b5b60020201600c8a600381106118dc576118db612385565b5b6002020160028b600381106118f4576118f3612385565b5b015460058c6003811061190a57611909612385565b5b602091828204019190069054906101000a900460ff1660018e8e8e60405160200161193793929190613283565b6040516020818303038152906040526040518a63ffffffff1660e01b8152600401611969989796959493929190613425565b60206040518083038185885af1158015611987573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119ac9190612af1565b905060008260080185600381106119c6576119c5612385565b5b6011020190506000816001018260100154600381106119e8576119e7612385565b5b60050201905082816000018190555060018160010160006101000a81548160ff0219169083151502179055507f4c14e16a98683e5b8bd70d51192048d0499fb3999b27ff1e9dce7e4a2c6734798784604051611a459291906134b3565b60405180910390a150505050505050565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b60405180606001604052806003905b611a9d611ab3565b815260200190600190039081611a955790505090565b60405180606001604052806003905b611aca611ae0565b815260200190600190039081611ac25790505090565b6040518060e001604052806000815260200160001515815260200160001515815260200160008152602001600081526020016000151581526020016000151581525090565b600080fd5b600080fd5b6000819050919050565b611b4281611b2f565b8114611b4d57600080fd5b50565b600081359050611b5f81611b39565b92915050565b600060208284031215611b7b57611b7a611b25565b5b6000611b8984828501611b50565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611bbd82611b92565b9050919050565b611bcd81611bb2565b82525050565b611bdc81611b2f565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611c1c578082015181840152602081019050611c01565b60008484015250505050565b6000601f19601f8301169050919050565b6000611c4482611be2565b611c4e8185611bed565b9350611c5e818560208601611bfe565b611c6781611c28565b840191505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60068110611cb257611cb1611c72565b5b50565b6000819050611cc382611ca1565b919050565b6000611cd382611cb5565b9050919050565b611ce381611cc8565b82525050565b60008115159050919050565b611cfe81611ce9565b82525050565b600081519050919050565b600082825260208201905092915050565b6000611d2b82611d04565b611d358185611d0f565b9350611d45818560208601611bfe565b611d4e81611c28565b840191505092915050565b600061012082019050611d6f600083018c611bc4565b611d7c602083018b611bd3565b611d89604083018a611bd3565b8181036060830152611d9b8189611c39565b9050611daa6080830188611bd3565b611db760a0830187611cda565b611dc460c0830186611bd3565b611dd160e0830185611cf5565b818103610100830152611de48184611d20565b90509a9950505050505050505050565b600080fd5b600080fd5b600080fd5b60008083601f840112611e1957611e18611df4565b5b8235905067ffffffffffffffff811115611e3657611e35611df9565b5b602083019150836001820283011115611e5257611e51611dfe565b5b9250929050565b611e6281611bb2565b8114611e6d57600080fd5b50565b600081359050611e7f81611e59565b92915050565b600081905082602060030282011115611ea157611ea0611dfe565b5b92915050565b611eb081611ce9565b8114611ebb57600080fd5b50565b600081359050611ecd81611ea7565b92915050565b60008083601f840112611ee957611ee8611df4565b5b8235905067ffffffffffffffff811115611f0657611f05611df9565b5b602083019150836001820283011115611f2257611f21611dfe565b5b9250929050565b600080600080600080600060e0888a031215611f4857611f47611b25565b5b600088013567ffffffffffffffff811115611f6657611f65611b2a565b5b611f728a828b01611e03565b97509750506020611f858a828b01611e70565b9550506040611f968a828b01611e85565b94505060a0611fa78a828b01611ebe565b93505060c088013567ffffffffffffffff811115611fc857611fc7611b2a565b5b611fd48a828b01611ed3565b925092505092959891949750929550565b6000602082019050611ffa6000830184611bd3565b92915050565b600060039050919050565b600081905092915050565b6000819050919050565b600060039050919050565b600081905092915050565b6000819050919050565b61204981611b2f565b82525050565b61205881611ce9565b82525050565b60e0820160008201516120746000850182612040565b506020820151612087602085018261204f565b50604082015161209a604085018261204f565b5060608201516120ad6060850182612040565b5060808201516120c06080850182612040565b5060a08201516120d360a085018261204f565b5060c08201516120e660c085018261204f565b50505050565b60006120f8838361205e565b60e08301905092915050565b6000602082019050919050565b61211a81612020565b612124818461202b565b925061212f82612036565b8060005b8381101561216057815161214787826120ec565b965061215283612104565b925050600181019050612133565b505050505050565b60006121748383612111565b6102a08301905092915050565b6000602082019050919050565b61219781612000565b6121a1818461200b565b92506121ac82612016565b8060005b838110156121dd5781516121c48782612168565b96506121cf83612181565b9250506001810190506121b0565b505050505050565b60006107e0820190506121fb600083018461218e565b92915050565b6000806040838503121561221857612217611b25565b5b600061222685828601611b50565b925050602061223785828601611b50565b9150509250929050565b60008060008060008060a0878903121561225e5761225d611b25565b5b600061226c89828a01611ebe565b965050602061227d89828a01611ebe565b955050604061228e89828a01611b50565b945050606061229f89828a01611b50565b935050608087013567ffffffffffffffff8111156122c0576122bf611b2a565b5b6122cc89828a01611ed3565b92509250509295509295509295565b60006020820190506122f06000830184611cf5565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061233d57607f821691505b6020821081036123505761234f6122f6565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6123e981611bb2565b82525050565b6040820160008201516124056000850182612040565b50602082015161241860208501826123e0565b50505050565b600061242a83836123ef565b60408301905092915050565b6000602082019050919050565b600061244e826123b4565b61245881856123bf565b9350612463836123d0565b8060005b8381101561249457815161247b888261241e565b975061248683612436565b925050600181019050612467565b5085935050505092915050565b82818337600083830152505050565b60006124bc8385611bed565b93506124c98385846124a1565b6124d283611c28565b840190509392505050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000819050919050565b61251c81612509565b82525050565b600082825260208201905092915050565b600061253e82611be2565b6125488185612522565b9350612558818560208601611bfe565b61256181611c28565b840191505092915050565b60006040830160008301516125846000860182612513565b506020830151848203602086015261259c8282612533565b9150508091505092915050565b60006125b5838361256c565b905092915050565b6000602082019050919050565b60006125d5826124dd565b6125df81856124e8565b9350836020820285016125f1856124f9565b8060005b8581101561262d578484038952815161260e85826125a9565b9450612619836125bd565b925060208a019950506001810190506125f5565b50829750879550505050505092915050565b600060608201905081810360008301526126598187612443565b9050818103602083015261266e8185876124b0565b9050818103604083015261268281846125ca565b905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006126c782611b2f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036126f9576126f861268d565b5b600182019050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026127717fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612734565b61277b8683612734565b95508019841693508086168417925050509392505050565b6000819050919050565b60006127b86127b36127ae84611b2f565b612793565b611b2f565b9050919050565b6000819050919050565b6127d28361279d565b6127e66127de826127bf565b848454612741565b825550505050565b600090565b6127fb6127ee565b6128068184846127c9565b505050565b5b8181101561282a5761281f6000826127f3565b60018101905061280c565b5050565b601f82111561286f576128408161270f565b61284984612724565b81016020851015612858578190505b61286c61286485612724565b83018261280b565b50505b505050565b600082821c905092915050565b600061289260001984600802612874565b1980831691505092915050565b60006128ab8383612881565b9150826002028217905092915050565b6128c58383612704565b67ffffffffffffffff8111156128de576128dd612356565b5b6128e88254612325565b6128f382828561282e565b6000601f8311600181146129225760008415612910578287013590505b61291a858261289f565b865550612982565b601f1984166129308661270f565b60005b8281101561295857848901358255600182019150602085019450602081019050612933565b868310156129755784890135612971601f891682612881565b8355505b6001600288020188555050505b50505050505050565b600082905092915050565b60008190508160005260206000209050919050565b601f8211156129ec576129bd81612996565b6129c684612724565b810160208510156129d5578190505b6129e96129e185612724565b83018261280b565b50505b505050565b6129fb838361298b565b67ffffffffffffffff811115612a1457612a13612356565b5b612a1e8254612325565b612a298282856129ab565b6000601f831160018114612a585760008415612a46578287013590505b612a50858261289f565b865550612ab8565b601f198416612a6686612996565b60005b82811015612a8e57848901358255600182019150602085019450602081019050612a69565b86831015612aab5784890135612aa7601f891682612881565b8355505b6001600288020188555050505b50505050505050565b6000602082019050612ad66000830184611bc4565b92915050565b600081519050612aeb81611b39565b92915050565b600060208284031215612b0757612b06611b25565b5b6000612b1584828501612adc565b91505092915050565b7f53656e6465722068617320696e73756666696369656e74205245502062616c6160008201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b6000612b7a602383611bed565b9150612b8582612b1e565b604082019050919050565b60006020820190508181036000830152612ba981612b6d565b9050919050565b6000612bbb82611b2f565b9150612bc683611b2f565b9250828203905081811115612bde57612bdd61268d565b5b92915050565b6000612bef82611b2f565b9150612bfa83611b2f565b9250828201905080821115612c1257612c1161268d565b5b92915050565b7f6f6e56616c6964617465206d6179206f6e6c792062652063616c6c656420627960008201527f207468652044414f20636f6e7472616374000000000000000000000000000000602082015250565b6000612c74603183611bed565b9150612c7f82612c18565b604082019050919050565b60006020820190508181036000830152612ca381612c67565b9050919050565b600080600060608486031215612cc357612cc2611b25565b5b6000612cd186828701611b50565b9350506020612ce286828701611b50565b9250506040612cf386828701611b50565b9150509250925092565b7f51756f72756d206e6f74206d6574000000000000000000000000000000000000600082015250565b6000612d33600e83611bed565b9150612d3e82612cfd565b602082019050919050565b6000604082019050612d5e6000830184611bd3565b8181036020830152612d6f81612d26565b905092915050565b6000612d8282611b2f565b9150612d8d83611b2f565b9250828202612d9b81611b2f565b91508282048414831517612db257612db161268d565b5b5092915050565b7f5374616765203020696e646578206d69736d6174636800000000000000000000600082015250565b6000612def601683611bed565b9150612dfa82612db9565b602082019050919050565b60006020820190508181036000830152612e1e81612de2565b9050919050565b7f526574727920636f756e74206578636565646564000000000000000000000000600082015250565b6000612e5b601483611bed565b9150612e6682612e25565b602082019050919050565b6000604082019050612e866000830184611bd3565b8181036020830152612e9781612e4e565b905092915050565b7f5374616765203120696e646578206d69736d6174636800000000000000000000600082015250565b6000612ed5601683611bed565b9150612ee082612e9f565b602082019050919050565b60006020820190508181036000830152612f0481612ec8565b9050919050565b7f5374616765203220696e646578206d69736d6174636800000000000000000000600082015250565b6000612f41601683611bed565b9150612f4c82612f0b565b602082019050919050565b60006020820190508181036000830152612f7081612f34565b9050919050565b60008154612f8481612325565b612f8e8186611d0f565b94506001821660008114612fa95760018114612fbf57612ff2565b60ff198316865281151560200286019350612ff2565b612fc885612996565b60005b83811015612fea57815481890152600182019150602081019050612fcb565b808801955050505b50505092915050565b60006060820190506130106000830186611bd3565b61301d6020830185611bd3565b818103604083015261302f8184612f77565b9050949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061307382611b2f565b915061307e83611b2f565b92508261308e5761308d613039565b5b828204905092915050565b7f52656d61696e696e6720666565732063616e206f6e6c79206265207265636c6160008201527f696d6564207768656e2070726f706f73616c20686173206265656e206163636560208201527f70746564206f72206661696c6564000000000000000000000000000000000000604082015250565b600061311b604e83611bed565b915061312682613099565b606082019050919050565b6000602082019050818103600083015261314a8161310e565b9050919050565b7f4174746573746174696f6e206f6e6c79207065727461696e7320746f2050726f60008201527f706f73616c207374616765000000000000000000000000000000000000000000602082015250565b60006131ad602b83611bed565b91506131b882613151565b604082019050919050565b600060208201905081810360008301526131dc816131a0565b9050919050565b7f4578706972656420776974686f7574206d656574696e6720617474657374617460008201527f696f6e207468726573686f6c6400000000000000000000000000000000000000602082015250565b600061323f602d83611bed565b915061324a826131e3565b604082019050919050565b600060408201905061326a6000830184611bd3565b818103602083015261327b81613232565b905092915050565b60006060820190506132986000830186611bd3565b6132a56020830185611bd3565b6132b26040830184611bd3565b949350505050565b600081546132c781612325565b6132d18186611bed565b945060018216600081146132ec576001811461330257613335565b60ff198316865281151560200286019350613335565b61330b8561270f565b60005b8381101561332d5781548189015260018201915060208101905061330e565b808801955050505b50505092915050565b600060029050919050565b600081905092915050565b6000819050919050565b600061336a8383612040565b60208301905092915050565b60008160001c9050919050565b6000819050919050565b60006133a061339b83613376565b613383565b9050919050565b60006133b3825461338d565b9050919050565b6000600182019050919050565b6133d08161333e565b6133da8184613349565b92506133e582613354565b8060005b8381101561341d576133fa826133a7565b613404878261335e565b965061340f836133ba565b9250506001810190506133e9565b505050505050565b6000610140820190508181036000830152613440818b6132ba565b905061344f602083018a611bd3565b61345c60408301896133c7565b61346960808301886133c7565b61347660c0830187611bd3565b61348360e0830186611cf5565b613491610100830185611cf5565b8181036101208301526134a48184611d20565b90509998505050505050505050565b60006040820190506134c86000830185611bd3565b6134d56020830184611bd3565b939250505056fea26469706673582212201d58ad841ab3f497dc4dea4ae300f38d6bdbcc8e2ce2c13aa171bea2125b7f0b64736f6c63430008180033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/frontend/contractArtifacts/Work1.json b/frontend/contractArtifacts/Work1.json index 45449e3..2b50703 100644 --- a/frontend/contractArtifacts/Work1.json +++ b/frontend/contractArtifacts/Work1.json @@ -419,7 +419,7 @@ "components": [ { "internalType": "int256", - "name": "weightPercent", + "name": "weightPPM", "type": "int256" }, { @@ -439,8 +439,8 @@ "type": "function" } ], - "bytecode": "0x60a06040523480156200001157600080fd5b5060405162002dd238038062002dd28339818101604052810190620000379190620001c1565b828282828073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505080600181905550816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050506200021d565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620000f582620000c8565b9050919050565b60006200010982620000e8565b9050919050565b6200011b81620000fc565b81146200012757600080fd5b50565b6000815190506200013b8162000110565b92915050565b60006200014e82620000e8565b9050919050565b620001608162000141565b81146200016c57600080fd5b50565b600081519050620001808162000155565b92915050565b6000819050919050565b6200019b8162000186565b8114620001a757600080fd5b50565b600081519050620001bb8162000190565b92915050565b600080600060608486031215620001dd57620001dc620000c3565b5b6000620001ed868287016200012a565b935050602062000200868287016200016f565b92505060406200021386828701620001aa565b9150509250925092565b608051612b8b620002476000396000818161093701528181610a070152610ae90152612b8b6000f3fe6080604052600436106100dd5760003560e01c8063a035b1fe1161007f578063cf37625611610059578063cf37625614610296578063d0fae95f146102d4578063d5a44f86146102fd578063d76b67941461033d576100dd565b8063a035b1fe14610217578063b5b20c0014610242578063c4a9e1161461026b576100dd565b8063815a0572116100bb578063815a05721461015257806381d12c581461018f578063854b6a4f146101d257806399ad6c56146101fb576100dd565b80630d0271d6146100e2578063216ed6ad146100fe5780635badbe4c14610127575b600080fd5b6100fc60048036038101906100f791906113cc565b610368565b005b34801561010a57600080fd5b50610125600480360381019061012091906114ad565b610456565b005b34801561013357600080fd5b5061013c610569565b604051610149919061150f565b60405180910390f35b34801561015e57600080fd5b5061017960048036038101906101749190611580565b61056f565b604051610186919061150f565b60405180910390f35b34801561019b57600080fd5b506101b660048036038101906101b191906115f4565b6105ee565b6040516101c99796959493929190611752565b60405180910390f35b3480156101de57600080fd5b506101f960048036038101906101f491906117fb565b61077a565b005b6102156004803603810190610210919061185d565b610ba9565b005b34801561022357600080fd5b5061022c610cf2565b604051610239919061150f565b60405180910390f35b34801561024e57600080fd5b50610269600480360381019061026491906118d1565b610cf8565b005b34801561027757600080fd5b50610280610e6d565b60405161028d919061150f565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b891906115f4565b610e73565b6040516102cb929190611911565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f69190611990565b610e97565b005b34801561030957600080fd5b50610324600480360381019061031f91906115f4565b6110d0565b6040516103349493929190611a25565b60405180910390f35b34801561034957600080fd5b5061035261112d565b60405161035f919061150f565b60405180910390f35b6001543410156103ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a490611ab6565b60405180910390fd5b6000600760008154809291906103c290611b05565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034816001018190555061043482611133565b8160030181905550838382600401918261044f929190611d93565b5050505050565b60008211610499576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049090611eaf565b60405180910390fd5b6000600560008154809291906104ae90611b05565b9190505590506000600460008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426105239190611ecf565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e98260405161055a919061150f565b60405180910390a15050505050565b60075481565b600080838381019061058191906115f4565b9050600060026000838152602001908152602001600020905080600001546001819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f20826001546040516105d8929190611911565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461065690611bb6565b80601f016020809104026020016040519081016040528092919081815260200182805461068290611bb6565b80156106cf5780601f106106a4576101008083540402835291602001916106cf565b820191906000526020600020905b8154815290600101906020018083116106b257829003601f168201915b5050505050908060050180546106e490611bb6565b80601f016020809104026020016040519081016040528092919081815260200182805461071090611bb6565b801561075d5780601f106107325761010080835404028352916020019161075d565b820191906000526020600020905b81548152906001019060200180831161074057829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b6000600660008481526020019081526020016000209050600160038111156107a5576107a4611630565b5b8160020160009054906101000a900460ff1660038111156107c9576107c8611630565b5b14610809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080090611f4f565b60405180910390fd5b60006004600083600301548152602001908152602001600020905060028260020160006101000a81548160ff0219169083600381111561084c5761084b611630565b5b0217905550828260070160006101000a81548160ff0219169083151502179055506000600167ffffffffffffffff81111561088a57610889611b58565b5b6040519080825280602002602001820160405280156108c357816020015b6108b061132d565b8152602001906001900390816108a85790505b5090506040518060400160405280606481526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508160008151811061092a57610929611f6f565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b81526004016109989392919061230c565b600060405180830381600087803b1580156109b257600080fd5b505af11580156109c6573d6000803e3d6000fd5b505050507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc85856040516109fb929190612358565b60405180910390a160007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c738560010154866005016014604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518963ffffffff1660e01b8152600401610aa2979695949392919061248f565b60206040518083038185885af1158015610ac0573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ae59190612530565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015460016040518563ffffffff1660e01b8152600401610b6f949392919061255d565b600060405180830381600087803b158015610b8957600080fd5b505af1158015610b9d573d6000803e3d6000fd5b50505050505050505050565b600060036000815480929190610bbe90611b05565b919050559050600060026000838152602001908152602001600020905085816000018190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632805b5d93487873388600189604051602001610c38919061150f565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401610c689695949392919061263b565b60206040518083038185885af1158015610c86573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610cab9190612530565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610ce2919061150f565b60405180910390a1505050505050565b60015481565b60006004600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610da1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9890612710565b60405180910390fd5b8060030160009054906101000a900460ff1615610df3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dea906127a2565b60405180910390fd5b8060020154421115610e18578142610e0b9190611ecf565b8160020181905550610e31565b818160020154610e289190611ecf565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e983604051610e60919061150f565b60405180910390a1505050565b60055481565b60026020528060005260406000206000915090508060000154908060010154905082565b600060066000878152602001908152602001600020905060006003811115610ec257610ec1611630565b5b8160020160009054906101000a900460ff166003811115610ee657610ee5611630565b5b14610f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1d9061280e565b60405180910390fd5b6000600460008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fca906128a0565b60405180910390fd5b60018260020160006101000a81548160ff02191690836003811115610ffb57610ffa611630565b5b02179055508585836005019182611013929190611d93565b5060005b8484905081101561108f578260060185858381811061103957611038611f6f565b5b905060200281019061104b91906128cf565b908060018154018082558091505060019003906000526020600020906002020160009091909190915081816110809190612a7b565b50508080600101915050611017565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc876040516110bf919061150f565b60405180910390a150505050505050565b60046020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60035481565b600061113d6111b2565b9050600060046000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b483836040516111a4929190611911565b60405180910390a150919050565b60008060005b600554811015611239576004600082815260200190815260200160002060030160009054906101000a900460ff1661122c576004600082815260200190815260200160002060020154421161122c576004600082815260200190815260200160002060010154826112299190611ecf565b91505b80806001019150506111b8565b506000811161127d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127490612ad5565b60405180910390fd5b6000814461128b9190612b24565b9050600080600090505b600554811015611326576004600082815260200190815260200160002060030160009054906101000a900460ff166113195760046000828152602001908152602001600020600201544211611319576004600082815260200190815260200160002060010154826113069190611ecf565b91508282111561131857809450611326565b5b8080600101915050611295565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f84011261138c5761138b611367565b5b8235905067ffffffffffffffff8111156113a9576113a861136c565b5b6020830191508360018202830111156113c5576113c4611371565b5b9250929050565b600080602083850312156113e3576113e261135d565b5b600083013567ffffffffffffffff81111561140157611400611362565b5b61140d85828601611376565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061144482611419565b9050919050565b61145481611439565b811461145f57600080fd5b50565b6000813590506114718161144b565b92915050565b6000819050919050565b61148a81611477565b811461149557600080fd5b50565b6000813590506114a781611481565b92915050565b6000806000606084860312156114c6576114c561135d565b5b60006114d486828701611462565b93505060206114e586828701611498565b92505060406114f686828701611498565b9150509250925092565b61150981611477565b82525050565b60006020820190506115246000830184611500565b92915050565b60008083601f8401126115405761153f611367565b5b8235905067ffffffffffffffff81111561155d5761155c61136c565b5b60208301915083600182028301111561157957611578611371565b5b9250929050565b6000806000806060858703121561159a5761159961135d565b5b60006115a887828801611498565b94505060206115b987828801611498565b935050604085013567ffffffffffffffff8111156115da576115d9611362565b5b6115e68782880161152a565b925092505092959194509250565b60006020828403121561160a5761160961135d565b5b600061161884828501611498565b91505092915050565b61162a81611439565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600481106116705761166f611630565b5b50565b60008190506116818261165f565b919050565b600061169182611673565b9050919050565b6116a181611686565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b838110156116e15780820151818401526020810190506116c6565b60008484015250505050565b6000601f19601f8301169050919050565b6000611709826116a7565b61171381856116b2565b93506117238185602086016116c3565b61172c816116ed565b840191505092915050565b60008115159050919050565b61174c81611737565b82525050565b600060e082019050611767600083018a611621565b6117746020830189611500565b6117816040830188611698565b61178e6060830187611500565b81810360808301526117a081866116fe565b905081810360a08301526117b481856116fe565b90506117c360c0830184611743565b98975050505050505050565b6117d881611737565b81146117e357600080fd5b50565b6000813590506117f5816117cf565b92915050565b600080604083850312156118125761181161135d565b5b600061182085828601611498565b9250506020611831858286016117e6565b9150509250929050565b60008190508260206003028201111561185757611856611371565b5b92915050565b60008060008060a085870312156118775761187661135d565b5b600061188587828801611498565b945050602085013567ffffffffffffffff8111156118a6576118a5611362565b5b6118b287828801611376565b935093505060406118c58782880161183b565b91505092959194509250565b600080604083850312156118e8576118e761135d565b5b60006118f685828601611498565b925050602061190785828601611498565b9150509250929050565b60006040820190506119266000830185611500565b6119336020830184611500565b9392505050565b60008083601f8401126119505761194f611367565b5b8235905067ffffffffffffffff81111561196d5761196c61136c565b5b60208301915083602082028301111561198957611988611371565b5b9250929050565b6000806000806000606086880312156119ac576119ab61135d565b5b60006119ba88828901611498565b955050602086013567ffffffffffffffff8111156119db576119da611362565b5b6119e788828901611376565b9450945050604086013567ffffffffffffffff811115611a0a57611a09611362565b5b611a168882890161193a565b92509250509295509295909350565b6000608082019050611a3a6000830187611621565b611a476020830186611500565b611a546040830185611500565b611a616060830184611743565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611aa06010836116b2565b9150611aab82611a6a565b602082019050919050565b60006020820190508181036000830152611acf81611a93565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611b1082611477565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611b4257611b41611ad6565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611bce57607f821691505b602082108103611be157611be0611b87565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302611c497fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611c0c565b611c538683611c0c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000611c90611c8b611c8684611477565b611c6b565b611477565b9050919050565b6000819050919050565b611caa83611c75565b611cbe611cb682611c97565b848454611c19565b825550505050565b600090565b611cd3611cc6565b611cde818484611ca1565b505050565b5b81811015611d0257611cf7600082611ccb565b600181019050611ce4565b5050565b601f821115611d4757611d1881611be7565b611d2184611bfc565b81016020851015611d30578190505b611d44611d3c85611bfc565b830182611ce3565b50505b505050565b600082821c905092915050565b6000611d6a60001984600802611d4c565b1980831691505092915050565b6000611d838383611d59565b9150826002028217905092915050565b611d9d8383611b4d565b67ffffffffffffffff811115611db657611db5611b58565b5b611dc08254611bb6565b611dcb828285611d06565b6000601f831160018114611dfa5760008415611de8578287013590505b611df28582611d77565b865550611e5a565b601f198416611e0886611be7565b60005b82811015611e3057848901358255600182019150602085019450602081019050611e0b565b86831015611e4d5784890135611e49601f891682611d59565b8355505b6001600288020188555050505b50505050505050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b6000611e996011836116b2565b9150611ea482611e63565b602082019050919050565b60006020820190508181036000830152611ec881611e8c565b9050919050565b6000611eda82611477565b9150611ee583611477565b9250828201905080821115611efd57611efc611ad6565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b6000611f396020836116b2565b9150611f4482611f03565b602082019050919050565b60006020820190508181036000830152611f6881611f2c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611fd381611477565b82525050565b611fe281611439565b82525050565b604082016000820151611ffe6000850182611fca565b5060208201516120116020850182611fd9565b50505050565b60006120238383611fe8565b60408301905092915050565b6000602082019050919050565b600061204782611f9e565b6120518185611fa9565b935061205c83611fba565b8060005b8381101561208d5781516120748882612017565b975061207f8361202f565b925050600181019050612060565b5085935050505092915050565b600081546120a781611bb6565b6120b181866116b2565b945060018216600081146120cc57600181146120e257612115565b60ff198316865281151560200286019350612115565b6120eb85611be7565b60005b8381101561210d578154818901526001820191506020810190506120ee565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b60006121796121748361214f565b61215c565b9050919050565b6000819050919050565b61219381612180565b82525050565b600082825260208201905092915050565b600081546121b781611bb6565b6121c18186612199565b945060018216600081146121dc57600181146121f257612225565b60ff198316865281151560200286019350612225565b6121fb85611be7565b60005b8381101561221d578154818901526001820191506020810190506121fe565b808801955050505b50505092915050565b600060408301600080840154905061224581612166565b612252600087018261218a565b5060018401858303602087015261226983826121aa565b925050819250505092915050565b6000612283838361222e565b905092915050565b6000600282019050919050565b60006122a38261211e565b6122ad8185612129565b9350836020820285016122bf8561213a565b8060005b858110156122fa578484038952816122db8582612277565b94506122e68361228b565b925060208a019950506001810190506122c3565b50829750879550505050505092915050565b60006060820190508181036000830152612326818661203c565b9050818103602083015261233a818561209a565b9050818103604083015261234e8184612298565b9050949350505050565b600060408201905061236d6000830185611500565b61237a6020830184611743565b9392505050565b600060029050919050565b600081905092915050565b6000819050919050565b60006123ad8383611fca565b60208301905092915050565b6000602082019050919050565b6123cf81612381565b6123d9818461238c565b92506123e482612397565b8060005b838110156124155781516123fc87826123a1565b9650612407836123b9565b9250506001810190506123e8565b505050505050565b6000819050919050565b600061244261243d6124388461241d565b611c6b565b611477565b9050919050565b61245281612427565b82525050565b600082825260208201905092915050565b50565b6000612479600083612458565b915061248482612469565b600082019050919050565b60006101408201905081810360008301526124aa818a61209a565b90506124b96020830189611500565b6124c660408301886123c6565b6124d360808301876123c6565b6124e060c0830186612449565b6124ed60e0830185611743565b6124fb610100830184611743565b81810361012083015261250d8161246c565b905098975050505050505050565b60008151905061252a81611481565b92915050565b6000602082840312156125465761254561135d565b5b60006125548482850161251b565b91505092915050565b60006080820190506125726000830187611500565b61257f6020830186611621565b61258c6040830185611500565b6125996060830184611743565b95945050505050565b82818337600083830152505050565b60006125bd83856116b2565b93506125ca8385846125a2565b6125d3836116ed565b840190509392505050565b82818337505050565b6125f3606083836125de565b5050565b600081519050919050565b600061260d826125f7565b6126178185612458565b93506126278185602086016116c3565b612630816116ed565b840191505092915050565b600060e082019050818103600083015261265681888a6125b1565b90506126656020830187611621565b61267260408301866125e7565b61267f60a0830185611743565b81810360c08301526126918184612602565b9050979650505050505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b60006126fa6033836116b2565b91506127058261269e565b604082019050919050565b60006020820190508181036000830152612729816126ed565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b600061278c6024836116b2565b915061279782612730565b604082019050919050565b600060208201905081810360008301526127bb8161277f565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b60006127f86018836116b2565b9150612803826127c2565b602082019050919050565b60006020820190508181036000830152612827816127eb565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b600061288a603a836116b2565b91506128958261282e565b604082019050919050565b600060208201905081810360008301526128b98161287d565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126128eb576128ea6128c0565b5b80830191505092915050565b61290081612180565b811461290b57600080fd5b50565b6000813561291b816128f7565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61295d84612924565b9350801983169250808416831791505092915050565b600061298e61298961298484612180565b611c6b565b612180565b9050919050565b6000819050919050565b6129a882612973565b6129bb6129b482612995565b8354612931565b8255505050565b600080833560016020038436030381126129df576129de6128c0565b5b80840192508235915067ffffffffffffffff821115612a0157612a006128c5565b5b602083019250600182023603831315612a1d57612a1c6128ca565b5b509250929050565b612a30838383611d93565b505050565b600081016000830180612a478161290e565b9050612a53818461299f565b5050506001810160208301612a6881856129c2565b612a73818386612a25565b505050505050565b612a858282612a35565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000612abf601a836116b2565b9150612aca82612a89565b602082019050919050565b60006020820190508181036000830152612aee81612ab2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612b2f82611477565b9150612b3a83611477565b925082612b4a57612b49612af5565b5b82820690509291505056fea264697066735822122008f9002425189e4161a3cf0f7fd8bd3d43a2d4371de965d2c9fd34b7b70ed9e964736f6c63430008180033", - "deployedBytecode": "0x6080604052600436106100dd5760003560e01c8063a035b1fe1161007f578063cf37625611610059578063cf37625614610296578063d0fae95f146102d4578063d5a44f86146102fd578063d76b67941461033d576100dd565b8063a035b1fe14610217578063b5b20c0014610242578063c4a9e1161461026b576100dd565b8063815a0572116100bb578063815a05721461015257806381d12c581461018f578063854b6a4f146101d257806399ad6c56146101fb576100dd565b80630d0271d6146100e2578063216ed6ad146100fe5780635badbe4c14610127575b600080fd5b6100fc60048036038101906100f791906113cc565b610368565b005b34801561010a57600080fd5b50610125600480360381019061012091906114ad565b610456565b005b34801561013357600080fd5b5061013c610569565b604051610149919061150f565b60405180910390f35b34801561015e57600080fd5b5061017960048036038101906101749190611580565b61056f565b604051610186919061150f565b60405180910390f35b34801561019b57600080fd5b506101b660048036038101906101b191906115f4565b6105ee565b6040516101c99796959493929190611752565b60405180910390f35b3480156101de57600080fd5b506101f960048036038101906101f491906117fb565b61077a565b005b6102156004803603810190610210919061185d565b610ba9565b005b34801561022357600080fd5b5061022c610cf2565b604051610239919061150f565b60405180910390f35b34801561024e57600080fd5b50610269600480360381019061026491906118d1565b610cf8565b005b34801561027757600080fd5b50610280610e6d565b60405161028d919061150f565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b891906115f4565b610e73565b6040516102cb929190611911565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f69190611990565b610e97565b005b34801561030957600080fd5b50610324600480360381019061031f91906115f4565b6110d0565b6040516103349493929190611a25565b60405180910390f35b34801561034957600080fd5b5061035261112d565b60405161035f919061150f565b60405180910390f35b6001543410156103ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a490611ab6565b60405180910390fd5b6000600760008154809291906103c290611b05565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034816001018190555061043482611133565b8160030181905550838382600401918261044f929190611d93565b5050505050565b60008211610499576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049090611eaf565b60405180910390fd5b6000600560008154809291906104ae90611b05565b9190505590506000600460008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426105239190611ecf565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e98260405161055a919061150f565b60405180910390a15050505050565b60075481565b600080838381019061058191906115f4565b9050600060026000838152602001908152602001600020905080600001546001819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f20826001546040516105d8929190611911565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461065690611bb6565b80601f016020809104026020016040519081016040528092919081815260200182805461068290611bb6565b80156106cf5780601f106106a4576101008083540402835291602001916106cf565b820191906000526020600020905b8154815290600101906020018083116106b257829003601f168201915b5050505050908060050180546106e490611bb6565b80601f016020809104026020016040519081016040528092919081815260200182805461071090611bb6565b801561075d5780601f106107325761010080835404028352916020019161075d565b820191906000526020600020905b81548152906001019060200180831161074057829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b6000600660008481526020019081526020016000209050600160038111156107a5576107a4611630565b5b8160020160009054906101000a900460ff1660038111156107c9576107c8611630565b5b14610809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080090611f4f565b60405180910390fd5b60006004600083600301548152602001908152602001600020905060028260020160006101000a81548160ff0219169083600381111561084c5761084b611630565b5b0217905550828260070160006101000a81548160ff0219169083151502179055506000600167ffffffffffffffff81111561088a57610889611b58565b5b6040519080825280602002602001820160405280156108c357816020015b6108b061132d565b8152602001906001900390816108a85790505b5090506040518060400160405280606481526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508160008151811061092a57610929611f6f565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b81526004016109989392919061230c565b600060405180830381600087803b1580156109b257600080fd5b505af11580156109c6573d6000803e3d6000fd5b505050507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc85856040516109fb929190612358565b60405180910390a160007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c738560010154866005016014604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518963ffffffff1660e01b8152600401610aa2979695949392919061248f565b60206040518083038185885af1158015610ac0573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ae59190612530565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015460016040518563ffffffff1660e01b8152600401610b6f949392919061255d565b600060405180830381600087803b158015610b8957600080fd5b505af1158015610b9d573d6000803e3d6000fd5b50505050505050505050565b600060036000815480929190610bbe90611b05565b919050559050600060026000838152602001908152602001600020905085816000018190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632805b5d93487873388600189604051602001610c38919061150f565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401610c689695949392919061263b565b60206040518083038185885af1158015610c86573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610cab9190612530565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610ce2919061150f565b60405180910390a1505050505050565b60015481565b60006004600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610da1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9890612710565b60405180910390fd5b8060030160009054906101000a900460ff1615610df3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dea906127a2565b60405180910390fd5b8060020154421115610e18578142610e0b9190611ecf565b8160020181905550610e31565b818160020154610e289190611ecf565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e983604051610e60919061150f565b60405180910390a1505050565b60055481565b60026020528060005260406000206000915090508060000154908060010154905082565b600060066000878152602001908152602001600020905060006003811115610ec257610ec1611630565b5b8160020160009054906101000a900460ff166003811115610ee657610ee5611630565b5b14610f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1d9061280e565b60405180910390fd5b6000600460008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fca906128a0565b60405180910390fd5b60018260020160006101000a81548160ff02191690836003811115610ffb57610ffa611630565b5b02179055508585836005019182611013929190611d93565b5060005b8484905081101561108f578260060185858381811061103957611038611f6f565b5b905060200281019061104b91906128cf565b908060018154018082558091505060019003906000526020600020906002020160009091909190915081816110809190612a7b565b50508080600101915050611017565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc876040516110bf919061150f565b60405180910390a150505050505050565b60046020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60035481565b600061113d6111b2565b9050600060046000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b483836040516111a4929190611911565b60405180910390a150919050565b60008060005b600554811015611239576004600082815260200190815260200160002060030160009054906101000a900460ff1661122c576004600082815260200190815260200160002060020154421161122c576004600082815260200190815260200160002060010154826112299190611ecf565b91505b80806001019150506111b8565b506000811161127d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127490612ad5565b60405180910390fd5b6000814461128b9190612b24565b9050600080600090505b600554811015611326576004600082815260200190815260200160002060030160009054906101000a900460ff166113195760046000828152602001908152602001600020600201544211611319576004600082815260200190815260200160002060010154826113069190611ecf565b91508282111561131857809450611326565b5b8080600101915050611295565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f84011261138c5761138b611367565b5b8235905067ffffffffffffffff8111156113a9576113a861136c565b5b6020830191508360018202830111156113c5576113c4611371565b5b9250929050565b600080602083850312156113e3576113e261135d565b5b600083013567ffffffffffffffff81111561140157611400611362565b5b61140d85828601611376565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061144482611419565b9050919050565b61145481611439565b811461145f57600080fd5b50565b6000813590506114718161144b565b92915050565b6000819050919050565b61148a81611477565b811461149557600080fd5b50565b6000813590506114a781611481565b92915050565b6000806000606084860312156114c6576114c561135d565b5b60006114d486828701611462565b93505060206114e586828701611498565b92505060406114f686828701611498565b9150509250925092565b61150981611477565b82525050565b60006020820190506115246000830184611500565b92915050565b60008083601f8401126115405761153f611367565b5b8235905067ffffffffffffffff81111561155d5761155c61136c565b5b60208301915083600182028301111561157957611578611371565b5b9250929050565b6000806000806060858703121561159a5761159961135d565b5b60006115a887828801611498565b94505060206115b987828801611498565b935050604085013567ffffffffffffffff8111156115da576115d9611362565b5b6115e68782880161152a565b925092505092959194509250565b60006020828403121561160a5761160961135d565b5b600061161884828501611498565b91505092915050565b61162a81611439565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600481106116705761166f611630565b5b50565b60008190506116818261165f565b919050565b600061169182611673565b9050919050565b6116a181611686565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b838110156116e15780820151818401526020810190506116c6565b60008484015250505050565b6000601f19601f8301169050919050565b6000611709826116a7565b61171381856116b2565b93506117238185602086016116c3565b61172c816116ed565b840191505092915050565b60008115159050919050565b61174c81611737565b82525050565b600060e082019050611767600083018a611621565b6117746020830189611500565b6117816040830188611698565b61178e6060830187611500565b81810360808301526117a081866116fe565b905081810360a08301526117b481856116fe565b90506117c360c0830184611743565b98975050505050505050565b6117d881611737565b81146117e357600080fd5b50565b6000813590506117f5816117cf565b92915050565b600080604083850312156118125761181161135d565b5b600061182085828601611498565b9250506020611831858286016117e6565b9150509250929050565b60008190508260206003028201111561185757611856611371565b5b92915050565b60008060008060a085870312156118775761187661135d565b5b600061188587828801611498565b945050602085013567ffffffffffffffff8111156118a6576118a5611362565b5b6118b287828801611376565b935093505060406118c58782880161183b565b91505092959194509250565b600080604083850312156118e8576118e761135d565b5b60006118f685828601611498565b925050602061190785828601611498565b9150509250929050565b60006040820190506119266000830185611500565b6119336020830184611500565b9392505050565b60008083601f8401126119505761194f611367565b5b8235905067ffffffffffffffff81111561196d5761196c61136c565b5b60208301915083602082028301111561198957611988611371565b5b9250929050565b6000806000806000606086880312156119ac576119ab61135d565b5b60006119ba88828901611498565b955050602086013567ffffffffffffffff8111156119db576119da611362565b5b6119e788828901611376565b9450945050604086013567ffffffffffffffff811115611a0a57611a09611362565b5b611a168882890161193a565b92509250509295509295909350565b6000608082019050611a3a6000830187611621565b611a476020830186611500565b611a546040830185611500565b611a616060830184611743565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611aa06010836116b2565b9150611aab82611a6a565b602082019050919050565b60006020820190508181036000830152611acf81611a93565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611b1082611477565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611b4257611b41611ad6565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611bce57607f821691505b602082108103611be157611be0611b87565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302611c497fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611c0c565b611c538683611c0c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000611c90611c8b611c8684611477565b611c6b565b611477565b9050919050565b6000819050919050565b611caa83611c75565b611cbe611cb682611c97565b848454611c19565b825550505050565b600090565b611cd3611cc6565b611cde818484611ca1565b505050565b5b81811015611d0257611cf7600082611ccb565b600181019050611ce4565b5050565b601f821115611d4757611d1881611be7565b611d2184611bfc565b81016020851015611d30578190505b611d44611d3c85611bfc565b830182611ce3565b50505b505050565b600082821c905092915050565b6000611d6a60001984600802611d4c565b1980831691505092915050565b6000611d838383611d59565b9150826002028217905092915050565b611d9d8383611b4d565b67ffffffffffffffff811115611db657611db5611b58565b5b611dc08254611bb6565b611dcb828285611d06565b6000601f831160018114611dfa5760008415611de8578287013590505b611df28582611d77565b865550611e5a565b601f198416611e0886611be7565b60005b82811015611e3057848901358255600182019150602085019450602081019050611e0b565b86831015611e4d5784890135611e49601f891682611d59565b8355505b6001600288020188555050505b50505050505050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b6000611e996011836116b2565b9150611ea482611e63565b602082019050919050565b60006020820190508181036000830152611ec881611e8c565b9050919050565b6000611eda82611477565b9150611ee583611477565b9250828201905080821115611efd57611efc611ad6565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b6000611f396020836116b2565b9150611f4482611f03565b602082019050919050565b60006020820190508181036000830152611f6881611f2c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611fd381611477565b82525050565b611fe281611439565b82525050565b604082016000820151611ffe6000850182611fca565b5060208201516120116020850182611fd9565b50505050565b60006120238383611fe8565b60408301905092915050565b6000602082019050919050565b600061204782611f9e565b6120518185611fa9565b935061205c83611fba565b8060005b8381101561208d5781516120748882612017565b975061207f8361202f565b925050600181019050612060565b5085935050505092915050565b600081546120a781611bb6565b6120b181866116b2565b945060018216600081146120cc57600181146120e257612115565b60ff198316865281151560200286019350612115565b6120eb85611be7565b60005b8381101561210d578154818901526001820191506020810190506120ee565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b60006121796121748361214f565b61215c565b9050919050565b6000819050919050565b61219381612180565b82525050565b600082825260208201905092915050565b600081546121b781611bb6565b6121c18186612199565b945060018216600081146121dc57600181146121f257612225565b60ff198316865281151560200286019350612225565b6121fb85611be7565b60005b8381101561221d578154818901526001820191506020810190506121fe565b808801955050505b50505092915050565b600060408301600080840154905061224581612166565b612252600087018261218a565b5060018401858303602087015261226983826121aa565b925050819250505092915050565b6000612283838361222e565b905092915050565b6000600282019050919050565b60006122a38261211e565b6122ad8185612129565b9350836020820285016122bf8561213a565b8060005b858110156122fa578484038952816122db8582612277565b94506122e68361228b565b925060208a019950506001810190506122c3565b50829750879550505050505092915050565b60006060820190508181036000830152612326818661203c565b9050818103602083015261233a818561209a565b9050818103604083015261234e8184612298565b9050949350505050565b600060408201905061236d6000830185611500565b61237a6020830184611743565b9392505050565b600060029050919050565b600081905092915050565b6000819050919050565b60006123ad8383611fca565b60208301905092915050565b6000602082019050919050565b6123cf81612381565b6123d9818461238c565b92506123e482612397565b8060005b838110156124155781516123fc87826123a1565b9650612407836123b9565b9250506001810190506123e8565b505050505050565b6000819050919050565b600061244261243d6124388461241d565b611c6b565b611477565b9050919050565b61245281612427565b82525050565b600082825260208201905092915050565b50565b6000612479600083612458565b915061248482612469565b600082019050919050565b60006101408201905081810360008301526124aa818a61209a565b90506124b96020830189611500565b6124c660408301886123c6565b6124d360808301876123c6565b6124e060c0830186612449565b6124ed60e0830185611743565b6124fb610100830184611743565b81810361012083015261250d8161246c565b905098975050505050505050565b60008151905061252a81611481565b92915050565b6000602082840312156125465761254561135d565b5b60006125548482850161251b565b91505092915050565b60006080820190506125726000830187611500565b61257f6020830186611621565b61258c6040830185611500565b6125996060830184611743565b95945050505050565b82818337600083830152505050565b60006125bd83856116b2565b93506125ca8385846125a2565b6125d3836116ed565b840190509392505050565b82818337505050565b6125f3606083836125de565b5050565b600081519050919050565b600061260d826125f7565b6126178185612458565b93506126278185602086016116c3565b612630816116ed565b840191505092915050565b600060e082019050818103600083015261265681888a6125b1565b90506126656020830187611621565b61267260408301866125e7565b61267f60a0830185611743565b81810360c08301526126918184612602565b9050979650505050505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b60006126fa6033836116b2565b91506127058261269e565b604082019050919050565b60006020820190508181036000830152612729816126ed565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b600061278c6024836116b2565b915061279782612730565b604082019050919050565b600060208201905081810360008301526127bb8161277f565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b60006127f86018836116b2565b9150612803826127c2565b602082019050919050565b60006020820190508181036000830152612827816127eb565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b600061288a603a836116b2565b91506128958261282e565b604082019050919050565b600060208201905081810360008301526128b98161287d565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126128eb576128ea6128c0565b5b80830191505092915050565b61290081612180565b811461290b57600080fd5b50565b6000813561291b816128f7565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61295d84612924565b9350801983169250808416831791505092915050565b600061298e61298961298484612180565b611c6b565b612180565b9050919050565b6000819050919050565b6129a882612973565b6129bb6129b482612995565b8354612931565b8255505050565b600080833560016020038436030381126129df576129de6128c0565b5b80840192508235915067ffffffffffffffff821115612a0157612a006128c5565b5b602083019250600182023603831315612a1d57612a1c6128ca565b5b509250929050565b612a30838383611d93565b505050565b600081016000830180612a478161290e565b9050612a53818461299f565b5050506001810160208301612a6881856129c2565b612a73818386612a25565b505050505050565b612a858282612a35565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000612abf601a836116b2565b9150612aca82612a89565b602082019050919050565b60006020820190508181036000830152612aee81612ab2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612b2f82611477565b9150612b3a83611477565b925082612b4a57612b49612af5565b5b82820690509291505056fea264697066735822122008f9002425189e4161a3cf0f7fd8bd3d43a2d4371de965d2c9fd34b7b70ed9e964736f6c63430008180033", + "bytecode": "0x60a06040523480156200001157600080fd5b5060405162002dd438038062002dd48339818101604052810190620000379190620001c1565b828282828073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505080600181905550816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050506200021d565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620000f582620000c8565b9050919050565b60006200010982620000e8565b9050919050565b6200011b81620000fc565b81146200012757600080fd5b50565b6000815190506200013b8162000110565b92915050565b60006200014e82620000e8565b9050919050565b620001608162000141565b81146200016c57600080fd5b50565b600081519050620001808162000155565b92915050565b6000819050919050565b6200019b8162000186565b8114620001a757600080fd5b50565b600081519050620001bb8162000190565b92915050565b600080600060608486031215620001dd57620001dc620000c3565b5b6000620001ed868287016200012a565b935050602062000200868287016200016f565b92505060406200021386828701620001aa565b9150509250925092565b608051612b8d620002476000396000818161093901528181610a090152610aeb0152612b8d6000f3fe6080604052600436106100dd5760003560e01c8063a035b1fe1161007f578063cf37625611610059578063cf37625614610296578063d0fae95f146102d4578063d5a44f86146102fd578063d76b67941461033d576100dd565b8063a035b1fe14610217578063b5b20c0014610242578063c4a9e1161461026b576100dd565b8063815a0572116100bb578063815a05721461015257806381d12c581461018f578063854b6a4f146101d257806399ad6c56146101fb576100dd565b80630d0271d6146100e2578063216ed6ad146100fe5780635badbe4c14610127575b600080fd5b6100fc60048036038101906100f791906113ce565b610368565b005b34801561010a57600080fd5b50610125600480360381019061012091906114af565b610456565b005b34801561013357600080fd5b5061013c610569565b6040516101499190611511565b60405180910390f35b34801561015e57600080fd5b5061017960048036038101906101749190611582565b61056f565b6040516101869190611511565b60405180910390f35b34801561019b57600080fd5b506101b660048036038101906101b191906115f6565b6105ee565b6040516101c99796959493929190611754565b60405180910390f35b3480156101de57600080fd5b506101f960048036038101906101f491906117fd565b61077a565b005b6102156004803603810190610210919061185f565b610bab565b005b34801561022357600080fd5b5061022c610cf4565b6040516102399190611511565b60405180910390f35b34801561024e57600080fd5b50610269600480360381019061026491906118d3565b610cfa565b005b34801561027757600080fd5b50610280610e6f565b60405161028d9190611511565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b891906115f6565b610e75565b6040516102cb929190611913565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f69190611992565b610e99565b005b34801561030957600080fd5b50610324600480360381019061031f91906115f6565b6110d2565b6040516103349493929190611a27565b60405180910390f35b34801561034957600080fd5b5061035261112f565b60405161035f9190611511565b60405180910390f35b6001543410156103ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a490611ab8565b60405180910390fd5b6000600760008154809291906103c290611b07565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034816001018190555061043482611135565b8160030181905550838382600401918261044f929190611d95565b5050505050565b60008211610499576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049090611eb1565b60405180910390fd5b6000600560008154809291906104ae90611b07565b9190505590506000600460008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426105239190611ed1565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e98260405161055a9190611511565b60405180910390a15050505050565b60075481565b600080838381019061058191906115f6565b9050600060026000838152602001908152602001600020905080600001546001819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f20826001546040516105d8929190611913565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461065690611bb8565b80601f016020809104026020016040519081016040528092919081815260200182805461068290611bb8565b80156106cf5780601f106106a4576101008083540402835291602001916106cf565b820191906000526020600020905b8154815290600101906020018083116106b257829003601f168201915b5050505050908060050180546106e490611bb8565b80601f016020809104026020016040519081016040528092919081815260200182805461071090611bb8565b801561075d5780601f106107325761010080835404028352916020019161075d565b820191906000526020600020905b81548152906001019060200180831161074057829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b6000600660008481526020019081526020016000209050600160038111156107a5576107a4611632565b5b8160020160009054906101000a900460ff1660038111156107c9576107c8611632565b5b14610809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080090611f51565b60405180910390fd5b60006004600083600301548152602001908152602001600020905060028260020160006101000a81548160ff0219169083600381111561084c5761084b611632565b5b0217905550828260070160006101000a81548160ff0219169083151502179055506000600167ffffffffffffffff81111561088a57610889611b5a565b5b6040519080825280602002602001820160405280156108c357816020015b6108b061132f565b8152602001906001900390816108a85790505b5090506040518060400160405280620f424081526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508160008151811061092c5761092b611f71565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b815260040161099a9392919061230e565b600060405180830381600087803b1580156109b457600080fd5b505af11580156109c8573d6000803e3d6000fd5b505050507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc85856040516109fd92919061235a565b60405180910390a160007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c738560010154866005016014604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518963ffffffff1660e01b8152600401610aa49796959493929190612491565b60206040518083038185885af1158015610ac2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ae79190612532565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015460016040518563ffffffff1660e01b8152600401610b71949392919061255f565b600060405180830381600087803b158015610b8b57600080fd5b505af1158015610b9f573d6000803e3d6000fd5b50505050505050505050565b600060036000815480929190610bc090611b07565b919050559050600060026000838152602001908152602001600020905085816000018190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632805b5d93487873388600189604051602001610c3a9190611511565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401610c6a9695949392919061263d565b60206040518083038185885af1158015610c88573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610cad9190612532565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610ce49190611511565b60405180910390a1505050505050565b60015481565b60006004600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9a90612712565b60405180910390fd5b8060030160009054906101000a900460ff1615610df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dec906127a4565b60405180910390fd5b8060020154421115610e1a578142610e0d9190611ed1565b8160020181905550610e33565b818160020154610e2a9190611ed1565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e983604051610e629190611511565b60405180910390a1505050565b60055481565b60026020528060005260406000206000915090508060000154908060010154905082565b600060066000878152602001908152602001600020905060006003811115610ec457610ec3611632565b5b8160020160009054906101000a900460ff166003811115610ee857610ee7611632565b5b14610f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1f90612810565b60405180910390fd5b6000600460008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcc906128a2565b60405180910390fd5b60018260020160006101000a81548160ff02191690836003811115610ffd57610ffc611632565b5b02179055508585836005019182611015929190611d95565b5060005b84849050811015611091578260060185858381811061103b5761103a611f71565b5b905060200281019061104d91906128d1565b908060018154018082558091505060019003906000526020600020906002020160009091909190915081816110829190612a7d565b50508080600101915050611019565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc876040516110c19190611511565b60405180910390a150505050505050565b60046020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60035481565b600061113f6111b4565b9050600060046000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b483836040516111a6929190611913565b60405180910390a150919050565b60008060005b60055481101561123b576004600082815260200190815260200160002060030160009054906101000a900460ff1661122e576004600082815260200190815260200160002060020154421161122e5760046000828152602001908152602001600020600101548261122b9190611ed1565b91505b80806001019150506111ba565b506000811161127f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127690612ad7565b60405180910390fd5b6000814461128d9190612b26565b9050600080600090505b600554811015611328576004600082815260200190815260200160002060030160009054906101000a900460ff1661131b576004600082815260200190815260200160002060020154421161131b576004600082815260200190815260200160002060010154826113089190611ed1565b91508282111561131a57809450611328565b5b8080600101915050611297565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f84011261138e5761138d611369565b5b8235905067ffffffffffffffff8111156113ab576113aa61136e565b5b6020830191508360018202830111156113c7576113c6611373565b5b9250929050565b600080602083850312156113e5576113e461135f565b5b600083013567ffffffffffffffff81111561140357611402611364565b5b61140f85828601611378565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114468261141b565b9050919050565b6114568161143b565b811461146157600080fd5b50565b6000813590506114738161144d565b92915050565b6000819050919050565b61148c81611479565b811461149757600080fd5b50565b6000813590506114a981611483565b92915050565b6000806000606084860312156114c8576114c761135f565b5b60006114d686828701611464565b93505060206114e78682870161149a565b92505060406114f88682870161149a565b9150509250925092565b61150b81611479565b82525050565b60006020820190506115266000830184611502565b92915050565b60008083601f84011261154257611541611369565b5b8235905067ffffffffffffffff81111561155f5761155e61136e565b5b60208301915083600182028301111561157b5761157a611373565b5b9250929050565b6000806000806060858703121561159c5761159b61135f565b5b60006115aa8782880161149a565b94505060206115bb8782880161149a565b935050604085013567ffffffffffffffff8111156115dc576115db611364565b5b6115e88782880161152c565b925092505092959194509250565b60006020828403121561160c5761160b61135f565b5b600061161a8482850161149a565b91505092915050565b61162c8161143b565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6004811061167257611671611632565b5b50565b600081905061168382611661565b919050565b600061169382611675565b9050919050565b6116a381611688565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b838110156116e35780820151818401526020810190506116c8565b60008484015250505050565b6000601f19601f8301169050919050565b600061170b826116a9565b61171581856116b4565b93506117258185602086016116c5565b61172e816116ef565b840191505092915050565b60008115159050919050565b61174e81611739565b82525050565b600060e082019050611769600083018a611623565b6117766020830189611502565b611783604083018861169a565b6117906060830187611502565b81810360808301526117a28186611700565b905081810360a08301526117b68185611700565b90506117c560c0830184611745565b98975050505050505050565b6117da81611739565b81146117e557600080fd5b50565b6000813590506117f7816117d1565b92915050565b600080604083850312156118145761181361135f565b5b60006118228582860161149a565b9250506020611833858286016117e8565b9150509250929050565b60008190508260206003028201111561185957611858611373565b5b92915050565b60008060008060a085870312156118795761187861135f565b5b60006118878782880161149a565b945050602085013567ffffffffffffffff8111156118a8576118a7611364565b5b6118b487828801611378565b935093505060406118c78782880161183d565b91505092959194509250565b600080604083850312156118ea576118e961135f565b5b60006118f88582860161149a565b92505060206119098582860161149a565b9150509250929050565b60006040820190506119286000830185611502565b6119356020830184611502565b9392505050565b60008083601f84011261195257611951611369565b5b8235905067ffffffffffffffff81111561196f5761196e61136e565b5b60208301915083602082028301111561198b5761198a611373565b5b9250929050565b6000806000806000606086880312156119ae576119ad61135f565b5b60006119bc8882890161149a565b955050602086013567ffffffffffffffff8111156119dd576119dc611364565b5b6119e988828901611378565b9450945050604086013567ffffffffffffffff811115611a0c57611a0b611364565b5b611a188882890161193c565b92509250509295509295909350565b6000608082019050611a3c6000830187611623565b611a496020830186611502565b611a566040830185611502565b611a636060830184611745565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611aa26010836116b4565b9150611aad82611a6c565b602082019050919050565b60006020820190508181036000830152611ad181611a95565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611b1282611479565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611b4457611b43611ad8565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611bd057607f821691505b602082108103611be357611be2611b89565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302611c4b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611c0e565b611c558683611c0e565b95508019841693508086168417925050509392505050565b6000819050919050565b6000611c92611c8d611c8884611479565b611c6d565b611479565b9050919050565b6000819050919050565b611cac83611c77565b611cc0611cb882611c99565b848454611c1b565b825550505050565b600090565b611cd5611cc8565b611ce0818484611ca3565b505050565b5b81811015611d0457611cf9600082611ccd565b600181019050611ce6565b5050565b601f821115611d4957611d1a81611be9565b611d2384611bfe565b81016020851015611d32578190505b611d46611d3e85611bfe565b830182611ce5565b50505b505050565b600082821c905092915050565b6000611d6c60001984600802611d4e565b1980831691505092915050565b6000611d858383611d5b565b9150826002028217905092915050565b611d9f8383611b4f565b67ffffffffffffffff811115611db857611db7611b5a565b5b611dc28254611bb8565b611dcd828285611d08565b6000601f831160018114611dfc5760008415611dea578287013590505b611df48582611d79565b865550611e5c565b601f198416611e0a86611be9565b60005b82811015611e3257848901358255600182019150602085019450602081019050611e0d565b86831015611e4f5784890135611e4b601f891682611d5b565b8355505b6001600288020188555050505b50505050505050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b6000611e9b6011836116b4565b9150611ea682611e65565b602082019050919050565b60006020820190508181036000830152611eca81611e8e565b9050919050565b6000611edc82611479565b9150611ee783611479565b9250828201905080821115611eff57611efe611ad8565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b6000611f3b6020836116b4565b9150611f4682611f05565b602082019050919050565b60006020820190508181036000830152611f6a81611f2e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611fd581611479565b82525050565b611fe48161143b565b82525050565b6040820160008201516120006000850182611fcc565b5060208201516120136020850182611fdb565b50505050565b60006120258383611fea565b60408301905092915050565b6000602082019050919050565b600061204982611fa0565b6120538185611fab565b935061205e83611fbc565b8060005b8381101561208f5781516120768882612019565b975061208183612031565b925050600181019050612062565b5085935050505092915050565b600081546120a981611bb8565b6120b381866116b4565b945060018216600081146120ce57600181146120e457612117565b60ff198316865281151560200286019350612117565b6120ed85611be9565b60005b8381101561210f578154818901526001820191506020810190506120f0565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b600061217b61217683612151565b61215e565b9050919050565b6000819050919050565b61219581612182565b82525050565b600082825260208201905092915050565b600081546121b981611bb8565b6121c3818661219b565b945060018216600081146121de57600181146121f457612227565b60ff198316865281151560200286019350612227565b6121fd85611be9565b60005b8381101561221f57815481890152600182019150602081019050612200565b808801955050505b50505092915050565b600060408301600080840154905061224781612168565b612254600087018261218c565b5060018401858303602087015261226b83826121ac565b925050819250505092915050565b60006122858383612230565b905092915050565b6000600282019050919050565b60006122a582612120565b6122af818561212b565b9350836020820285016122c18561213c565b8060005b858110156122fc578484038952816122dd8582612279565b94506122e88361228d565b925060208a019950506001810190506122c5565b50829750879550505050505092915050565b60006060820190508181036000830152612328818661203e565b9050818103602083015261233c818561209c565b90508181036040830152612350818461229a565b9050949350505050565b600060408201905061236f6000830185611502565b61237c6020830184611745565b9392505050565b600060029050919050565b600081905092915050565b6000819050919050565b60006123af8383611fcc565b60208301905092915050565b6000602082019050919050565b6123d181612383565b6123db818461238e565b92506123e682612399565b8060005b838110156124175781516123fe87826123a3565b9650612409836123bb565b9250506001810190506123ea565b505050505050565b6000819050919050565b600061244461243f61243a8461241f565b611c6d565b611479565b9050919050565b61245481612429565b82525050565b600082825260208201905092915050565b50565b600061247b60008361245a565b91506124868261246b565b600082019050919050565b60006101408201905081810360008301526124ac818a61209c565b90506124bb6020830189611502565b6124c860408301886123c8565b6124d560808301876123c8565b6124e260c083018661244b565b6124ef60e0830185611745565b6124fd610100830184611745565b81810361012083015261250f8161246e565b905098975050505050505050565b60008151905061252c81611483565b92915050565b6000602082840312156125485761254761135f565b5b60006125568482850161251d565b91505092915050565b60006080820190506125746000830187611502565b6125816020830186611623565b61258e6040830185611502565b61259b6060830184611745565b95945050505050565b82818337600083830152505050565b60006125bf83856116b4565b93506125cc8385846125a4565b6125d5836116ef565b840190509392505050565b82818337505050565b6125f5606083836125e0565b5050565b600081519050919050565b600061260f826125f9565b612619818561245a565b93506126298185602086016116c5565b612632816116ef565b840191505092915050565b600060e082019050818103600083015261265881888a6125b3565b90506126676020830187611623565b61267460408301866125e9565b61268160a0830185611745565b81810360c08301526126938184612604565b9050979650505050505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b60006126fc6033836116b4565b9150612707826126a0565b604082019050919050565b6000602082019050818103600083015261272b816126ef565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b600061278e6024836116b4565b915061279982612732565b604082019050919050565b600060208201905081810360008301526127bd81612781565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b60006127fa6018836116b4565b9150612805826127c4565b602082019050919050565b60006020820190508181036000830152612829816127ed565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b600061288c603a836116b4565b915061289782612830565b604082019050919050565b600060208201905081810360008301526128bb8161287f565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126128ed576128ec6128c2565b5b80830191505092915050565b61290281612182565b811461290d57600080fd5b50565b6000813561291d816128f9565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61295f84612926565b9350801983169250808416831791505092915050565b600061299061298b61298684612182565b611c6d565b612182565b9050919050565b6000819050919050565b6129aa82612975565b6129bd6129b682612997565b8354612933565b8255505050565b600080833560016020038436030381126129e1576129e06128c2565b5b80840192508235915067ffffffffffffffff821115612a0357612a026128c7565b5b602083019250600182023603831315612a1f57612a1e6128cc565b5b509250929050565b612a32838383611d95565b505050565b600081016000830180612a4981612910565b9050612a5581846129a1565b5050506001810160208301612a6a81856129c4565b612a75818386612a27565b505050505050565b612a878282612a37565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000612ac1601a836116b4565b9150612acc82612a8b565b602082019050919050565b60006020820190508181036000830152612af081612ab4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612b3182611479565b9150612b3c83611479565b925082612b4c57612b4b612af7565b5b82820690509291505056fea2646970667358221220ad5c1dd42c9ef3e423380a990f5205cc4fff11b24977bb0d4b0b8430bc7efd6c64736f6c63430008180033", + "deployedBytecode": "0x6080604052600436106100dd5760003560e01c8063a035b1fe1161007f578063cf37625611610059578063cf37625614610296578063d0fae95f146102d4578063d5a44f86146102fd578063d76b67941461033d576100dd565b8063a035b1fe14610217578063b5b20c0014610242578063c4a9e1161461026b576100dd565b8063815a0572116100bb578063815a05721461015257806381d12c581461018f578063854b6a4f146101d257806399ad6c56146101fb576100dd565b80630d0271d6146100e2578063216ed6ad146100fe5780635badbe4c14610127575b600080fd5b6100fc60048036038101906100f791906113ce565b610368565b005b34801561010a57600080fd5b50610125600480360381019061012091906114af565b610456565b005b34801561013357600080fd5b5061013c610569565b6040516101499190611511565b60405180910390f35b34801561015e57600080fd5b5061017960048036038101906101749190611582565b61056f565b6040516101869190611511565b60405180910390f35b34801561019b57600080fd5b506101b660048036038101906101b191906115f6565b6105ee565b6040516101c99796959493929190611754565b60405180910390f35b3480156101de57600080fd5b506101f960048036038101906101f491906117fd565b61077a565b005b6102156004803603810190610210919061185f565b610bab565b005b34801561022357600080fd5b5061022c610cf4565b6040516102399190611511565b60405180910390f35b34801561024e57600080fd5b50610269600480360381019061026491906118d3565b610cfa565b005b34801561027757600080fd5b50610280610e6f565b60405161028d9190611511565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b891906115f6565b610e75565b6040516102cb929190611913565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f69190611992565b610e99565b005b34801561030957600080fd5b50610324600480360381019061031f91906115f6565b6110d2565b6040516103349493929190611a27565b60405180910390f35b34801561034957600080fd5b5061035261112f565b60405161035f9190611511565b60405180910390f35b6001543410156103ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a490611ab8565b60405180910390fd5b6000600760008154809291906103c290611b07565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034816001018190555061043482611135565b8160030181905550838382600401918261044f929190611d95565b5050505050565b60008211610499576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049090611eb1565b60405180910390fd5b6000600560008154809291906104ae90611b07565b9190505590506000600460008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426105239190611ed1565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e98260405161055a9190611511565b60405180910390a15050505050565b60075481565b600080838381019061058191906115f6565b9050600060026000838152602001908152602001600020905080600001546001819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f20826001546040516105d8929190611913565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461065690611bb8565b80601f016020809104026020016040519081016040528092919081815260200182805461068290611bb8565b80156106cf5780601f106106a4576101008083540402835291602001916106cf565b820191906000526020600020905b8154815290600101906020018083116106b257829003601f168201915b5050505050908060050180546106e490611bb8565b80601f016020809104026020016040519081016040528092919081815260200182805461071090611bb8565b801561075d5780601f106107325761010080835404028352916020019161075d565b820191906000526020600020905b81548152906001019060200180831161074057829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b6000600660008481526020019081526020016000209050600160038111156107a5576107a4611632565b5b8160020160009054906101000a900460ff1660038111156107c9576107c8611632565b5b14610809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080090611f51565b60405180910390fd5b60006004600083600301548152602001908152602001600020905060028260020160006101000a81548160ff0219169083600381111561084c5761084b611632565b5b0217905550828260070160006101000a81548160ff0219169083151502179055506000600167ffffffffffffffff81111561088a57610889611b5a565b5b6040519080825280602002602001820160405280156108c357816020015b6108b061132f565b8152602001906001900390816108a85790505b5090506040518060400160405280620f424081526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508160008151811061092c5761092b611f71565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b815260040161099a9392919061230e565b600060405180830381600087803b1580156109b457600080fd5b505af11580156109c8573d6000803e3d6000fd5b505050507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc85856040516109fd92919061235a565b60405180910390a160007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c738560010154866005016014604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518963ffffffff1660e01b8152600401610aa49796959493929190612491565b60206040518083038185885af1158015610ac2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ae79190612532565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015460016040518563ffffffff1660e01b8152600401610b71949392919061255f565b600060405180830381600087803b158015610b8b57600080fd5b505af1158015610b9f573d6000803e3d6000fd5b50505050505050505050565b600060036000815480929190610bc090611b07565b919050559050600060026000838152602001908152602001600020905085816000018190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632805b5d93487873388600189604051602001610c3a9190611511565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401610c6a9695949392919061263d565b60206040518083038185885af1158015610c88573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610cad9190612532565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610ce49190611511565b60405180910390a1505050505050565b60015481565b60006004600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9a90612712565b60405180910390fd5b8060030160009054906101000a900460ff1615610df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dec906127a4565b60405180910390fd5b8060020154421115610e1a578142610e0d9190611ed1565b8160020181905550610e33565b818160020154610e2a9190611ed1565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e983604051610e629190611511565b60405180910390a1505050565b60055481565b60026020528060005260406000206000915090508060000154908060010154905082565b600060066000878152602001908152602001600020905060006003811115610ec457610ec3611632565b5b8160020160009054906101000a900460ff166003811115610ee857610ee7611632565b5b14610f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1f90612810565b60405180910390fd5b6000600460008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcc906128a2565b60405180910390fd5b60018260020160006101000a81548160ff02191690836003811115610ffd57610ffc611632565b5b02179055508585836005019182611015929190611d95565b5060005b84849050811015611091578260060185858381811061103b5761103a611f71565b5b905060200281019061104d91906128d1565b908060018154018082558091505060019003906000526020600020906002020160009091909190915081816110829190612a7d565b50508080600101915050611019565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc876040516110c19190611511565b60405180910390a150505050505050565b60046020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60035481565b600061113f6111b4565b9050600060046000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b483836040516111a6929190611913565b60405180910390a150919050565b60008060005b60055481101561123b576004600082815260200190815260200160002060030160009054906101000a900460ff1661122e576004600082815260200190815260200160002060020154421161122e5760046000828152602001908152602001600020600101548261122b9190611ed1565b91505b80806001019150506111ba565b506000811161127f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127690612ad7565b60405180910390fd5b6000814461128d9190612b26565b9050600080600090505b600554811015611328576004600082815260200190815260200160002060030160009054906101000a900460ff1661131b576004600082815260200190815260200160002060020154421161131b576004600082815260200190815260200160002060010154826113089190611ed1565b91508282111561131a57809450611328565b5b8080600101915050611297565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f84011261138e5761138d611369565b5b8235905067ffffffffffffffff8111156113ab576113aa61136e565b5b6020830191508360018202830111156113c7576113c6611373565b5b9250929050565b600080602083850312156113e5576113e461135f565b5b600083013567ffffffffffffffff81111561140357611402611364565b5b61140f85828601611378565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114468261141b565b9050919050565b6114568161143b565b811461146157600080fd5b50565b6000813590506114738161144d565b92915050565b6000819050919050565b61148c81611479565b811461149757600080fd5b50565b6000813590506114a981611483565b92915050565b6000806000606084860312156114c8576114c761135f565b5b60006114d686828701611464565b93505060206114e78682870161149a565b92505060406114f88682870161149a565b9150509250925092565b61150b81611479565b82525050565b60006020820190506115266000830184611502565b92915050565b60008083601f84011261154257611541611369565b5b8235905067ffffffffffffffff81111561155f5761155e61136e565b5b60208301915083600182028301111561157b5761157a611373565b5b9250929050565b6000806000806060858703121561159c5761159b61135f565b5b60006115aa8782880161149a565b94505060206115bb8782880161149a565b935050604085013567ffffffffffffffff8111156115dc576115db611364565b5b6115e88782880161152c565b925092505092959194509250565b60006020828403121561160c5761160b61135f565b5b600061161a8482850161149a565b91505092915050565b61162c8161143b565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6004811061167257611671611632565b5b50565b600081905061168382611661565b919050565b600061169382611675565b9050919050565b6116a381611688565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b838110156116e35780820151818401526020810190506116c8565b60008484015250505050565b6000601f19601f8301169050919050565b600061170b826116a9565b61171581856116b4565b93506117258185602086016116c5565b61172e816116ef565b840191505092915050565b60008115159050919050565b61174e81611739565b82525050565b600060e082019050611769600083018a611623565b6117766020830189611502565b611783604083018861169a565b6117906060830187611502565b81810360808301526117a28186611700565b905081810360a08301526117b68185611700565b90506117c560c0830184611745565b98975050505050505050565b6117da81611739565b81146117e557600080fd5b50565b6000813590506117f7816117d1565b92915050565b600080604083850312156118145761181361135f565b5b60006118228582860161149a565b9250506020611833858286016117e8565b9150509250929050565b60008190508260206003028201111561185957611858611373565b5b92915050565b60008060008060a085870312156118795761187861135f565b5b60006118878782880161149a565b945050602085013567ffffffffffffffff8111156118a8576118a7611364565b5b6118b487828801611378565b935093505060406118c78782880161183d565b91505092959194509250565b600080604083850312156118ea576118e961135f565b5b60006118f88582860161149a565b92505060206119098582860161149a565b9150509250929050565b60006040820190506119286000830185611502565b6119356020830184611502565b9392505050565b60008083601f84011261195257611951611369565b5b8235905067ffffffffffffffff81111561196f5761196e61136e565b5b60208301915083602082028301111561198b5761198a611373565b5b9250929050565b6000806000806000606086880312156119ae576119ad61135f565b5b60006119bc8882890161149a565b955050602086013567ffffffffffffffff8111156119dd576119dc611364565b5b6119e988828901611378565b9450945050604086013567ffffffffffffffff811115611a0c57611a0b611364565b5b611a188882890161193c565b92509250509295509295909350565b6000608082019050611a3c6000830187611623565b611a496020830186611502565b611a566040830185611502565b611a636060830184611745565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611aa26010836116b4565b9150611aad82611a6c565b602082019050919050565b60006020820190508181036000830152611ad181611a95565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611b1282611479565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611b4457611b43611ad8565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611bd057607f821691505b602082108103611be357611be2611b89565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302611c4b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611c0e565b611c558683611c0e565b95508019841693508086168417925050509392505050565b6000819050919050565b6000611c92611c8d611c8884611479565b611c6d565b611479565b9050919050565b6000819050919050565b611cac83611c77565b611cc0611cb882611c99565b848454611c1b565b825550505050565b600090565b611cd5611cc8565b611ce0818484611ca3565b505050565b5b81811015611d0457611cf9600082611ccd565b600181019050611ce6565b5050565b601f821115611d4957611d1a81611be9565b611d2384611bfe565b81016020851015611d32578190505b611d46611d3e85611bfe565b830182611ce5565b50505b505050565b600082821c905092915050565b6000611d6c60001984600802611d4e565b1980831691505092915050565b6000611d858383611d5b565b9150826002028217905092915050565b611d9f8383611b4f565b67ffffffffffffffff811115611db857611db7611b5a565b5b611dc28254611bb8565b611dcd828285611d08565b6000601f831160018114611dfc5760008415611dea578287013590505b611df48582611d79565b865550611e5c565b601f198416611e0a86611be9565b60005b82811015611e3257848901358255600182019150602085019450602081019050611e0d565b86831015611e4f5784890135611e4b601f891682611d5b565b8355505b6001600288020188555050505b50505050505050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b6000611e9b6011836116b4565b9150611ea682611e65565b602082019050919050565b60006020820190508181036000830152611eca81611e8e565b9050919050565b6000611edc82611479565b9150611ee783611479565b9250828201905080821115611eff57611efe611ad8565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b6000611f3b6020836116b4565b9150611f4682611f05565b602082019050919050565b60006020820190508181036000830152611f6a81611f2e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611fd581611479565b82525050565b611fe48161143b565b82525050565b6040820160008201516120006000850182611fcc565b5060208201516120136020850182611fdb565b50505050565b60006120258383611fea565b60408301905092915050565b6000602082019050919050565b600061204982611fa0565b6120538185611fab565b935061205e83611fbc565b8060005b8381101561208f5781516120768882612019565b975061208183612031565b925050600181019050612062565b5085935050505092915050565b600081546120a981611bb8565b6120b381866116b4565b945060018216600081146120ce57600181146120e457612117565b60ff198316865281151560200286019350612117565b6120ed85611be9565b60005b8381101561210f578154818901526001820191506020810190506120f0565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b600061217b61217683612151565b61215e565b9050919050565b6000819050919050565b61219581612182565b82525050565b600082825260208201905092915050565b600081546121b981611bb8565b6121c3818661219b565b945060018216600081146121de57600181146121f457612227565b60ff198316865281151560200286019350612227565b6121fd85611be9565b60005b8381101561221f57815481890152600182019150602081019050612200565b808801955050505b50505092915050565b600060408301600080840154905061224781612168565b612254600087018261218c565b5060018401858303602087015261226b83826121ac565b925050819250505092915050565b60006122858383612230565b905092915050565b6000600282019050919050565b60006122a582612120565b6122af818561212b565b9350836020820285016122c18561213c565b8060005b858110156122fc578484038952816122dd8582612279565b94506122e88361228d565b925060208a019950506001810190506122c5565b50829750879550505050505092915050565b60006060820190508181036000830152612328818661203e565b9050818103602083015261233c818561209c565b90508181036040830152612350818461229a565b9050949350505050565b600060408201905061236f6000830185611502565b61237c6020830184611745565b9392505050565b600060029050919050565b600081905092915050565b6000819050919050565b60006123af8383611fcc565b60208301905092915050565b6000602082019050919050565b6123d181612383565b6123db818461238e565b92506123e682612399565b8060005b838110156124175781516123fe87826123a3565b9650612409836123bb565b9250506001810190506123ea565b505050505050565b6000819050919050565b600061244461243f61243a8461241f565b611c6d565b611479565b9050919050565b61245481612429565b82525050565b600082825260208201905092915050565b50565b600061247b60008361245a565b91506124868261246b565b600082019050919050565b60006101408201905081810360008301526124ac818a61209c565b90506124bb6020830189611502565b6124c860408301886123c8565b6124d560808301876123c8565b6124e260c083018661244b565b6124ef60e0830185611745565b6124fd610100830184611745565b81810361012083015261250f8161246e565b905098975050505050505050565b60008151905061252c81611483565b92915050565b6000602082840312156125485761254761135f565b5b60006125568482850161251d565b91505092915050565b60006080820190506125746000830187611502565b6125816020830186611623565b61258e6040830185611502565b61259b6060830184611745565b95945050505050565b82818337600083830152505050565b60006125bf83856116b4565b93506125cc8385846125a4565b6125d5836116ef565b840190509392505050565b82818337505050565b6125f5606083836125e0565b5050565b600081519050919050565b600061260f826125f9565b612619818561245a565b93506126298185602086016116c5565b612632816116ef565b840191505092915050565b600060e082019050818103600083015261265881888a6125b3565b90506126676020830187611623565b61267460408301866125e9565b61268160a0830185611745565b81810360c08301526126938184612604565b9050979650505050505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b60006126fc6033836116b4565b9150612707826126a0565b604082019050919050565b6000602082019050818103600083015261272b816126ef565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b600061278e6024836116b4565b915061279982612732565b604082019050919050565b600060208201905081810360008301526127bd81612781565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b60006127fa6018836116b4565b9150612805826127c4565b602082019050919050565b60006020820190508181036000830152612829816127ed565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b600061288c603a836116b4565b915061289782612830565b604082019050919050565b600060208201905081810360008301526128bb8161287f565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126128ed576128ec6128c2565b5b80830191505092915050565b61290281612182565b811461290d57600080fd5b50565b6000813561291d816128f9565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61295f84612926565b9350801983169250808416831791505092915050565b600061299061298b61298684612182565b611c6d565b612182565b9050919050565b6000819050919050565b6129aa82612975565b6129bd6129b682612997565b8354612933565b8255505050565b600080833560016020038436030381126129e1576129e06128c2565b5b80840192508235915067ffffffffffffffff821115612a0357612a026128c7565b5b602083019250600182023603831315612a1f57612a1e6128cc565b5b509250929050565b612a32838383611d95565b505050565b600081016000830180612a4981612910565b9050612a5581846129a1565b5050506001810160208301612a6a81856129c4565b612a75818386612a27565b505050505050565b612a878282612a37565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000612ac1601a836116b4565b9150612acc82612a8b565b602082019050919050565b60006020820190508181036000830152612af081612ab4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612b3182611479565b9150612b3c83611479565b925082612b4c57612b4b612af7565b5b82820690509291505056fea2646970667358221220ad5c1dd42c9ef3e423380a990f5205cc4fff11b24977bb0d4b0b8430bc7efd6c64736f6c63430008180033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index c9585a8..d844b45 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -428,11 +428,11 @@ function App() { {post.id.toString()} - {post.authors.map(({ authorAddress, weightPercent }) => ( + {post.authors.map(({ authorAddress, weightPPM }) => (
{getAddressName(chainId, authorAddress)} {' '} - {weightPercent.toString()} + {Number(weightPPM) / 10000} %
))} diff --git a/frontend/src/components/posts/AddPostModal.jsx b/frontend/src/components/posts/AddPostModal.jsx index 3c9cdde..95748a2 100644 --- a/frontend/src/components/posts/AddPostModal.jsx +++ b/frontend/src/components/posts/AddPostModal.jsx @@ -19,7 +19,7 @@ function AddPostModal({ const handleSubmit = useCallback(async () => { // Upload content to API - const post = new Post({ content, authors: [{ weightPercent: 100, authorAddress: account }] }); + const post = new Post({ content, authors: [{ weightPPM: 1000000, authorAddress: account }] }); // Include metamask signature await post.sign(provider, account); // Clear the input and hide the modal diff --git a/frontend/src/components/posts/ViewPostModal.jsx b/frontend/src/components/posts/ViewPostModal.jsx index 257d690..6c6e2da 100644 --- a/frontend/src/components/posts/ViewPostModal.jsx +++ b/frontend/src/components/posts/ViewPostModal.jsx @@ -23,11 +23,11 @@ function ViewPostModal({
Authors
- {authors?.map(({ authorAddress, weightPercent }) => ( + {authors?.map(({ authorAddress, weightPPM }) => (
{authorAddress} {' '} - {weightPercent.toString()} + {Number(weightPPM) / 10000} %
))} @@ -47,11 +47,11 @@ function ViewPostModal({
Citations
- {citations.map(({ weightPercent, targetPostId }) => ( + {citations.map(({ weightPPM, targetPostId }) => (
{targetPostId} {' '} - {weightPercent.toString()} + {Number(weightPPM) / 10000} %
))} diff --git a/frontend/src/components/work-contracts/ProposePriceChangeModal.jsx b/frontend/src/components/work-contracts/ProposePriceChangeModal.jsx index 0f0feaf..93a5d97 100644 --- a/frontend/src/components/work-contracts/ProposePriceChangeModal.jsx +++ b/frontend/src/components/work-contracts/ProposePriceChangeModal.jsx @@ -34,7 +34,7 @@ function ProposePriceChangeModal({ const handleClose = () => setShow(false); const handleSubmit = useCallback(async () => { - const post = new Post({ content, authors: [{ weightPercent: 100, authorAddress: account }] }); + const post = new Post({ content, authors: [{ weightPPM: 1000000, authorAddress: account }] }); // Include price as embedded data post.embeddedData = { proposedPrice }; // Include metamask signature