[ { "inputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "string", "name": "uri", "type": "string" }, { "internalType": "address", "name": "defaultAdmin", "type": "address" }, { "internalType": "address", "name": "pauser", "type": "address" }, { "internalType": "address", "name": "minter", "type": "address" }, { "internalType": "uint256", "name": "_productId", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "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": "string", "name": "baseURI", "type": "string" } ], "name": "BaseURI", "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": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "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": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "isSubscriptionActive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": [], "name": "productId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "duration", "type": "uint256" } ], "name": "renewSubscription", "outputs": [], "stateMutability": "nonpayable", "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": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "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": "string", "name": "uri", "type": "string" } ], "name": "setURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "startTime", "type": "uint256" }, { "internalType": "uint256", "name": "duration", "type": "uint256" } ], "name": "subscribe", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "subscriptions", "outputs": [ { "internalType": "uint256", "name": "startTime", "type": "uint256" }, { "internalType": "uint256", "name": "endTime", "type": "uint256" } ], "stateMutability": "view", "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": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60a06040523480156200001157600080fd5b50604051620039843803806200398483398101604081905262000034916200026b565b86866000620000448382620003cd565b506001620000538282620003cd565b5050600a805460ff1916905550600d6200006e8682620003cd565b506200007c600085620000e4565b620000a87f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a84620000e4565b620000d47f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a683620000e4565b6080525062000499945050505050565b6000828152600b602090815260408083206001600160a01b038516845290915290205460ff1662000185576000828152600b602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620001443390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001b157600080fd5b81516001600160401b0380821115620001ce57620001ce62000189565b604051601f8301601f19908116603f01168101908282118183101715620001f957620001f962000189565b816040528381526020925086838588010111156200021657600080fd5b600091505b838210156200023a57858201830151818301840152908201906200021b565b600093810190920192909252949350505050565b80516001600160a01b03811681146200026657600080fd5b919050565b600080600080600080600060e0888a0312156200028757600080fd5b87516001600160401b03808211156200029f57600080fd5b620002ad8b838c016200019f565b985060208a0151915080821115620002c457600080fd5b620002d28b838c016200019f565b975060408a0151915080821115620002e957600080fd5b50620002f88a828b016200019f565b95505062000309606089016200024e565b935062000319608089016200024e565b92506200032960a089016200024e565b915060c0880151905092959891949750929550565b600181811c908216806200035357607f821691505b6020821081036200037457634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003c857600081815260208120601f850160051c81016020861015620003a35750805b601f850160051c820191505b81811015620003c457828155600101620003af565b5050505b505050565b81516001600160401b03811115620003e957620003e962000189565b6200040181620003fa84546200033e565b846200037a565b602080601f831160018114620004395760008415620004205750858301515b600019600386901b1c1916600185901b178555620003c4565b600085815260208120601f198616915b828110156200046a5788860151825594840194600190910190840162000449565b5085821015620004895787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6080516134cf620004b5600039600061051e01526134cf6000f3fe608060405234801561001057600080fd5b506004361061025c5760003560e01c80635c975abb11610145578063a217fddf116100bd578063c87b56dd1161008c578063d547741f11610071578063d547741f1461057a578063e63ab1e91461058d578063e985e9c5146105b457600080fd5b8063c87b56dd14610540578063d53913931461055357600080fd5b8063a217fddf146104eb578063a22cb465146104f3578063b88d4fde14610506578063c5ce39111461051957600080fd5b806370a08231116101145780638456cb59116100f95780638456cb591461049557806391d148541461049d57806395d89b41146104e357600080fd5b806370a082311461045b5780637f3457101461046e57600080fd5b80635c975abb146104225780635ec403341461042d5780636352211e146104405780636c0360eb1461045357600080fd5b80632d5bbf60116101d85780633f4ba83a116101a757806342966c681161018c57806342966c68146103e95780634f6ccce7146103fc57806357e2c0f51461040f57600080fd5b80633f4ba83a146103ce57806342842e0e146103d657600080fd5b80632d5bbf60146103595780632f2ff15d146103955780632f745c59146103a857806336568abe146103bb57600080fd5b8063095ea7b31161022f57806322d4a1751161021457806322d4a1751461031057806323b872dd14610323578063248a9ca31461033657600080fd5b8063095ea7b3146102eb57806318160ddd146102fe57600080fd5b806301ffc9a71461026157806302fe53051461028957806306fdde031461029e578063081812fc146102b3575b600080fd5b61027461026f366004612c05565b6105fd565b60405190151581526020015b60405180910390f35b61029c610297366004612c22565b61060e565b005b6102a6610664565b6040516102809190612d02565b6102c66102c1366004612d15565b6106f6565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610280565b61029c6102f9366004612d57565b61072a565b6008545b604051908152602001610280565b61029c61031e366004612d81565b6108bb565b61029c610331366004612db4565b610946565b610302610344366004612d15565b6000908152600b602052604090206001015490565b610380610367366004612d15565b600e602052600090815260409020805460019091015482565b60408051928352602083019190915201610280565b61029c6103a3366004612df0565b6109e8565b6103026103b6366004612d57565b610a0d565b61029c6103c9366004612df0565b610adc565b61029c610b8f565b61029c6103e4366004612db4565b610bc4565b61029c6103f7366004612d15565b610bdf565b61030261040a366004612d15565b610c7d565b61027461041d366004612d15565b610d3b565b600a5460ff16610274565b61029c61043b366004612e1c565b610d81565b6102c661044e366004612d15565b610dff565b6102a6610e8b565b610302610469366004612e3e565b610f19565b6103027f7804d923f43a17d325d77e781528e0793b2edd9890ab45fc64efd7b4b427744c81565b61029c610fe7565b6102746104ab366004612df0565b6000918252600b6020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6102a6611019565b610302600081565b61029c610501366004612e59565b611028565b61029c610514366004612ec4565b611033565b6103027f000000000000000000000000000000000000000000000000000000000000000081565b6102a661054e366004612d15565b6110db565b6103027f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61029c610588366004612df0565b611141565b6103027f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6102746105c2366004612fbe565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b600061060882611166565b92915050565b6000610619816111bc565b600d610626838583613089565b507f01e56a02aca7f26a28165a040851ba78f30282b55ca81c63a804cdc1e2dcea72600d60405161065791906131a3565b60405180910390a1505050565b60606000805461067390612fe8565b80601f016020809104026020016040519081016040528092919081815260200182805461069f90612fe8565b80156106ec5780601f106106c1576101008083540402835291602001916106ec565b820191906000526020600020905b8154815290600101906020018083116106cf57829003601f168201915b5050505050905090565b6000610701826111c6565b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600061073582610dff565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff82161480610820575061082081336105c2565b6108ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016107ee565b6108b68383611251565b505050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66108e5816111bc565b600c8054600091826108f68361327b565b91905055905061090685826112f1565b600061091284866132b3565b60408051808201825296875260208088019283526000948552600e9052909220945185555051600190930192909255505050565b610951335b8261130b565b6109dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f7665640000000000000000000000000000000000000060648201526084016107ee565b6108b68383836113cb565b6000828152600b6020526040902060010154610a03816111bc565b6108b683836116d3565b6000610a1883610f19565b8210610aa6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201527f74206f6620626f756e647300000000000000000000000000000000000000000060648201526084016107ee565b5073ffffffffffffffffffffffffffffffffffffffff919091166000908152600660209081526040808320938352929052205490565b73ffffffffffffffffffffffffffffffffffffffff81163314610b81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016107ee565b610b8b82826117c7565b5050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610bb9816111bc565b610bc1611882565b50565b6108b683838360405180602001604052806000815250611033565b610be83361094b565b610c74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f7665640000000000000000000000000000000000000060648201526084016107ee565b610bc1816118ff565b6000610c8860085490565b8210610d16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201527f7574206f6620626f756e6473000000000000000000000000000000000000000060648201526084016107ee565b60088281548110610d2957610d296132c6565b90600052602060002001549050919050565b6000818152600e602090815260408083208151808301909252805480835260019091015492820192909252904210801590610d7a575080602001514211155b9392505050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610dab816111bc565b6000838152600e6020526040902060018101544290811115610dde57808255610dd484826132b3565b6001830155610df8565b83826001016000828254610df291906132b3565b90915550505b5050505050565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610608576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016107ee565b600d8054610e9890612fe8565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec490612fe8565b8015610f115780601f10610ee657610100808354040283529160200191610f11565b820191906000526020600020905b815481529060010190602001808311610ef457829003601f168201915b505050505081565b600073ffffffffffffffffffffffffffffffffffffffff8216610fbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016107ee565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a611011816111bc565b610bc161191f565b60606001805461067390612fe8565b610b8b33838361197a565b61103d338361130b565b6110c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f7665640000000000000000000000000000000000000060648201526084016107ee565b6110d584848484611aa7565b50505050565b60606110e6826111c6565b60006110f0611b4a565b905060008151116111105760405180602001604052806000815250610d7a565b8061111a84611b59565b60405160200161112b9291906132f5565b6040516020818303038152906040529392505050565b6000828152600b602052604090206001015461115c816111bc565b6108b683836117c7565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b000000000000000000000000000000000000000000000000000000001480610608575061060882611c17565b610bc18133611c6d565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16610bc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016107ee565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915581906112ab82610dff565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b610b8b828260405180602001604052806000815250611d27565b60008061131783610dff565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611385575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b806113c357508373ffffffffffffffffffffffffffffffffffffffff166113ab846106f6565b73ffffffffffffffffffffffffffffffffffffffff16145b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff166113eb82610dff565b73ffffffffffffffffffffffffffffffffffffffff161461148e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016107ee565b73ffffffffffffffffffffffffffffffffffffffff8216611530576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016107ee565b61153d8383836001611dca565b8273ffffffffffffffffffffffffffffffffffffffff1661155d82610dff565b73ffffffffffffffffffffffffffffffffffffffff1614611600576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016107ee565b600081815260046020908152604080832080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811690915573ffffffffffffffffffffffffffffffffffffffff8781168086526003855283862080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000828152600b6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610b8b576000828152600b6020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556117693390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000828152600b6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1615610b8b576000828152600b6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b61188a611dd6565b600a80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b61190881611e44565b6000908152600e6020526040812081815560010155565b611927611f2a565b600a80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586118d53390565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016107ee565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611ab28484846113cb565b611abe84848484611f97565b6110d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016107ee565b6060600d805461067390612fe8565b60606000611b668361218a565b600101905060008167ffffffffffffffff811115611b8657611b86612e95565b6040519080825280601f01601f191660200182016040528015611bb0576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084611bba57509392505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d6300000000000000000000000000000000000000000000000000000000148061060857506106088261226c565b6000828152600b6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610b8b57611cad8161234f565b611cb883602061236e565b604051602001611cc9929190613324565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526107ee91600401612d02565b611d3183836125b1565b611d3e6000848484611f97565b6108b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016107ee565b6110d5848484846127e4565b600a5460ff16611e42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064016107ee565b565b6000611e4f82610dff565b9050611e5f816000846001611dca565b611e6882610dff565b600083815260046020908152604080832080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811690915573ffffffffffffffffffffffffffffffffffffffff85168085526003845282852080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b600a5460ff1615611e42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016107ee565b600073ffffffffffffffffffffffffffffffffffffffff84163b1561217f576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a029061200e9033908990889088906004016133a5565b6020604051808303816000875af1925050508015612067575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612064918101906133ee565b60015b612134573d808015612095576040519150601f19603f3d011682016040523d82523d6000602084013e61209a565b606091505b50805160000361212c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016107ee565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490506113c3565b506001949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106121d3577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106121ff576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061221d57662386f26fc10000830492506010015b6305f5e1008310612235576305f5e100830492506008015b612710831061224957612710830492506004015b6064831061225b576064830492506002015b600a83106106085760010192915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806122ff57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061060857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610608565b606061060873ffffffffffffffffffffffffffffffffffffffff831660145b6060600061237d83600261340b565b6123889060026132b3565b67ffffffffffffffff8111156123a0576123a0612e95565b6040519080825280601f01601f1916602001820160405280156123ca576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110612401576124016132c6565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110612464576124646132c6565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006124a084600261340b565b6124ab9060016132b3565b90505b6001811115612548577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106124ec576124ec6132c6565b1a60f81b828281518110612502576125026132c6565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c9361254181613422565b90506124ae565b508315610d7a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107ee565b73ffffffffffffffffffffffffffffffffffffffff821661262e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016107ee565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16156126ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016107ee565b6126c8600083836001611dca565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1615612754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016107ee565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260036020908152604080832080546001019055848352600290915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6127f084848484612883565b600a5460ff16156110d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4552433732315061757361626c653a20746f6b656e207472616e73666572207760448201527f68696c652070617573656400000000000000000000000000000000000000000060648201526084016107ee565b6001811115612914576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e736563757469766520747260448201527f616e7366657273206e6f7420737570706f72746564000000000000000000000060648201526084016107ee565b8173ffffffffffffffffffffffffffffffffffffffff851661297d5761297881600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b6129ba565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146129ba576129ba8582612a20565b73ffffffffffffffffffffffffffffffffffffffff84166129e3576129de81612ad7565b610df8565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614610df857610df88482612b86565b60006001612a2d84610f19565b612a379190613457565b600083815260076020526040902054909150808214612a975773ffffffffffffffffffffffffffffffffffffffff841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b50600091825260076020908152604080842084905573ffffffffffffffffffffffffffffffffffffffff9094168352600681528383209183525290812055565b600854600090612ae990600190613457565b60008381526009602052604081205460088054939450909284908110612b1157612b116132c6565b906000526020600020015490508060088381548110612b3257612b326132c6565b6000918252602080832090910192909255828152600990915260408082208490558582528120556008805480612b6a57612b6a61346a565b6001900381819060005260206000200160009055905550505050565b6000612b9183610f19565b73ffffffffffffffffffffffffffffffffffffffff9093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610bc157600080fd5b600060208284031215612c1757600080fd5b8135610d7a81612bd7565b60008060208385031215612c3557600080fd5b823567ffffffffffffffff80821115612c4d57600080fd5b818501915085601f830112612c6157600080fd5b813581811115612c7057600080fd5b866020828501011115612c8257600080fd5b60209290920196919550909350505050565b60005b83811015612caf578181015183820152602001612c97565b50506000910152565b60008151808452612cd0816020860160208601612c94565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610d7a6020830184612cb8565b600060208284031215612d2757600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114612d5257600080fd5b919050565b60008060408385031215612d6a57600080fd5b612d7383612d2e565b946020939093013593505050565b600080600060608486031215612d9657600080fd5b612d9f84612d2e565b95602085013595506040909401359392505050565b600080600060608486031215612dc957600080fd5b612dd284612d2e565b9250612de060208501612d2e565b9150604084013590509250925092565b60008060408385031215612e0357600080fd5b82359150612e1360208401612d2e565b90509250929050565b60008060408385031215612e2f57600080fd5b50508035926020909101359150565b600060208284031215612e5057600080fd5b610d7a82612d2e565b60008060408385031215612e6c57600080fd5b612e7583612d2e565b915060208301358015158114612e8a57600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060008060808587031215612eda57600080fd5b612ee385612d2e565b9350612ef160208601612d2e565b925060408501359150606085013567ffffffffffffffff80821115612f1557600080fd5b818701915087601f830112612f2957600080fd5b813581811115612f3b57612f3b612e95565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715612f8157612f81612e95565b816040528281528a6020848701011115612f9a57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215612fd157600080fd5b612fda83612d2e565b9150612e1360208401612d2e565b600181811c90821680612ffc57607f821691505b602082108103613035577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f8211156108b657600081815260208120601f850160051c810160208610156130625750805b601f850160051c820191505b818110156130815782815560010161306e565b505050505050565b67ffffffffffffffff8311156130a1576130a1612e95565b6130b5836130af8354612fe8565b8361303b565b6000601f84116001811461310757600085156130d15750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355610df8565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b828110156131565786850135825560209485019460019092019101613136565b5086821015613191577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b60006020808352600084546131b781612fe8565b808487015260406001808416600081146131d857600181146132105761323e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008516838a01528284151560051b8a0101955061323e565b896000528660002060005b858110156132365781548b820186015290830190880161321b565b8a0184019650505b509398975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036132ac576132ac61324c565b5060010190565b808201808211156106085761060861324c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008351613307818460208801612c94565b83519083019061331b818360208801612c94565b01949350505050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161335c816017850160208801612c94565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351613399816028840160208801612c94565b01602801949350505050565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526133e46080830184612cb8565b9695505050505050565b60006020828403121561340057600080fd5b8151610d7a81612bd7565b80820281158282048414176106085761060861324c565b6000816134315761343161324c565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b818103818111156106085761060861324c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122016f8ca67f0d2e6b4e52dd52c3db320328f36d759c1de675b3576c6d09839963364736f6c6343000813003300000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000b15e094957c31d6b0d08714015ff85bec7842635000000000000000000000000b15e094957c31d6b0d08714015ff85bec78426350000000000000000000000003b97df29d6b9518f96b8bc19f4cfeaf7ee88f4120000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000