@q-dev/gdk-sdk
Version:
Typescript Library to interact with GDK Contracts
628 lines • 54.9 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "TokenFactory",
"sourceName": "contracts/factory/TokenFactory.sol",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "proxyAdmin",
"type": "address"
},
{
"components": [
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "symbol",
"type": "string"
},
{
"internalType": "string",
"name": "contractURI",
"type": "string"
},
{
"internalType": "uint8",
"name": "decimals",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "totalSupplyCap",
"type": "uint256"
}
],
"indexed": false,
"internalType": "struct IQRC20.ConstructorParams",
"name": "params",
"type": "tuple"
}
],
"name": "DeployedQRC20",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "proxyAdmin",
"type": "address"
},
{
"components": [
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "symbol",
"type": "string"
},
{
"internalType": "string",
"name": "contractURI",
"type": "string"
},
{
"internalType": "string",
"name": "baseURI",
"type": "string"
},
{
"internalType": "uint256",
"name": "totalSupplyCap",
"type": "uint256"
},
{
"internalType": "bool",
"name": "isBaseURIToken",
"type": "bool"
}
],
"indexed": false,
"internalType": "struct IQRC721.ConstructorParams",
"name": "params",
"type": "tuple"
}
],
"name": "DeployedQRC721",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "proxyAdmin",
"type": "address"
},
{
"components": [
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "symbol",
"type": "string"
},
{
"internalType": "string",
"name": "contractURI",
"type": "string"
},
{
"internalType": "string",
"name": "baseURI",
"type": "string"
},
{
"internalType": "uint256",
"name": "totalSupplyCap",
"type": "uint256"
},
{
"internalType": "bool",
"name": "isBaseURIToken",
"type": "bool"
}
],
"indexed": false,
"internalType": "struct IQSBT.ConstructorParams",
"name": "params",
"type": "tuple"
}
],
"name": "DeployedQSBT",
"type": "event"
},
{
"inputs": [],
"name": "BASE_RELAY_RECIPIENT_STORAGE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "QRC20_NAME",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "QRC721_NAME",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "QSBT_NAME",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "symbol",
"type": "string"
},
{
"internalType": "string",
"name": "contractURI",
"type": "string"
},
{
"internalType": "uint8",
"name": "decimals",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "totalSupplyCap",
"type": "uint256"
}
],
"internalType": "struct IQRC20.ConstructorParams",
"name": "params_",
"type": "tuple"
},
{
"internalType": "address",
"name": "tokenOwner_",
"type": "address"
},
{
"internalType": "bytes32",
"name": "salt_",
"type": "bytes32"
}
],
"name": "deployQRC20",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "symbol",
"type": "string"
},
{
"internalType": "string",
"name": "contractURI",
"type": "string"
},
{
"internalType": "string",
"name": "baseURI",
"type": "string"
},
{
"internalType": "uint256",
"name": "totalSupplyCap",
"type": "uint256"
},
{
"internalType": "bool",
"name": "isBaseURIToken",
"type": "bool"
}
],
"internalType": "struct IQRC721.ConstructorParams",
"name": "params_",
"type": "tuple"
},
{
"internalType": "address",
"name": "tokenOwner_",
"type": "address"
},
{
"internalType": "bytes32",
"name": "salt_",
"type": "bytes32"
}
],
"name": "deployQRC721",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "symbol",
"type": "string"
},
{
"internalType": "string",
"name": "contractURI",
"type": "string"
},
{
"internalType": "string",
"name": "baseURI",
"type": "string"
},
{
"internalType": "uint256",
"name": "totalSupplyCap",
"type": "uint256"
},
{
"internalType": "bool",
"name": "isBaseURIToken",
"type": "bool"
}
],
"internalType": "struct IQSBT.ConstructorParams",
"name": "params_",
"type": "tuple"
},
{
"internalType": "address",
"name": "tokenOwner_",
"type": "address"
},
{
"internalType": "bytes32",
"name": "salt_",
"type": "bytes32"
}
],
"name": "deployQSBT",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getInjector",
"outputs": [
{
"internalType": "address",
"name": "injector_",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "salt_",
"type": "bytes32"
}
],
"name": "getQRC20Address",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "salt_",
"type": "bytes32"
}
],
"name": "getQRC721Address",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "salt_",
"type": "bytes32"
}
],
"name": "getQSBTAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "tokenType_",
"type": "string"
}
],
"name": "getTokenImplementation",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getTrustedForwarder",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "forwarder_",
"type": "address"
}
],
"name": "isTrustedForwarder",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "masterAccess",
"outputs": [
{
"internalType": "contract MasterAccessManagement",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "registryAddress_",
"type": "address"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "setDependencies",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "injector_",
"type": "address"
}
],
"name": "setInjector",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string[]",
"name": "names_",
"type": "string[]"
},
{
"internalType": "address[]",
"name": "newImplementations_",
"type": "address[]"
}
],
"name": "setNewImplementations",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "forwarder_",
"type": "address"
}
],
"name": "setTrustedForwarder",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "versionRecipient",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function"
}
],
"bytecode": "0x608080604052346100165761278b908161001c8239f35b600080fdfe604060808152600490813610156200001657600080fd5b6000803560e01c806305c054081462000af857806307b8aab6146200097c5780633e3b5b19146200094357806342540cec1462000920578063486ff0cd14620008d557806349f3153414620007565780634cbd1467146200072c57806354121d7d146200070957806355ac378a146200068e578063572b6c0514620006485780635dd38ebf14620006115780636913045114620004c857806378a1d48014620004965780637e6d0f3a146200046a5780638cb941cc146200042e578063a51adf5e14620003fc578063ce1b815f14620003bf578063da742228146200035d578063e2288f2f146200015c5763e7815253146200011157600080fd5b34620001595760203660031901126200015957506200014860209235620001388162001371565b6200014262000e09565b620013d0565b90516001600160a01b039091168152f35b80fd5b50919034620003595760031960603682011262000308578235906001600160401b038211620003465760a090828501923603011262000308576001600160a01b03936024358581169081900362000354576044359580620001bd88620011ff565b1696873b156200030857855163f2fde38b60e01b808252818901859052939291908581602481838e5af180156200034a579086916200032e575b50506200020f90896200020962000d9a565b6200126c565b1695863b15620003085785516317780f7360e31b8152848180620002368986830162000fac565b0381838c5af1801562000324579085916200030c575b5050863b1562000308578551928352820152818160248183895af18015620002fe5791859493918793620002db575b5050927f5bd07307b20af29e49d8a9a6b933bb3815cc829bcb87549dc35daf6f3adc069e620002b4620002d79585519182918262000fac565b0390a3516001600160a01b03928316815292909116602083015281906040820190565b0390f35b819350620002ed919294955062000d16565b62000159578392918186926200027b565b84513d84823e3d90fd5b8380fd5b620003179062000d16565b620003085783386200024c565b87513d87823e3d90fd5b620003399062000d16565b62000346578438620001f7565b8480fd5b88513d88823e3d90fd5b600080fd5b8280fd5b50346200015957602036600319011262000159576200037b62000cb2565b6200038f6200038962000e4f565b62001042565b6000805160206200275f83398151915280546001600160a01b0319166001600160a01b0390921691909117905580f35b509034620003f85781600319360112620003f8576000805160206200275f8339815191525490516001600160a01b039091168152602090f35b5080fd5b5034620001595760203660031901126200015957506200014860209235620004248162001371565b6200014262000d9a565b50346200015957602036600319011262000159576200044c62000cb2565b62000456620012f3565b6000805160206200273f8339815191525580f35b509034620003f85781600319360112620003f857602090516000805160206200275f8339815191528152f35b5034620001595760203660031901126200015957506200014860209235620004be8162001371565b6200014262000e2d565b509190346200035957806003193601126200035957620004e762000cb2565b916001600160401b036024358181116200060d57366023820112156200060d5780830135918211620005f857859060209285516200052f85601f19601f850116018262000d78565b818152366024838501011162000308578160248694018483013701015262000556620012f3565b82516309a06df560e41b81526001600160a01b039490928291849190829088165afa928315620005ef57508492620005b1575b505082546001600160a01b0319169116178155336000805160206200273f8339815191525580f35b90809250813d8311620005e7575b620005cb818362000d78565b8101031262000359575181811681036200035957388062000589565b503d620005bf565b513d86823e3d90fd5b604183634e487b7160e01b6000525260246000fd5b8580fd5b509034620003f85781600319360112620003f857620002d7906200063462000e2d565b905191829160208352602083019062000de2565b509034620003f8576020366003190112620003f8576020906200066a62000cb2565b60018060a01b03806000805160206200275f83398151915254169116149051908152f35b5091346200035957602036600319011262000359578035906001600160401b03908183116200034657366023840112156200034657820135908111620003085736602482840101116200030857602093508060248451930183376001908201908152819003830190205490516001600160a01b039091168152f35b509034620003f85781600319360112620003f857620002d7906200063462000e09565b509034620003f85781600319360112620003f857905490516001600160a01b039091168152602090f35b5091903462000359576200076a3662000cc9565b94906001600160a01b03806200078088620011ff565b1696873b156200030857855163f2fde38b60e01b8082529383168189018190529291908581602481838e5af180156200034a57908691620008bd575b5050620007ce90896200020962000e09565b1695863b156200030857855163139e233960e31b8152602082820152848180620007fc602482018a62000f04565b0381838c5af180156200032457908591620008a5575b5050863b1562000308578551928352820152818160248183895af18015620002fe579185949391879362000882575b5050927f04166b40136a0ebf5dd06d1233a1f808e2c9fc16cb2a7c8455d3705456907d46620002b4620002d795855191829160208352602083019062000f04565b81935062000894919294955062000d16565b620001595783929181869262000841565b620008b09062000d16565b6200030857833862000812565b620008c89062000d16565b62000346578438620007bc565b509034620003f85781600319360112620003f8578051620002d791620008fb8262000d40565b60058252640322e302e360dc1b60208301525191829160208352602083019062000de2565b509034620003f85781600319360112620003f857620002d7906200063462000d9a565b509034620003f85781600319360112620003f8576000805160206200273f8339815191525490516001600160a01b039091168152602090f35b509190346200035957620009903662000cc9565b94906001600160a01b0380620009a688620011ff565b1696873b156200030857855163f2fde38b60e01b8082529383168189018190529291908581602481838e5af180156200034a5762000adf575b50620009f090896200020962000e2d565b1695863b1562000308578551632a31626760e01b815260208282015284818062000a1e602482018a62000f04565b0381838c5af18015620003245790859162000ac7575b5050863b1562000308578551928352820152818160248183895af18015620002fe579185949391879362000aa4575b5050927f3b6dc6fe6effd8dca6ea44f32fe21945c56fa065de3a0e21f033e739cce16a7f620002b4620002d795855191829160208352602083019062000f04565b81935062000ab6919294955062000d16565b620001595783929181869262000a63565b62000ad29062000d16565b6200030857833862000a34565b9462000af0620009f0929662000d16565b9490620009df565b50913462000359578160031936011262000359576001600160401b03908035828111620003465762000b2e903690830162000c7f565b9290916024803583811162000c7b5762000b4c903690840162000c7f565b92909162000b5d6200038962000e4f565b885b87811062000b6b578980f35b62000b8262000b7c82878762000e73565b62000e9a565b3b1562000c135762000b9a62000b7c82878762000e73565b908060051b880135601e198936030181121562000c0f57880191823588811162000c0b57602080940193813603851362000c0757600194828e51938492833781018681520301902090838060a01b03166bffffffffffffffffffffffff60a01b8254161790550162000b5f565b8d80fd5b8c80fd5b8b80fd5b885162461bcd60e51b8152602081850152603b818401527f5b5147444b2d3031303030315d2d54686520696d706c656d656e746174696f6e60448201527f2061646472657373206973206e6f74206120636f6e74726163742e00000000006064820152608490fd5b8780fd5b9181601f8401121562000354578235916001600160401b03831162000354576020808501948460051b0101116200035457565b600435906001600160a01b03821682036200035457565b600319906060818301126200035457600435916001600160401b03831162000354578260c0920301126200035457600401906024356001600160a01b038116810362000354579060443590565b6001600160401b03811162000d2a57604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111762000d2a57604052565b602081019081106001600160401b0382111762000d2a57604052565b90601f801991011681019081106001600160401b0382111762000d2a57604052565b6040519062000da98262000d40565b6005825264051524332360dc1b6020830152565b60005b83811062000dd15750506000910152565b818101518382015260200162000dc0565b9060209162000dfd8151809281855285808601910162000dbd565b601f01601f1916010190565b6040519062000e188262000d40565b600682526551524337323160d01b6020830152565b6040519062000e3c8262000d40565b60048252631454d09560e21b6020830152565b6040519062000e5e8262000d40565b600682526543524541544560d01b6020830152565b919081101562000e845760051b0190565b634e487b7160e01b600052603260045260246000fd5b356001600160a01b0381168103620003545790565b9035601e1982360301811215620003545701602081359101916001600160401b038211620003545781360383136200035457565b908060209392818452848401376000828201840152601f01601f1916010190565b9060a062000f8c62000f6e62000f5062000f3262000f23878062000eaf565b60c0885260c088019162000ee3565b62000f41602088018862000eaf565b90878303602089015262000ee3565b62000f5f604087018762000eaf565b90868303604088015262000ee3565b62000f7d606086018662000eaf565b90858303606087015262000ee3565b9260808101356080840152013590811515809203620003545760a0015290565b602081526200101e62000fd662000fc4848062000eaf565b60a0602086015260c085019162000ee3565b62000ffe62000fe9602086018662000eaf565b601f1986850381016040880152939162000ee3565b906200100e604086018662000eaf565b9185840301606086015262000ee3565b91606081013560ff8116809103620003545760a09160809182850152013591015290565b60008054620010ee92620010db92916001600160a01b03908116601436101580620011e3575b15620011db5736601319013560601c915b60405192620010888462000d40565b60168452602097889575544f4b454e5f464143544f52595f5245534f5552434560501b8787015260405198899687958695633ca8e36d60e11b875216600486015260606024860152606485019062000de2565b8381036003190160448501529062000de2565b03915afa918215620011ce5781926200118d575b5050156200110d5750565b60a4906040519062461bcd60e51b82526004820152604d60248201527f5b5147444b2d3031303030305d2d5468652073656e646572206973206e6f742060448201527f616c6c6f77656420746f20706572666f726d2074686520616374696f6e2c206160648201526c31b1b2b9b9903232b734b2b21760991b6084820152fd5b9091508281813d8311620011c6575b620011a8818362000d78565b81010312620003f85751908115158203620001595750388062001102565b503d6200119c565b50604051903d90823e3d90fd5b339162001079565b50816000805160206200275f8339815191525416331462001068565b6040516106418082018281106001600160401b0382111762000d2a578291620014c5833903906000f58015620012325790565b6040513d6000823e3d90fd5b6001600160a01b03918216815291166020820152606060408201819052620012699291019062000de2565b90565b9190602062001285604051948581519384920162000dbd565b83016001815283602060018060a01b0395869303019020541660405191620012ad8362000d5c565b6000835260405192610c3991828501938585106001600160401b0386111762000d2a578594620012e39462001b0687396200123e565b03906000f5801562001232571690565b6000805160206200273f833981519152546001600160a01b0316801590811562001366575b50156200132157565b60405162461bcd60e51b815260206004820152601a60248201527f446570656e64616e743a206e6f7420616e20696e6a6563746f720000000000006044820152606490fd5b905033143862001318565b62001269906106416040516200138b602083018262000d78565b8181526020810191620014c58339620013c660206040518093620013b88383019687925192839162000dbd565b810103808452018262000d78565b51902090620014a4565b62001497620013c6620012699493610c399360209160405191620013f78488018462000d78565b8683528383019662001b068839836200141a604051928381519384920162000dbd565b81019060018252848160018060a01b0393030190205416906200146d60405191620014458362000d5c565b600083526200145e60405193849288840196876200123e565b03601f19810183528262000d78565b60405195869362001487868601998a925192839162000dbd565b8401915180938684019062000dbd565b0103808452018262000d78565b605591600b9160405191604083015260208201523081520160ff8153209056fe6080806040523461005b5760008054336001600160a01b0319821681178355916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a36105e090816100618239f35b600080fdfe6080604081815260048036101561001557600080fd5b600092833560e01c90848263204e1c7a146104545750508063715018a6146103fa5780637eff275e146103805780638da5cb5b146103585780639623609d146102415783816399a88ec4146101b557508063f2fde38b146100e95763f3b7dead1461007f57600080fd5b346100e55760203660031901126100e5576001600160a01b039083908190836100a6610493565b86516303e1469160e61b815291165afa926100bf61052c565b93156100e257506100da83602080809651830101910161055c565b169051908152f35b80fd5b8280fd5b50346100e55760203660031901126100e557610103610493565b9061010c61057b565b6001600160a01b03918216928315610163575050600054826bffffffffffffffffffffffff60a01b821617600055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a380f35b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b9290503461023d578060031936011261023d576101d0610493565b6101d86104ae565b906101e161057b565b6001600160a01b03908116803b156102395785928360249286519788958694631b2ce7f360e11b865216908401525af190811561023057506102205750f35b610229906104c4565b6100e25780f35b513d84823e3d90fd5b8580fd5b5050fd5b508290606036600319011261035457610258610493565b926102616104ae565b9160443567ffffffffffffffff8111610350573660238201121561035057808201359161028d83610510565b9261029a855194856104ee565b808452602092366024838301011161034c5781889260246020930183880137850101526102c561057b565b6001600160a01b0396871696873b156103485784519563278f794360e11b87521690850152826024850152815191826044860152855b8381106103345750505082849581606481858983819884010152601f8019910116810103019134905af190811561023057506102205750f35b8181018301518682016064015282016102fb565b8680fd5b8780fd5b8480fd5b5080fd5b505034610354578160031936011261035457905490516001600160a01b039091168152602090f35b5090346100e557806003193601126100e5578261039b610493565b6103a36104ae565b6103ab61057b565b6001600160a01b0391821690813b156103f65783602492865197889586946308f2839760e41b865216908401525af190811561023057506103ea575080f35b6103f3906104c4565b80f35b8380fd5b83346100e257806003193601126100e25761041361057b565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b91509134610354576020366003190112610354576001600160a01b03928291908461047d610493565b635c60da1b60e01b8352165afa926100bf61052c565b600435906001600160a01b03821682036104a957565b600080fd5b602435906001600160a01b03821682036104a957565b67ffffffffffffffff81116104d857604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff8211176104d857604052565b67ffffffffffffffff81116104d857601f01601f191660200190565b3d15610557573d9061053d82610510565b9161054b60405193846104ee565b82523d6000602084013e565b606090565b908160209103126104a957516001600160a01b03811681036104a95790565b6000546001600160a01b0316330361058f57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fdfea164736f6c6343000818000a60406080815262000c398038038062000018816200030b565b9283398101906060818303126200030657620000348162000347565b916020926200004584840162000347565b8584015190936001600160401b0391908282116200030657019280601f850112156200030657835193620000836200007d866200035c565b6200030b565b948086528786019288828401011162000306578288620000a4930162000378565b823b15620002ac577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b03199081166001600160a01b0386811691821790935590959194600093909290917fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8580a2805115801590620002a4575b620001f5575b50505050507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103937f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f86865493815196818616885216958684820152a18315620001a3575016179055516107e29081620004578239f35b60849086519062461bcd60e51b82526004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b895194606086019081118682101762000290578a52602785527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c89860152660819985a5b195960ca1b8a860152516200027a9493929183918291845af4903d1562000286573d6200026a6200007d826200035c565b90815280938a3d92013e6200039d565b5038808080806200012d565b606092506200039d565b634e487b7160e01b85526041600452602485fd5b508362000127565b865162461bcd60e51b815260048101879052602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b600080fd5b6040519190601f01601f191682016001600160401b038111838210176200033157604052565b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036200030657565b6001600160401b0381116200033157601f01601f191660200190565b60005b8381106200038c5750506000910152565b81810151838201526020016200037b565b91929015620004025750815115620003b3575090565b3b15620003bd5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b825190915015620004165750805190602001fd5b6044604051809262461bcd60e51b82526020600483015262000448815180928160248601526020868601910162000378565b601f01601f19168101030190fdfe60806040523661012e57600080516020610796833981519152546001600160a01b03163303610129576000356001600160e01b031916631b2ce7f360e11b8103610054575061004c61047e565b602081519101f35b63278f794360e11b8103610070575061006b6103ed565b61004c565b6308f2839760e41b8103610087575061006b610317565b6303e1469160e61b810361009e575061006b610275565b635c60da1b60e01b036100b35761006b61023c565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a490fd5b610171565b600080516020610796833981519152546001600160a01b03163303610171576000356001600160e01b031916631b2ce7f360e11b8103610054575061004c61047e565b6000805160206107b683398151915254600090819081906001600160a01b0316368280378136915af43d82803e156101a7573d90f35b3d90fd5b634e487b7160e01b600052604160045260246000fd5b6040810190811067ffffffffffffffff8211176101dd57604052565b6101ab565b6020810190811067ffffffffffffffff8211176101dd57604052565b6060810190811067ffffffffffffffff8211176101dd57604052565b90601f8019910116810190811067ffffffffffffffff8211176101dd57604052565b61024461059f565b60018060a01b036000805160206107b6833981519152541660405190602082015260208152610272816101c1565b90565b61027d61059f565b60018060a01b03600080516020610796833981519152541660405190602082015260208152610272816101c1565b600435906001600160a01b03821682036102c157565b600080fd5b60209060031901126102c1576004356001600160a01b03811681036102c15790565b67ffffffffffffffff81116101dd57601f01601f191660200190565b60405190610311826101e2565b60008252565b61031f61059f565b366004116102c1576001600160a01b0380610339366102c6565b16600080516020610796833981519152917f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f604084549281519084168152846020820152a18115610399576001600160a01b031916179055610272610304565b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b366004116102c15760403660031901126102c1576104096102ab565b6024359067ffffffffffffffff82116102c157366023830112156102c157816004013590610436826102e8565b91610444604051938461021a565b80835236602482860101116102c1576020816000926024610476970183870137840101526001600160a01b03166105a6565b610272610304565b61048661059f565b366004116102c1576001600160a01b0361049f366102c6565b16604051906104ad826101e2565b60008252803b15610544576000805160206107b683398151915280546001600160a01b03191682179055807fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a281511580159061053c575b610522575b505060405161051b816101e2565b6000815290565b6105349161052e610627565b91610670565b50388061050d565b506000610508565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b346102c157565b803b15610544576000805160206107b683398151915280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a281511580159061061f575b610610575050565b61061c9161052e610627565b50565b506001610608565b60405190610634826101fe565b60278252660819985a5b195960ca1b6040837f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152565b6000806102729493602081519101845af43d156106af573d91610692836102e8565b926106a0604051948561021a565b83523d6000602085013e610703565b606091610703565b156106be57565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b919290156107235750815115610717575090565b610272903b15156106b7565b8251909150156107365750805190602001fd5b6040519062461bcd60e51b82528160208060048301528251908160248401526000935b82851061077c575050604492506000838284010152601f80199101168101030190fd5b848101820151868601604401529381019385935061075956feb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c6343000818000a3d1f25f1ac447e55e7fec744471c4dab1c6a2b6ffb897825f9ea3d2e8c9be5833d6d57a78482a91a0ba9b416f862f6ca04291640d4f31653fb408a192186e75da164736f6c6343000818000a",
"deployedBytecode": "0x604060808152600490813610156200001657600080fd5b6000803560e01c806305c054081462000af857806307b8aab6146200097c5780633e3b5b19146200094357806342540cec1462000920578063486ff0cd14620008d557806349f3153414620007565780634cbd1467146200072c57806354121d7d146200070957806355ac378a146200068e578063572b6c0514620006485780635dd38ebf14620006115780636913045114620004c857806378a1d48014620004965780637e6d0f3a146200046a5780638cb941cc146200042e578063a51adf5e14620003fc578063ce1b815f14620003bf578063da742228146200035d578063e2288f2f146200015c5763e7815253146200011157600080fd5b34620001595760203660031901126200015957506200014860209235620001388162001371565b6200014262000e09565b620013d0565b90516001600160a01b039091168152f35b80fd5b50919034620003595760031960603682011262000308578235906001600160401b038211620003465760a090828501923603011262000308576001600160a01b03936024358581169081900362000354576044359580620001bd88620011ff565b1696873b156200030857855163f2fde38b60e01b808252818901859052939291908581602481838e5af180156200034a579086916200032e575b50506200020f90896200020962000d9a565b6200126c565b1695863b15620003085785516317780f7360e31b8152848180620002368986830162000fac565b0381838c5af1801562000324579085916200030c575b5050863b1562000308578551928352820152818160248183895af18015620002fe5791859493918793620002db575b5050927f5bd07307b20af29e49d8a9a6b933bb3815cc829bcb87549dc35daf6f3adc069e620002b4620002d79585519182918262000fac565b0390a3516001600160a01b03928316815292909116602083015281906040820190565b0390f35b819350620002ed919294955062000d16565b62000159578392918186926200027b565b84513d84823e3d90fd5b8380fd5b620003179062000d16565b620003085783386200024c565b87513d87823e3d90fd5b620003399062000d16565b62000346578438620001f7565b8480fd5b88513d88823e3d90fd5b600080fd5b8280fd5b50346200015957602036600319011262000159576200037b62000cb2565b6200038f6200038962000e4f565b62001042565b6000805160206200275f83398151915280546001600160a01b0319166001600160a01b0390921691909117905580f35b509034620003f85781600319360112620003f8576000805160206200275f8339815191525490516001600160a01b039091168152602090f35b5080fd5b5034620001595760203660031901126200015957506200014860209235620004248162001371565b6200014262000d9a565b50346200015957602036600319011262000159576200044c62000cb2565b62000456620012f3565b6000805160206200273f8339815191525580f35b509034620003f85781600319360112620003f857602090516000805160206200275f8339815191528152f35b5034620001595760203660031901126200015957506200014860209235620004be8162001371565b6200014262000e2d565b509190346200035957806003193601126200035957620004e762000cb2565b916001600160401b036024358181116200060d57366023820112156200060d5780830135918211620005f857859060209285516200052f85601f19601f850116018262000d78565b818152366024838501011162000308578160248694018483013701015262000556620012f3565b82516309a06df560e41b81526001600160a01b039490928291849190829088165afa928315620005ef57508492620005b1575b505082546001600160a01b0319169116178155336000805160206200273f8339815191525580f35b90809250813d8311620005e7575b620005cb818362000d78565b8101031262000359575181811681036200035957388062000589565b503d620005bf565b513d86823e3d90fd5b604183634e487b7160e01b6000525260246000fd5b8580fd5b509034620003f85781600319360112620003f857620002d7906200063462000e2d565b905191829160208352602083019062000de2565b509034620003f8576020366003190112620003f8576020906200066a62000cb2565b60018060a01b03806000805160206200275f83398151915254169116149051908152f35b5091346200035957602036600319011262000359578035906001600160401b03908183116200034657366023840112156200034657820135908111620003085736602482840101116200030857602093508060248451930183376001908201908152819003830190205490516001600160a01b039091168152f35b509034620003f85781600319360112620003f857620002d7906200063462000e09565b509034620003f85781600319360112620003f857905490516001600160a01b039091168152602090f35b5091903462000359576200076a3662000cc9565b94906001600160a01b03806200078088620011ff565b1696873b156200030857855163f2fde38b60e01b8082529383168189018190529291908581602481838e5af180156200034a57908691620008bd575b5050620007ce90896200020962000e09565b1695863b156200030857855163139e233960e31b8152602082820152848180620007fc602482018a62000f04565b0381838c5af180156200032457908591620008a5575b5050863b1562000308578551928352820152818160248183895af18015620002fe579185949391879362000882575b5050927f04166b40136a0ebf5dd06d1233a1f808e2c9fc16cb2a7c8455d3705456907d46620002b4620002d795855191829160208352602083019062000f04565b81935062000894919294955062000d16565b620001595783929181869262000841565b620008b09062000d16565b6200030857833862000812565b620008c89062000d16565b62000346578438620007bc565b509034620003f85781600319360112620003f8578051620002d791620008fb8262000d40565b60058252640322e302e360dc1b60208301525191829160208352602083019062000de2565b509034620003f85781600319360112620003f857620002d7906200063462000d9a565b509034620003f85781600319360112620003f8576000805160206200273f8339815191525490516001600160a01b039091168152602090f35b509190346200035957620009903662000cc9565b94906001600160a01b0380620009a688620011ff565b1696873b156200030857855163f2fde38b60e01b8082529383168189018190529291908581602481838e5af180156200034a5762000adf575b50620009f090896200020962000e2d565b1695863b1562000308578551632a31626760e01b815260208282015284818062000a1e602482018a62000f04565b0381838c5af18015620003245790859162000ac7575b5050863b1562000308578551928352820152818160248183895af18015620002fe579185949391879362000aa4575b5050927f3b6dc6fe6effd8dca6ea44f32fe21945c56fa065de3a0e21f033e739cce16a7f620002b4620002d795855191829160208352602083019062000f04565b81935062000ab6919294955062000d16565b620001595783929181869262000a63565b62000ad29062000d16565b6200030857833862000a34565b9462000af0620009f0929662000d16565b9490620009df565b50913462000359578160031936011262000359576001600160401b03908035828111620003465762000b2e903690830162000c7f565b9290916024803583811162000c7b5762000b4c903690840162000c7f565b92909162000b5d6200038962000e4f565b885b87811062000b6b578980f35b62000b8262000b7c82878762000e73565b62000e9a565b3b1562000c135762000b9a62000b7c82878762000e73565b908060051b880135601e198936030181121562000c0f57880191823588811162000c0b57602080940193813603851362000c0757600194828e51938492833781018681520301902090838060a01b03166bffffffffffffffffffffffff60a01b8254161790550162000b5f565b8d80fd5b8c80fd5b8b80fd5b885162461bcd60e51b8152602081850152603b818401527f5b5147444b2d3031303030315d2d54686520696d706c656d656e746174696f6e60448201527f2061646472657373206973206e6f74206120636f6e74726163742e00000000006064820152608490fd5b8780fd5b9181601f8401121562000354578235916001600160401b03831162000354576020808501948460051b0101116200035457565b600435906001600160a01b03821682036200035457565b600319906060818301126200035457600435916001600160401b03831162000354578260c0920301126200035457600401906024356001600160a01b038116810362000354579060443590565b6001600160401b03811162000d2a57604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111762000d2a57604052565b602081019081106001600160401b0382111762000d2a57604052565b90601f801991011681019081106001600160401b0382111762000d2a57604052565b6040519062000da98262000d40565b6005825264051524332360dc1b6020830152565b60005b83811062000dd15750506000910152565b818101518382015260200162000dc0565b9060209162000dfd8151809281855285808601910162000dbd565b601f01601f1916010190565b6040519062000e188262000d40565b600682526551524337323160d01b6020830152565b6040519062000e3c8262000d40565b60048252631454d09560e21b6020830152565b6040519062000e5e8262000d40565b600682526543524541544560d01b6020830152565b919081101562000e845760051b0190565b634e487b7160e01b600052603260045260246000fd5b356001600160a01b0381168103620003545790565b9035601e1982360301811215620003545701602081359101916001600160401b038211620003545781360383136200035457565b908060209392818452848401376000828201840152601f01601f1916010190565b9060a062000f8c62000f6e62000f5062000f3262000f23878062000eaf565b60c0885260c088019162000ee3565b62000f41602088018862000eaf565b90878303602089015262000ee3565b62000f5f604087018762000eaf565b90868303604088015262000ee3565b62000f7d606086018662000eaf565b90858303606087015262000ee3565b9260808101356080840152013590811515809203620003545760a0015290565b602081526200101e62000fd662000fc4848062000eaf565b60a0602086015260c085019162000ee3565b62000ffe62000fe9602086018662000eaf565b601f1986850381016040880152939162000ee3565b906200100e604086018662000eaf565b9185840301606086015262000ee3565b91606081013560ff8116809103620003545760a09160809182850152013591015290565b60008054620010ee92620010db92916001600160a01b03908116601436101580620011e3575b15620011db5736601319013560601c915b60405192620010888462000d40565b60168452602097889575544f4b454e5f464143544f52595f5245534f5552434560501b8787015260405198899687958695633ca8e36d60e11b875216600486015260606024860152606485019062000de2565b8381036003190160448501529062000de2565b03915afa918215620011ce5781926200118d575b5050156200110d5750565b60a4906040519062461bcd60e51b82526004820152604d60248201527f5b5147444b2d3031303030305d2d5468652073656e646572206973206e6f742060448201527f616c6c6f77656420746f20706572666f726d2074686520616374696f6e2c206160648201526c31b1b2b9b9903232b734b2b21760991b6084820152fd5b9091508281813d8311620011c6575b620011a8818362000d78565b81010312620003f85751908115158203620001595750388062001102565b503d6200119c565b50604051903d90823e3d90fd5b339162001079565b50816000805160206200275f8339815191525416331462001068565b6040516106418082018281106001600160401b0382111762000d2a578291620014c5833903906000f58015620012325790565b6040513d6000823e3d90fd5b6001600160a01b03918216815291166020820152606060408201819052620012699291019062000de2565b90565b9190602062001285604051948581519384920162000dbd565b83016001815283602060018060a01b0395869303019020541660405191620012ad8362000d5c565b6000835260405192610c3991828501938585106001600160401b0386111762000d2a578594620012e39462001b0687396200123e565b03906000f5801562001232571690565b6000805160206200273f833981519152546001600160a01b0316801590811562001366575b50156200132157565b60405162461bcd60e51b815260206004820152601a60248201527f446570656e64616e743a206e6f7420616e20696e6a6563746f720000000000006044820152606490fd5b905033143862001318565b62001269906106416040516200138b602083018262000d78565b8181526020810191620014c58339620013c660206040518093620013b88383019687925192839162000dbd565b810103808452018262000d78565b51902090620014a4565b62001497620013c6620012699493610c399360209160405191620013f78488018462000d78565b8683528383019662001b068839836200141a604051928381519384920162000dbd565b81019060018252848160018060a01b0393030190205416906200146d60405191620014458362000d5c565b600083526200145e60405193849288840196876200123e565b03601f19810183528262000d78565b60405195869362001487868601998a925192839162000dbd565b8401915180938684019062000dbd565b0103808452018262000d78565b605591600b9160405191604083015260208201523081520160ff8153209056fe6080806040523461005b5760008054336001600160a01b0319821681178355916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a36105e090816100618239f35b600080fdfe6080604081815260048036101561001557600080fd5b600092833560e01c90848263204e1c7a146104545750508063715018a6146103fa5780637eff275e146103805780638da5cb5b146103585780639623609d146102415783816399a88ec4146101b557508063f2fde38b146100e95763f3b7dead1461007f57600080fd5b346100e55760203660031901126100e5576001600160a01b039083908190836100a6610493565b86516303e1469160e61b815291165afa926100bf61052c565b93156100e257506100da83602080809651830101910161055c565b169051908152f35b80fd5b8280fd5b50346100e55760203660031901126100e557610103610493565b9061010c61057b565b6001600160a01b03918216928315610163575050600054826bffffffffffffffffffffffff60a01b821617600055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a380f35b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b9290503461023d578060031936011261023d576101d0610493565b6101d86104ae565b906101e161057b565b6001600160a01b03908116803b156102395785928360249286519788958694631b2ce7f360e11b865216908401525af190811561023057506102205750f35b610229906104c4565b6100e25780f35b513d84823e3d90fd5b8580fd5b5050fd5b508290606036600319011261035457610258610493565b926102616104ae565b9160443567ffffffffffffffff8111610350573660238201121561035057808201359161028d83610510565b9261029a855194856104ee565b808452602092366024838301011161034c5781889260246020930183880137850101526102c561057b565b6001600160a01b0396871696873b156103485784519563278f794360e11b87521690850152826024850152815191826044860152855b8381106103345750505082849581606481858983819884010152601f8019910116810103019134905af190811561023057506102205750f35b8181018301518682016064015282016102fb565b8680fd5b8780fd5b8480fd5b5080fd5b505034610354578160031936011261035457905490516001600160a01b039091168152602090f35b5090346100e557806003193601126100e5578261039b610493565b6103a36104ae565b6103ab61057b565b6001600160a01b0391821690813b156103f65783602492865197889586946308f2839760e41b865216908401525af190811561023057506103ea575080f35b6103f3906104c4565b80f35b8380fd5b83346100e257806003193601126100e25761041361057b565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b91509134610354576020366003190112610354576001600160a01b03928291908461047d610493565b635c60da1b60e01b8352165afa926100bf61052c565b600435906001600160a01b03821682036104a957565b600080fd5b602435906001600160a01b03821682036104a957565b67ffffffffffffffff81116104d857604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff8211176104d857604052565b67ffffffffffffffff81116104d857601f01601f191660200190565b3d15610557573d9061053d82610510565b9161054b60405193846104ee565b82523d6000602084013e565b606090565b908160209103126104a957516001600160a01b03811681036104a95790565b6000546001600160a01b0316330361058f57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fdfea164736f6c6343000818000a60406080815262000c398038038062000018816200030b565b9283398101906060818303126200030657620000348162000347565b916020926200004584840162000347565b8584015190936001600160401b0391908282116200030657019280601f850112156200030657835193620000836200007d866200035c565b6200030b565b948086528786019288828401011162000306578288620000a4930162000378565b823b15620002ac577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b03199081166001600160a01b0386811691821790935590959194600093909290917fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8580a2805115801590620002a4575b620001f5575b50505050507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103937f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f86865493815196818616885216958684820152a18315620001a3575016179055516107e29081620004578239f35b60849086519062461bcd60e51b82526004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b895194606086019081118682101762000290578a52602785527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c89860152660819985a5b195960ca1b8a860152516200027a9493929183918291845af4903d1562000286573d6200026a6200007d826200035c565b90815280938a3d92013e6200039d565b5038808080806200012d565b606092506200039d565b634e487b7160e01b85526041600452602485fd5b508362000127565b865162461bcd60e51b815260048101879052602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b600080fd5b6040519190601f01601f191682016001