[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "TransferBatch", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "TransferSingle", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "value", "type": "string" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "URI", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PAUSER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "URI_SETTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "balanceOfBatch", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "burnBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "distribute", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "name": "distributeBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "name": "distributeBatchAccount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenAddress", "type": "address" } ], "name": "emergencyWithdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "exists", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "maxSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeBatchTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "_maxSupply", "type": "uint256" } ], "name": "setMaxSupply", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "string", "name": "_name", "type": "string" } ], "name": "setNFTName", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "string", "name": "_uri", "type": "string" } ], "name": "setNFTURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "string", "name": "_uri", "type": "string" }, { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "uint256", "name": "_maxSupply", "type": "uint256" } ], "name": "setToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "tokenNames", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "tokenURIs", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" } ], "name": "updateNameAndSymbol", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" } ]
60806040523480156200001157600080fd5b5060405162005cdb38038062005cdb83398181016040528101906200003791906200053d565b6040518060200160405280600081525062000058816200015960201b60201c565b506000600460006101000a81548160ff02191690831515021790555081600990805190602001906200008c929190620002f0565b5080600a9080519060200190620000a5929190620002f0565b50620000bb6000801b336200017560201b60201c565b620000ed7f7804d923f43a17d325d77e781528e0793b2edd9890ab45fc64efd7b4b427744c336200017560201b60201c565b6200011f7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a336200017560201b60201c565b620001517f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6336200017560201b60201c565b505062000627565b806002908051906020019062000171929190620002f0565b5050565b6200018782826200018b60201b60201c565b5050565b6200019d82826200027d60201b60201c565b620002795760016003600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200021e620002e860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60006003600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b828054620002fe90620005f1565b90600052602060002090601f0160209004810192826200032257600085556200036e565b82601f106200033d57805160ff19168380011785556200036e565b828001600101855582156200036e579182015b828111156200036d57825182559160200191906001019062000350565b5b5090506200037d919062000381565b5090565b5b808211156200039c57600081600090555060010162000382565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200040982620003be565b810181811067ffffffffffffffff821117156200042b576200042a620003cf565b5b80604052505050565b600062000440620003a0565b90506200044e8282620003fe565b919050565b600067ffffffffffffffff821115620004715762000470620003cf565b5b6200047c82620003be565b9050602081019050919050565b60005b83811015620004a95780820151818401526020810190506200048c565b83811115620004b9576000848401525b50505050565b6000620004d6620004d08462000453565b62000434565b905082815260208101848484011115620004f557620004f4620003b9565b5b6200050284828562000489565b509392505050565b600082601f830112620005225762000521620003b4565b5b815162000534848260208601620004bf565b91505092915050565b60008060408385031215620005575762000556620003aa565b5b600083015167ffffffffffffffff811115620005785762000577620003af565b5b62000586858286016200050a565b925050602083015167ffffffffffffffff811115620005aa57620005a9620003af565b5b620005b8858286016200050a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200060a57607f821691505b60208210811415620006215762000620620005c2565b5b50919050565b6156a480620006376000396000f3fe608060405234801561001057600080fd5b50600436106102315760003560e01c80636ff1c9bc11610130578063bd85b039116100b8578063e63ab1e91161007c578063e63ab1e914610696578063e985e9c5146106b4578063eaf9d194146106e4578063f242432a14610700578063f5298aca1461071c57610231565b8063bd85b039146105f4578063d539139314610624578063d547741f14610642578063df6e99111461065e578063e2c92a521461067a57610231565b80638823468f116100ff5780638823468f1461055057806391d148541461056c57806395d89b411461059c578063a217fddf146105ba578063a22cb465146105d857610231565b80636ff1c9bc146104dc5780637f345710146104f85780638456cb5914610516578063869f75941461052057610231565b8063310495ab116101be5780634f558e79116101825780634f558e79146104265780635c975abb146104565780635d37216f146104745780636b20c454146104905780636c8b703f146104ac57610231565b8063310495ab1461038457806336568abe146103b457806337da577c146103d05780633f4ba83a146103ec5780634e1273f4146103f657610231565b80630e89341c116102055780630e89341c146102d0578063197cd6e514610300578063248a9ca31461031c5780632eb2c2d61461034c5780632f2ff15d1461036857610231565b8062fdd58e1461023657806301ffc9a71461026657806306f0d24a1461029657806306fdde03146102b2575b600080fd5b610250600480360381019061024b919061384f565b610738565b60405161025d919061389e565b60405180910390f35b610280600480360381019061027b9190613911565b610801565b60405161028d9190613959565b60405180910390f35b6102b060048036038101906102ab9190613b90565b610813565b005b6102ba61095b565b6040516102c79190613cbf565b60405180910390f35b6102ea60048036038101906102e59190613ce1565b6109e9565b6040516102f79190613cbf565b60405180910390f35b61031a60048036038101906103159190613dc3565b610a8e565b005b61033660048036038101906103319190613e98565b610b27565b6040516103439190613ed4565b60405180910390f35b61036660048036038101906103619190613f90565b610b47565b005b610382600480360381019061037d919061405f565b610be8565b005b61039e60048036038101906103999190613ce1565b610c09565b6040516103ab9190613cbf565b60405180910390f35b6103ce60048036038101906103c9919061405f565b610ca9565b005b6103ea60048036038101906103e5919061409f565b610d2c565b005b6103f4610d56565b005b610410600480360381019061040b91906140df565b610d8b565b60405161041d9190614215565b60405180910390f35b610440600480360381019061043b9190613ce1565b610ea4565b60405161044d9190613959565b60405180910390f35b61045e610eb8565b60405161046b9190613959565b60405180910390f35b61048e60048036038101906104899190614237565b610ecf565b005b6104aa60048036038101906104a59190614237565b610f58565b005b6104c660048036038101906104c19190613ce1565b610ff5565b6040516104d39190613cbf565b60405180910390f35b6104f660048036038101906104f191906142c2565b611095565b005b610500611244565b60405161050d9190613ed4565b60405180910390f35b61051e611268565b005b61053a60048036038101906105359190613ce1565b61129d565b604051610547919061389e565b60405180910390f35b61056a600480360381019061056591906142ef565b6112b5565b005b6105866004803603810190610581919061405f565b6112ef565b6040516105939190613959565b60405180910390f35b6105a461135a565b6040516105b19190613cbf565b60405180910390f35b6105c26113e8565b6040516105cf9190613ed4565b60405180910390f35b6105f260048036038101906105ed9190614377565b6113ef565b005b61060e60048036038101906106099190613ce1565b611405565b60405161061b919061389e565b60405180910390f35b61062c611422565b6040516106399190613ed4565b60405180910390f35b61065c6004803603810190610657919061405f565b611446565b005b610678600480360381019061067391906142ef565b611467565b005b610694600480360381019061068f91906143b7565b6114a1565b005b61069e61152a565b6040516106ab9190613ed4565b60405180910390f35b6106ce60048036038101906106c9919061440a565b61154e565b6040516106db9190613959565b60405180910390f35b6106fe60048036038101906106f9919061444a565b6115e2565b005b61071a600480360381019061071591906144c2565b611622565b005b610736600480360381019061073191906143b7565b6116c3565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a0906145cb565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600061080c82611760565b9050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661083d816117da565b8251845114801561084f575081518351145b61088e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108859061465d565b60405180910390fd5b60005b8451811015610954576109418582815181106108b0576108af61467d565b5b60200260200101518583815181106108cb576108ca61467d565b5b60200260200101518584815181106108e6576108e561467d565b5b6020026020010151600067ffffffffffffffff8111156109095761090861398a565b5b6040519080825280601f01601f19166020018201604052801561093b5781602001600182028036833780820191505090505b506117ee565b808061094c906146db565b915050610891565b5050505050565b6009805461096890614753565b80601f016020809104026020016040519081016040528092919081815260200182805461099490614753565b80156109e15780601f106109b6576101008083540402835291602001916109e1565b820191906000526020600020905b8154815290600101906020018083116109c457829003601f168201915b505050505081565b6060600660008381526020019081526020016000208054610a0990614753565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3590614753565b8015610a825780601f10610a5757610100808354040283529160200191610a82565b820191906000526020600020905b815481529060010190602001808311610a6557829003601f168201915b50505050509050919050565b7f7804d923f43a17d325d77e781528e0793b2edd9890ab45fc64efd7b4b427744c610ab8816117da565b83600660008781526020019081526020016000209080519060200190610adf929190613704565b5082600760008781526020019081526020016000209080519060200190610b07929190613704565b508160086000878152602001908152602001600020819055505050505050565b600060036000838152602001908152602001600020600101549050919050565b610b4f61199f565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610b955750610b9485610b8f61199f565b61154e565b5b610bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcb906147f7565b60405180910390fd5b610be185858585856119a7565b5050505050565b610bf182610b27565b610bfa816117da565b610c048383611cc9565b505050565b60076020528060005260406000206000915090508054610c2890614753565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5490614753565b8015610ca15780601f10610c7657610100808354040283529160200191610ca1565b820191906000526020600020905b815481529060010190602001808311610c8457829003601f168201915b505050505081565b610cb161199f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1590614889565b60405180910390fd5b610d288282611daa565b5050565b6000801b610d39816117da565b816008600085815260200190815260200160002081905550505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610d80816117da565b610d88611e8c565b50565b60608151835114610dd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc89061491b565b60405180910390fd5b6000835167ffffffffffffffff811115610dee57610ded61398a565b5b604051908082528060200260200182016040528015610e1c5781602001602082028036833780820191505090505b50905060005b8451811015610e9957610e69858281518110610e4157610e4061467d565b5b6020026020010151858381518110610e5c57610e5b61467d565b5b6020026020010151610738565b828281518110610e7c57610e7b61467d565b5b60200260200101818152505080610e92906146db565b9050610e22565b508091505092915050565b600080610eb083611405565b119050919050565b6000600460009054906101000a900460ff16905090565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610ef9816117da565b610f52848484600067ffffffffffffffff811115610f1a57610f1961398a565b5b6040519080825280601f01601f191660200182016040528015610f4c5781602001600182028036833780820191505090505b50611eef565b50505050565b610f6061199f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610fa65750610fa583610fa061199f565b61154e565b5b610fe5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdc906147f7565b60405180910390fd5b610ff083838361211c565b505050565b6006602052806000526040600020600091509050805461101490614753565b80601f016020809104026020016040519081016040528092919081815260200182805461104090614753565b801561108d5780601f106110625761010080835404028352916020019161108d565b820191906000526020600020905b81548152906001019060200180831161107057829003601f168201915b505050505081565b6000801b6110a2816117da565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611123573373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561111d573d6000803e3d6000fd5b50611240565b60008290508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161117e919061494a565b60206040518083038186803b15801561119657600080fd5b505afa1580156111aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ce919061497a565b6040518363ffffffff1660e01b81526004016111eb9291906149a7565b602060405180830381600087803b15801561120557600080fd5b505af1158015611219573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123d91906149e5565b50505b5050565b7f7804d923f43a17d325d77e781528e0793b2edd9890ab45fc64efd7b4b427744c81565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a611292816117da565b61129a6123eb565b50565b60086020528060005260406000206000915090505481565b6000801b6112c2816117da565b816006600085815260200190815260200160002090805190602001906112e9929190613704565b50505050565b60006003600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600a805461136790614753565b80601f016020809104026020016040519081016040528092919081815260200182805461139390614753565b80156113e05780601f106113b5576101008083540402835291602001916113e0565b820191906000526020600020905b8154815290600101906020018083116113c357829003601f168201915b505050505081565b6000801b81565b6114016113fa61199f565b838361244e565b5050565b600060056000838152602001908152602001600020549050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61144f82610b27565b611458816117da565b6114628383611daa565b505050565b6000801b611474816117da565b8160076000858152602001908152602001600020908051906020019061149b929190613704565b50505050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66114cb816117da565b611524848484600067ffffffffffffffff8111156114ec576114eb61398a565b5b6040519080825280601f01601f19166020018201604052801561151e5781602001600182028036833780820191505090505b506117ee565b50505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b6115ef816117da565b8260099080519060200190611605929190613704565b5081600a908051906020019061161c929190613704565b50505050565b61162a61199f565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480611670575061166f8561166a61199f565b61154e565b5b6116af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a6906147f7565b60405180910390fd5b6116bc85858585856125bb565b5050505050565b6116cb61199f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061171157506117108361170b61199f565b61154e565b5b611750576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611747906147f7565b60405180910390fd5b61175b838383612857565b505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806117d357506117d282612a9e565b5b9050919050565b6117eb816117e661199f565b612b80565b50565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561185e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185590614a84565b60405180910390fd5b600061186861199f565b9050600061187585612c05565b9050600061188285612c05565b905061189383600089858589612c7f565b8460008088815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118f29190614aa4565b925050819055508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628989604051611970929190614afa565b60405180910390a461198783600089858589612c9d565b61199683600089898989612d6d565b50505050505050565b600033905090565b81518351146119eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e290614b95565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611a5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5290614c27565b60405180910390fd5b6000611a6561199f565b9050611a75818787878787612c7f565b60005b8451811015611c26576000858281518110611a9657611a9561467d565b5b602002602001015190506000858381518110611ab557611ab461467d565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4d90614cb9565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c0b9190614aa4565b9250508190555050505080611c1f906146db565b9050611a78565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611c9d929190614cd9565b60405180910390a4611cb3818787878787612c9d565b611cc1818787878787612f54565b505050505050565b611cd382826112ef565b611da65760016003600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611d4b61199f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b611db482826112ef565b15611e885760006003600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611e2d61199f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b611e9461313b565b6000600460006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611ed861199f565b604051611ee5919061494a565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5690614a84565b60405180910390fd5b8151835114611fa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9a90614b95565b60405180910390fd5b6000611fad61199f565b9050611fbe81600087878787612c7f565b60005b845181101561207757838181518110611fdd57611fdc61467d565b5b6020026020010151600080878481518110611ffb57611ffa61467d565b5b6020026020010151815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461205d9190614aa4565b92505081905550808061206f906146db565b915050611fc1565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516120ef929190614cd9565b60405180910390a461210681600087878787612c9d565b61211581600087878787612f54565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561218c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218390614d82565b60405180910390fd5b80518251146121d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c790614b95565b60405180910390fd5b60006121da61199f565b90506121fa81856000868660405180602001604052806000815250612c7f565b60005b835181101561234757600084828151811061221b5761221a61467d565b5b60200260200101519050600084838151811061223a5761223961467d565b5b60200260200101519050600080600084815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156122db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d290614e14565b60405180910390fd5b81810360008085815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050808061233f906146db565b9150506121fd565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516123bf929190614cd9565b60405180910390a46123e581856000868660405180602001604052806000815250612c9d565b50505050565b6123f3613184565b6001600460006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861243761199f565b604051612444919061494a565b60405180910390a1565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156124bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b490614ea6565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516125ae9190613959565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561262b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262290614c27565b60405180910390fd5b600061263561199f565b9050600061264285612c05565b9050600061264f85612c05565b905061265f838989858589612c7f565b600080600088815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050858110156126f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ed90614cb9565b60405180910390fd5b85810360008089815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508560008089815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127ab9190614aa4565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628a8a604051612828929190614afa565b60405180910390a461283e848a8a86868a612c9d565b61284c848a8a8a8a8a612d6d565b505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128be90614d82565b60405180910390fd5b60006128d161199f565b905060006128de84612c05565b905060006128eb84612c05565b905061290b83876000858560405180602001604052806000815250612c7f565b600080600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050848110156129a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299990614e14565b60405180910390fd5b84810360008088815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628989604051612a6f929190614afa565b60405180910390a4612a9584886000868660405180602001604052806000815250612c9d565b50505050505050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612b6957507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612b795750612b78826131ce565b5b9050919050565b612b8a82826112ef565b612c0157612b9781613238565b612ba58360001c6020613265565b604051602001612bb6929190614f9a565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf89190613cbf565b60405180910390fd5b5050565b60606000600167ffffffffffffffff811115612c2457612c2361398a565b5b604051908082528060200260200182016040528015612c525781602001602082028036833780820191505090505b5090508281600081518110612c6a57612c6961467d565b5b60200260200101818152505080915050919050565b612c87613184565b612c958686868686866134a1565b505050505050565b612ca5613184565b612cb3868686868686613673565b60005b8351811015612d645760086000858381518110612cd657612cd561467d565b5b6020026020010151815260200190815260200160002054612d10858381518110612d0357612d0261467d565b5b6020026020010151611405565b1115612d51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4890615020565b60405180910390fd5b8080612d5c906146db565b915050612cb6565b50505050505050565b612d8c8473ffffffffffffffffffffffffffffffffffffffff1661367b565b15612f4c578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401612dd2959493929190615095565b602060405180830381600087803b158015612dec57600080fd5b505af1925050508015612e1d57506040513d601f19601f82011682018060405250810190612e1a9190615104565b60015b612ec357612e2961513e565b806308c379a01415612e865750612e3e615160565b80612e495750612e88565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7d9190613cbf565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eba90615268565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f41906152fa565b60405180910390fd5b505b505050505050565b612f738473ffffffffffffffffffffffffffffffffffffffff1661367b565b15613133578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401612fb995949392919061531a565b602060405180830381600087803b158015612fd357600080fd5b505af192505050801561300457506040513d601f19601f820116820180604052508101906130019190615104565b60015b6130aa5761301061513e565b806308c379a0141561306d5750613025615160565b80613030575061306f565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130649190613cbf565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130a190615268565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614613131576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613128906152fa565b60405180910390fd5b505b505050505050565b613143610eb8565b613182576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613179906153ce565b60405180910390fd5b565b61318c610eb8565b156131cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131c39061543a565b60405180910390fd5b565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b606061325e8273ffffffffffffffffffffffffffffffffffffffff16601460ff16613265565b9050919050565b606060006002836002613278919061545a565b6132829190614aa4565b67ffffffffffffffff81111561329b5761329a61398a565b5b6040519080825280601f01601f1916602001820160405280156132cd5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106133055761330461467d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106133695761336861467d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026133a9919061545a565b6133b39190614aa4565b90505b6001811115613453577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106133f5576133f461467d565b5b1a60f81b82828151811061340c5761340b61467d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061344c906154b4565b90506133b6565b5060008414613497576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161348e9061552a565b60405180910390fd5b8091505092915050565b6134af86868686868661369e565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156135615760005b835181101561355f578281815181106135035761350261467d565b5b6020026020010151600560008684815181106135225761352161467d565b5b6020026020010151815260200190815260200160002060008282546135479190614aa4565b9250508190555080613558906146db565b90506134e7565b505b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561366b5760005b83518110156136695760008482815181106135b7576135b661467d565b5b6020026020010151905060008483815181106135d6576135d561467d565b5b602002602001015190506000600560008481526020019081526020016000205490508181101561363b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613632906155bc565b60405180910390fd5b818103600560008581526020019081526020016000208190555050505080613662906146db565b9050613599565b505b505050505050565b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6136ac8686868686866136fc565b6136b4610eb8565b156136f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136eb9061564e565b60405180910390fd5b505050505050565b505050505050565b82805461371090614753565b90600052602060002090601f0160209004810192826137325760008555613779565b82601f1061374b57805160ff1916838001178555613779565b82800160010185558215613779579182015b8281111561377857825182559160200191906001019061375d565b5b509050613786919061378a565b5090565b5b808211156137a357600081600090555060010161378b565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006137e6826137bb565b9050919050565b6137f6816137db565b811461380157600080fd5b50565b600081359050613813816137ed565b92915050565b6000819050919050565b61382c81613819565b811461383757600080fd5b50565b60008135905061384981613823565b92915050565b60008060408385031215613866576138656137b1565b5b600061387485828601613804565b92505060206138858582860161383a565b9150509250929050565b61389881613819565b82525050565b60006020820190506138b3600083018461388f565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6138ee816138b9565b81146138f957600080fd5b50565b60008135905061390b816138e5565b92915050565b600060208284031215613927576139266137b1565b5b6000613935848285016138fc565b91505092915050565b60008115159050919050565b6139538161393e565b82525050565b600060208201905061396e600083018461394a565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6139c282613979565b810181811067ffffffffffffffff821117156139e1576139e061398a565b5b80604052505050565b60006139f46137a7565b9050613a0082826139b9565b919050565b600067ffffffffffffffff821115613a2057613a1f61398a565b5b602082029050602081019050919050565b600080fd5b6000613a49613a4484613a05565b6139ea565b90508083825260208201905060208402830185811115613a6c57613a6b613a31565b5b835b81811015613a955780613a818882613804565b845260208401935050602081019050613a6e565b5050509392505050565b600082601f830112613ab457613ab3613974565b5b8135613ac4848260208601613a36565b91505092915050565b600067ffffffffffffffff821115613ae857613ae761398a565b5b602082029050602081019050919050565b6000613b0c613b0784613acd565b6139ea565b90508083825260208201905060208402830185811115613b2f57613b2e613a31565b5b835b81811015613b585780613b44888261383a565b845260208401935050602081019050613b31565b5050509392505050565b600082601f830112613b7757613b76613974565b5b8135613b87848260208601613af9565b91505092915050565b600080600060608486031215613ba957613ba86137b1565b5b600084013567ffffffffffffffff811115613bc757613bc66137b6565b5b613bd386828701613a9f565b935050602084013567ffffffffffffffff811115613bf457613bf36137b6565b5b613c0086828701613b62565b925050604084013567ffffffffffffffff811115613c2157613c206137b6565b5b613c2d86828701613b62565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b60005b83811015613c71578082015181840152602081019050613c56565b83811115613c80576000848401525b50505050565b6000613c9182613c37565b613c9b8185613c42565b9350613cab818560208601613c53565b613cb481613979565b840191505092915050565b60006020820190508181036000830152613cd98184613c86565b905092915050565b600060208284031215613cf757613cf66137b1565b5b6000613d058482850161383a565b91505092915050565b600080fd5b600067ffffffffffffffff821115613d2e57613d2d61398a565b5b613d3782613979565b9050602081019050919050565b82818337600083830152505050565b6000613d66613d6184613d13565b6139ea565b905082815260208101848484011115613d8257613d81613d0e565b5b613d8d848285613d44565b509392505050565b600082601f830112613daa57613da9613974565b5b8135613dba848260208601613d53565b91505092915050565b60008060008060808587031215613ddd57613ddc6137b1565b5b6000613deb8782880161383a565b945050602085013567ffffffffffffffff811115613e0c57613e0b6137b6565b5b613e1887828801613d95565b935050604085013567ffffffffffffffff811115613e3957613e386137b6565b5b613e4587828801613d95565b9250506060613e568782880161383a565b91505092959194509250565b6000819050919050565b613e7581613e62565b8114613e8057600080fd5b50565b600081359050613e9281613e6c565b92915050565b600060208284031215613eae57613ead6137b1565b5b6000613ebc84828501613e83565b91505092915050565b613ece81613e62565b82525050565b6000602082019050613ee96000830184613ec5565b92915050565b600067ffffffffffffffff821115613f0a57613f0961398a565b5b613f1382613979565b9050602081019050919050565b6000613f33613f2e84613eef565b6139ea565b905082815260208101848484011115613f4f57613f4e613d0e565b5b613f5a848285613d44565b509392505050565b600082601f830112613f7757613f76613974565b5b8135613f87848260208601613f20565b91505092915050565b600080600080600060a08688031215613fac57613fab6137b1565b5b6000613fba88828901613804565b9550506020613fcb88828901613804565b945050604086013567ffffffffffffffff811115613fec57613feb6137b6565b5b613ff888828901613b62565b935050606086013567ffffffffffffffff811115614019576140186137b6565b5b61402588828901613b62565b925050608086013567ffffffffffffffff811115614046576140456137b6565b5b61405288828901613f62565b9150509295509295909350565b60008060408385031215614076576140756137b1565b5b600061408485828601613e83565b925050602061409585828601613804565b9150509250929050565b600080604083850312156140b6576140b56137b1565b5b60006140c48582860161383a565b92505060206140d58582860161383a565b9150509250929050565b600080604083850312156140f6576140f56137b1565b5b600083013567ffffffffffffffff811115614114576141136137b6565b5b61412085828601613a9f565b925050602083013567ffffffffffffffff811115614141576141406137b6565b5b61414d85828601613b62565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61418c81613819565b82525050565b600061419e8383614183565b60208301905092915050565b6000602082019050919050565b60006141c282614157565b6141cc8185614162565b93506141d783614173565b8060005b838110156142085781516141ef8882614192565b97506141fa836141aa565b9250506001810190506141db565b5085935050505092915050565b6000602082019050818103600083015261422f81846141b7565b905092915050565b6000806000606084860312156142505761424f6137b1565b5b600061425e86828701613804565b935050602084013567ffffffffffffffff81111561427f5761427e6137b6565b5b61428b86828701613b62565b925050604084013567ffffffffffffffff8111156142ac576142ab6137b6565b5b6142b886828701613b62565b9150509250925092565b6000602082840312156142d8576142d76137b1565b5b60006142e684828501613804565b91505092915050565b60008060408385031215614306576143056137b1565b5b60006143148582860161383a565b925050602083013567ffffffffffffffff811115614335576143346137b6565b5b61434185828601613d95565b9150509250929050565b6143548161393e565b811461435f57600080fd5b50565b6000813590506143718161434b565b92915050565b6000806040838503121561438e5761438d6137b1565b5b600061439c85828601613804565b92505060206143ad85828601614362565b9150509250929050565b6000806000606084860312156143d0576143cf6137b1565b5b60006143de86828701613804565b93505060206143ef8682870161383a565b92505060406144008682870161383a565b9150509250925092565b60008060408385031215614421576144206137b1565b5b600061442f85828601613804565b925050602061444085828601613804565b9150509250929050565b60008060408385031215614461576144606137b1565b5b600083013567ffffffffffffffff81111561447f5761447e6137b6565b5b61448b85828601613d95565b925050602083013567ffffffffffffffff8111156144ac576144ab6137b6565b5b6144b885828601613d95565b9150509250929050565b600080600080600060a086880312156144de576144dd6137b1565b5b60006144ec88828901613804565b95505060206144fd88828901613804565b945050604061450e8882890161383a565b935050606061451f8882890161383a565b925050608086013567ffffffffffffffff8111156145405761453f6137b6565b5b61454c88828901613f62565b9150509295509295909350565b7f455243313135353a2061646472657373207a65726f206973206e6f742061207660008201527f616c6964206f776e657200000000000000000000000000000000000000000000602082015250565b60006145b5602a83613c42565b91506145c082614559565b604082019050919050565b600060208201905081810360008301526145e4816145a8565b9050919050565b7f50696e6b5472616465204e46543a206163636f756e7473206c656e677468206e60008201527f6f74206d61746368000000000000000000000000000000000000000000000000602082015250565b6000614647602883613c42565b9150614652826145eb565b604082019050919050565b600060208201905081810360008301526146768161463a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006146e682613819565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614719576147186146ac565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061476b57607f821691505b6020821081141561477f5761477e614724565b5b50919050565b7f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60008201527f6572206f7220617070726f766564000000000000000000000000000000000000602082015250565b60006147e1602e83613c42565b91506147ec82614785565b604082019050919050565b60006020820190508181036000830152614810816147d4565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000614873602f83613c42565b915061487e82614817565b604082019050919050565b600060208201905081810360008301526148a281614866565b9050919050565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b6000614905602983613c42565b9150614910826148a9565b604082019050919050565b60006020820190508181036000830152614934816148f8565b9050919050565b614944816137db565b82525050565b600060208201905061495f600083018461493b565b92915050565b60008151905061497481613823565b92915050565b6000602082840312156149905761498f6137b1565b5b600061499e84828501614965565b91505092915050565b60006040820190506149bc600083018561493b565b6149c9602083018461388f565b9392505050565b6000815190506149df8161434b565b92915050565b6000602082840312156149fb576149fa6137b1565b5b6000614a09848285016149d0565b91505092915050565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a6e602183613c42565b9150614a7982614a12565b604082019050919050565b60006020820190508181036000830152614a9d81614a61565b9050919050565b6000614aaf82613819565b9150614aba83613819565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614aef57614aee6146ac565b5b828201905092915050565b6000604082019050614b0f600083018561388f565b614b1c602083018461388f565b9392505050565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b6000614b7f602883613c42565b9150614b8a82614b23565b604082019050919050565b60006020820190508181036000830152614bae81614b72565b9050919050565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614c11602583613c42565b9150614c1c82614bb5565b604082019050919050565b60006020820190508181036000830152614c4081614c04565b9050919050565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b6000614ca3602a83613c42565b9150614cae82614c47565b604082019050919050565b60006020820190508181036000830152614cd281614c96565b9050919050565b60006040820190508181036000830152614cf381856141b7565b90508181036020830152614d0781846141b7565b90509392505050565b7f455243313135353a206275726e2066726f6d20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614d6c602383613c42565b9150614d7782614d10565b604082019050919050565b60006020820190508181036000830152614d9b81614d5f565b9050919050565b7f455243313135353a206275726e20616d6f756e7420657863656564732062616c60008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b6000614dfe602483613c42565b9150614e0982614da2565b604082019050919050565b60006020820190508181036000830152614e2d81614df1565b9050919050565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b6000614e90602983613c42565b9150614e9b82614e34565b604082019050919050565b60006020820190508181036000830152614ebf81614e83565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000614f07601783614ec6565b9150614f1282614ed1565b601782019050919050565b6000614f2882613c37565b614f328185614ec6565b9350614f42818560208601613c53565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000614f84601183614ec6565b9150614f8f82614f4e565b601182019050919050565b6000614fa582614efa565b9150614fb18285614f1d565b9150614fbc82614f77565b9150614fc88284614f1d565b91508190509392505050565b7f50696e6b5472616465204e46543a20657863656564206d617820737570706c79600082015250565b600061500a602083613c42565b915061501582614fd4565b602082019050919050565b6000602082019050818103600083015261503981614ffd565b9050919050565b600081519050919050565b600082825260208201905092915050565b600061506782615040565b615071818561504b565b9350615081818560208601613c53565b61508a81613979565b840191505092915050565b600060a0820190506150aa600083018861493b565b6150b7602083018761493b565b6150c4604083018661388f565b6150d1606083018561388f565b81810360808301526150e3818461505c565b90509695505050505050565b6000815190506150fe816138e5565b92915050565b60006020828403121561511a576151196137b1565b5b6000615128848285016150ef565b91505092915050565b60008160e01c9050919050565b600060033d111561515d5760046000803e61515a600051615131565b90505b90565b600060443d1015615170576151f3565b6151786137a7565b60043d036004823e80513d602482011167ffffffffffffffff821117156151a05750506151f3565b808201805167ffffffffffffffff8111156151be57505050506151f3565b80602083010160043d0385018111156151db5750505050506151f3565b6151ea826020018501866139b9565b82955050505050505b90565b7f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b6000615252603483613c42565b915061525d826151f6565b604082019050919050565b6000602082019050818103600083015261528181615245565b9050919050565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b60006152e4602883613c42565b91506152ef82615288565b604082019050919050565b60006020820190508181036000830152615313816152d7565b9050919050565b600060a08201905061532f600083018861493b565b61533c602083018761493b565b818103604083015261534e81866141b7565b9050818103606083015261536281856141b7565b90508181036080830152615376818461505c565b90509695505050505050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b60006153b8601483613c42565b91506153c382615382565b602082019050919050565b600060208201905081810360008301526153e7816153ab565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000615424601083613c42565b915061542f826153ee565b602082019050919050565b6000602082019050818103600083015261545381615417565b9050919050565b600061546582613819565b915061547083613819565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156154a9576154a86146ac565b5b828202905092915050565b60006154bf82613819565b915060008214156154d3576154d26146ac565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000615514602083613c42565b915061551f826154de565b602082019050919050565b6000602082019050818103600083015261554381615507565b9050919050565b7f455243313135353a206275726e20616d6f756e74206578636565647320746f7460008201527f616c537570706c79000000000000000000000000000000000000000000000000602082015250565b60006155a6602883613c42565b91506155b18261554a565b604082019050919050565b600060208201905081810360008301526155d581615599565b9050919050565b7f455243313135355061757361626c653a20746f6b656e207472616e736665722060008201527f7768696c65207061757365640000000000000000000000000000000000000000602082015250565b6000615638602c83613c42565b9150615643826155dc565b604082019050919050565b600060208201905081810360008301526156678161562b565b905091905056fea26469706673582212202fd5189226706dff6e63a19b0acd34b96da0051d3918a2872175a4295c6c544064736f6c6343000809003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000e50696e6b205472616465204e4654000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000650542d4e46540000000000000000000000000000000000000000000000000000