{
    "_format": "hh-sol-artifact-1",
    "contractName": "TurboFil",
    "sourceName": "contracts/TurboFil.sol",
    "abi": [
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "sectorReward_",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "seedReward_",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "verifyReward_",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "lockPeriod_",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "submitProofTimeout_",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "verifyProofTimeout_",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "verifyThreshold_",
                    "type": "uint256"
                }
            ],
            "stateMutability": "payable",
            "type": "constructor"
        },
        {
            "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": false,
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "bytes28",
                    "name": "afid",
                    "type": "bytes28"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "sector",
                    "type": "address"
                }
            ],
            "name": "SectorSubmission",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "bytes28",
                    "name": "sector_afid",
                    "type": "bytes28"
                },
                {
                    "indexed": false,
                    "internalType": "bytes28",
                    "name": "seed",
                    "type": "bytes28"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "verification",
                    "type": "address"
                }
            ],
            "name": "VerificationTask",
            "type": "event"
        },
        {
            "inputs": [],
            "name": "DEFAULT_ADMIN_ROLE",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "MAINTAIN_ROLE",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "SECTOR_ROLE",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "SEED_ROLE",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "VERIFY_ROLE",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "depositRequirement",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "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": "addr_",
                    "type": "address"
                }
            ],
            "name": "hasVerifyRole",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "lockPeriod",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "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": "uint256",
                    "name": "index_",
                    "type": "uint256"
                }
            ],
            "name": "sectorAtIndex",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "sectorReward",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes28",
                    "name": "afid_",
                    "type": "bytes28"
                }
            ],
            "name": "sectorWithAfid",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "seedReward",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes28",
                    "name": "seed_",
                    "type": "bytes28"
                }
            ],
            "name": "seedUsed",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "lockPeriod_",
                    "type": "uint256"
                }
            ],
            "name": "setLockPeriod",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "reward_",
                    "type": "uint256"
                }
            ],
            "name": "setSectorReward",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "reward_",
                    "type": "uint256"
                }
            ],
            "name": "setSeedReward",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "timeout_",
                    "type": "uint256"
                }
            ],
            "name": "setSubmitProofTimeout",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "timeout_",
                    "type": "uint256"
                }
            ],
            "name": "setVerifyProofTimeout",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "reward_",
                    "type": "uint256"
                }
            ],
            "name": "setVerifyReward",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "threshold_",
                    "type": "uint256"
                }
            ],
            "name": "setVerifyThreshold",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "submitProofTimeout",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address payable",
                    "name": "owner_",
                    "type": "address"
                },
                {
                    "internalType": "bytes28",
                    "name": "afid_",
                    "type": "bytes28"
                }
            ],
            "name": "submitSector",
            "outputs": [],
            "stateMutability": "payable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes28",
                    "name": "seed_",
                    "type": "bytes28"
                }
            ],
            "name": "submitSeed",
            "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": "verifyProofTimeout",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "verifyReward",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "verifyThreshold",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "withdraw",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "stateMutability": "payable",
            "type": "receive"
        }
    ],
    "bytecode": "0x608060405260405162003f8238038062003f82833981016040819052620000269162000107565b6200003360003362000057565b6005969096556004949094556006929092556007556001556002556003556200015b565b62000063828262000067565b5050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1662000063576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620000c33390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600080600080600080600060e0888a03121562000122578283fd5b5050855160208701516040880151606089015160808a015160a08b015160c0909b0151949c939b50919990985090965094509092509050565b613e17806200016b6000396000f3fe608060405260043610620002355760003560e01c806360eb95491162000139578063b25d8cee11620000c1578063dc606461116200008b578063e4933458116200006d578063e49334581462000708578063f69bce241462000720578063fc096c4f1462000738576200023d565b8063dc60646114620006be578063e23823c914620006e3576200023d565b8063b25d8cee1462000627578063c3c56e66146200063e578063d41d0e5c1462000663578063d547741f1462000699576200023d565b80638f84940a11620001035780638f84940a146200059857806391d1485414620005b0578063a217fddf14620005f8578063af22c359146200060f576200023d565b806360eb954914620004fb57806371c7c90c1462000536578063779972da146200055b5780638bbcf85f1462000580576200023d565b80633a8c266a11620001bd578063551edf641162000187578063551edf6414620004705780635c488da614620004885780635ddb379714620004be5780635e9dc50514620004d6576200023d565b80633a8c266a14620003c15780633ccfd60b146200041b5780633fd8b02f146200043357806352baa7c7146200044b576200023d565b8063225bb28611620001ff578063225bb286146200031e578063248a9ca314620003435780632f2ff15d146200037757806336568abe146200039c576200023d565b806301ffc9a714620002425780630217516a146200027c578063066b57ef14620002c15780630c8070f514620002f7576200023d565b366200023d57005b600080fd5b3480156200024f57600080fd5b50620002676200026136600462001e77565b6200075d565b60405190151581526020015b60405180910390f35b3480156200028957600080fd5b50620002b27ffc07948174d5b432cfe29332fd123b17c444c9f18f139c322a618ec51a67a47581565b60405190815260200162000273565b348015620002ce57600080fd5b50620002b27f27878d6fd2352e8c530d873016f67bb748d79859c781b7c2453cc2caffa896ff81565b3480156200030457600080fd5b506200031c6200031636600462001e37565b620007f9565b005b3480156200032b57600080fd5b506200031c6200033d36600462001e37565b620008a8565b3480156200035057600080fd5b50620002b26200036236600462001e37565b60009081526020819052604090206001015490565b3480156200038457600080fd5b506200031c6200039636600462001e50565b62000953565b348015620003a957600080fd5b506200031c620003bb36600462001e50565b620009f6565b348015620003ce57600080fd5b5062000402620003e036600462001df9565b63ffffffff19166000908152600860205260409020546001600160a01b031690565b6040516001600160a01b03909116815260200162000273565b3480156200042857600080fd5b506200031c62000a82565b3480156200044057600080fd5b50620002b260075481565b3480156200045857600080fd5b506200031c6200046a36600462001e37565b62000b59565b3480156200047d57600080fd5b50620002b260045481565b3480156200049557600080fd5b50620002b27fc92661711815e9b609b0f92f233af70537e889630fb3ca91ccc85ac8f98c784f81565b348015620004cb57600080fd5b50620002b260055481565b348015620004e357600080fd5b506200031c620004f536600462001e37565b62000c04565b3480156200050857600080fd5b50620002676200051a36600462001df9565b63ffffffff19166000908152600a602052604090205460ff1690565b3480156200054357600080fd5b506200031c6200055536600462001df9565b62000caf565b3480156200056857600080fd5b506200031c6200057a36600462001e37565b62001132565b3480156200058d57600080fd5b50620002b2620011dd565b348015620005a557600080fd5b50620002b260025481565b348015620005bd57600080fd5b5062000267620005cf36600462001e50565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156200060557600080fd5b50620002b2600081565b3480156200061c57600080fd5b50620002b260035481565b6200031c6200063836600462001d9a565b620011f6565b3480156200064b57600080fd5b50620002676200065d36600462001d74565b6200141c565b3480156200067057600080fd5b50620002b27fd262a1e181ec035692bcc8c920b971bccc173d5263f104f91c1561b5033679dd81565b348015620006a657600080fd5b506200031c620006b836600462001e50565b6200145d565b348015620006cb57600080fd5b506200031c620006dd36600462001e37565b620014ee565b348015620006f057600080fd5b50620004026200070236600462001e37565b62001599565b3480156200071557600080fd5b50620002b260015481565b3480156200072d57600080fd5b50620002b260065481565b3480156200074557600080fd5b506200031c6200075736600462001e37565b620015d8565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b000000000000000000000000000000000000000000000000000000001480620007f157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b90505b919050565b3360009081527fae0e3e90079b140685ffe82811e4f12bdad5cad554501b8278d0f5a224706b6d602052604090205460ff16620008a35760405162461bcd60e51b815260206004820152603d60248201527f547572626f46696c3a2063616c6c657220646f6573206e6f742068617665207060448201527f726976696c65676520746f206d61696e7461696e20547572626f46696c00000060648201526084015b60405180910390fd5b600555565b3360009081527fae0e3e90079b140685ffe82811e4f12bdad5cad554501b8278d0f5a224706b6d602052604090205460ff166200094e5760405162461bcd60e51b815260206004820152603d60248201527f547572626f46696c3a2063616c6c657220646f6573206e6f742068617665207060448201527f726976696c65676520746f206d61696e7461696e20547572626f46696c00000060648201526084016200089a565b600655565b60008281526020819052604090206001015462000972905b33620005cf565b620009e65760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e74000000000000000000000000000000000060648201526084016200089a565b620009f2828262001683565b5050565b6001600160a01b038116331462000a765760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016200089a565b620009f2828262001723565b3360009081527fae0e3e90079b140685ffe82811e4f12bdad5cad554501b8278d0f5a224706b6d602052604090205460ff1662000b285760405162461bcd60e51b815260206004820152603d60248201527f547572626f46696c3a2063616c6c657220646f6573206e6f742068617665207060448201527f726976696c65676520746f206d61696e7461696e20547572626f46696c00000060648201526084016200089a565b6040513390303180156108fc02916000818181858888f1935050505015801562000b56573d6000803e3d6000fd5b50565b3360009081527fae0e3e90079b140685ffe82811e4f12bdad5cad554501b8278d0f5a224706b6d602052604090205460ff1662000bff5760405162461bcd60e51b815260206004820152603d60248201527f547572626f46696c3a2063616c6c657220646f6573206e6f742068617665207060448201527f726976696c65676520746f206d61696e7461696e20547572626f46696c00000060648201526084016200089a565b600455565b3360009081527fae0e3e90079b140685ffe82811e4f12bdad5cad554501b8278d0f5a224706b6d602052604090205460ff1662000caa5760405162461bcd60e51b815260206004820152603d60248201527f547572626f46696c3a2063616c6c657220646f6573206e6f742068617665207060448201527f726976696c65676520746f206d61696e7461696e20547572626f46696c00000060648201526084016200089a565b600155565b3360009081527fceb024648002b7aa8bf572054d62dd3bc301b27fee40c0676cfe5d7af457c179602052604090205460ff1662000d555760405162461bcd60e51b815260206004820152603760248201527f547572626f46696c3a2063616c6c657220646f6573206e6f742068617665207060448201527f726976696c65676520746f207375626d6974207365656400000000000000000060648201526084016200089a565b63ffffffff1981166000908152600a602052604090205460ff161562000dbe5760405162461bcd60e51b815260206004820152601b60248201527f547572626f46696c3a207365656420616c72656164792075736564000000000060448201526064016200089a565b60095462000e0f5760405162461bcd60e51b815260206004820152601e60248201527f547572626f46696c3a206e6f20617661696c61626c6520736563746f7273000060448201526064016200089a565b63ffffffff1981166000908152600a602090815260408220805460ff191660011790556009549062000e4690429085901c62001f0c565b62000e52919062001f48565b9050805b62000e6181620017a3565b62000eeb5760095462000e7682600162001ef1565b62000e82919062001f48565b6009549091508210158062000e9657508181145b1562000ee55760405162461bcd60e51b815260206004820152601e60248201527f547572626f46696c3a206e6f20617661696c61626c6520736563746f7273000060448201526064016200089a565b62000e56565b60006009828154811062000f0f57634e487b7160e01b600052603260045260246000fd5b60009182526020822001546003546006546001600160a01b03909216935062000f389162001f0c565b60045460055462000f4a919062001ef1565b62000f56919062001ef1565b905060008183873360015460025460035460055460045460065460405162000f7e9062001d58565b6001600160a01b03998a16815263ffffffff1990981660208901529790951660408701526060860193909352608085019190915260a084015260c083015260e0820152610100810191909152610120016040518091039082f090508015801562000fec573d6000803e3d6000fd5b506040517f971f8bb10000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301529192509084169063971f8bb190602401600060405180830381600087803b1580156200104e57600080fd5b505af115801562001063573d6000803e3d6000fd5b50505050826001600160a01b0316630ff49f266040518163ffffffff1660e01b815260040160206040518083038186803b158015620010a157600080fd5b505afa158015620010b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010dc919062001e18565b6040805163ffffffff1989811682526001600160a01b038516602083015292909216917fc9204d0197ba560c2d53b10db6f2ae521b7171c0936c86d1443ec9aca3cc042f910160405180910390a2505050505050565b3360009081527fae0e3e90079b140685ffe82811e4f12bdad5cad554501b8278d0f5a224706b6d602052604090205460ff16620011d85760405162461bcd60e51b815260206004820152603d60248201527f547572626f46696c3a2063616c6c657220646f6573206e6f742068617665207060448201527f726976696c65676520746f206d61696e7461696e20547572626f46696c00000060648201526084016200089a565b600755565b6000600754600554620011f1919062001f0c565b905090565b3360009081527fa89c0f8ba48788a63faf58e7c9490f238a84082efa793d1a35ec2c48e19154f4602052604090205460ff166200129c5760405162461bcd60e51b815260206004820152603960248201527f547572626f46696c3a2063616c6c657220646f6573206e6f742068617665207060448201527f726976696c65676520746f207375626d697420736563746f720000000000000060648201526084016200089a565b600754600554620012ae919062001f0c565b341015620012ff5760405162461bcd60e51b815260206004820152601c60248201527f547572626f46696c3a206e6f7420656e6f756768206465706f7369740000000060448201526064016200089a565b6000348383600754604051620013159062001d66565b6001600160a01b03909316835263ffffffff19909116602083015260408201526060016040518091039082f090508015801562001356573d6000803e3d6000fd5b5063ffffffff1983166000818152600860209081526040808320805473ffffffffffffffffffffffffffffffffffffffff199081166001600160a01b038881169182179093556009805460018101825596527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af9095018054909116851790558151908916815291820193909352918201529091507f34da889154586424bd6c1f8c6719be8b74e3cc57fb04de7f502945dc6c1299439060600160405180910390a1505050565b6001600160a01b03811660009081527f70912f16addbccb216ad6bdad396e8fdf5835d1a3528876519bbd4a04c7c193b602052604081205460ff16620007f1565b6000828152602081905260409020600101546200147a906200096b565b62000a765760405162461bcd60e51b815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b650000000000000000000000000000000060648201526084016200089a565b3360009081527fae0e3e90079b140685ffe82811e4f12bdad5cad554501b8278d0f5a224706b6d602052604090205460ff16620015945760405162461bcd60e51b815260206004820152603d60248201527f547572626f46696c3a2063616c6c657220646f6573206e6f742068617665207060448201527f726976696c65676520746f206d61696e7461696e20547572626f46696c00000060648201526084016200089a565b600355565b600060098281548110620015bd57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031692915050565b3360009081527fae0e3e90079b140685ffe82811e4f12bdad5cad554501b8278d0f5a224706b6d602052604090205460ff166200167e5760405162461bcd60e51b815260206004820152603d60248201527f547572626f46696c3a2063616c6c657220646f6573206e6f742068617665207060448201527f726976696c65676520746f206d61696e7461696e20547572626f46696c00000060648201526084016200089a565b600255565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620009f2576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620016df3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1615620009f2576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60008060098381548110620017c857634e487b7160e01b600052603260045260246000fd5b60009182526020918290200154604080517f36cf7c8700000000000000000000000000000000000000000000000000000000815290516001600160a01b03909216935083926336cf7c8792600480840193829003018186803b1580156200182e57600080fd5b505afa15801562001843573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001869919062001dd7565b1562001885576200187a8362001b8c565b6001915050620007f4565b60006001600160a01b0316816001600160a01b0316634ffe2a8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015620018ca57600080fd5b505afa158015620018df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001905919062001eb9565b6001600160a01b0316141562001920576001915050620007f4565b806001600160a01b0316634ffe2a8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200195a57600080fd5b505afa1580156200196f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001995919062001eb9565b6001600160a01b031663047168e06040518163ffffffff1660e01b815260040160206040518083038186803b158015620019ce57600080fd5b505afa158015620019e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a09919062001dd7565b1562001a9257806001600160a01b031663826d3dec6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801562001a4b57600080fd5b505af115801562001a60573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a86919062001ed8565b506200187a8362001b8c565b806001600160a01b0316634ffe2a8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801562001acc57600080fd5b505afa15801562001ae1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b07919062001eb9565b6001600160a01b031663ed32cc6d6040518163ffffffff1660e01b815260040160206040518083038186803b15801562001b4057600080fd5b505afa15801562001b55573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b7b919062001dd7565b156200187a576001915050620007f4565b60006009828154811062001bb057634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600980546001600160a01b0390921692509062001bdc9060019062001f2e565b8154811062001bfb57634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600980546001600160a01b03909216918490811062001c3657634e487b7160e01b600052603260045260246000fd5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600980548062001c8457634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160006101000a8154906001600160a01b03021916905590556000816001600160a01b0316630ff49f266040518163ffffffff1660e01b815260040160206040518083038186803b15801562001ce857600080fd5b505afa15801562001cfd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d23919062001e18565b63ffffffff19166000908152600860205260409020805473ffffffffffffffffffffffffffffffffffffffff19169055505050565b61152a8062001faa83390190565b61090e80620034d483390190565b60006020828403121562001d86578081fd5b813562001d938162001f7f565b9392505050565b6000806040838503121562001dad578081fd5b823562001dba8162001f7f565b9150602083013562001dcc8162001f95565b809150509250929050565b60006020828403121562001de9578081fd5b8151801515811462001d93578182fd5b60006020828403121562001e0b578081fd5b813562001d938162001f95565b60006020828403121562001e2a578081fd5b815162001d938162001f95565b60006020828403121562001e49578081fd5b5035919050565b6000806040838503121562001e63578182fd5b82359150602083013562001dcc8162001f7f565b60006020828403121562001e89578081fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811462001d93578182fd5b60006020828403121562001ecb578081fd5b815162001d938162001f7f565b60006020828403121562001eea578081fd5b5051919050565b6000821982111562001f075762001f0762001f69565b500190565b600081600019048311821515161562001f295762001f2962001f69565b500290565b60008282101562001f435762001f4362001f69565b500390565b60008262001f6457634e487b7160e01b81526012600452602481fd5b500690565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811462000b5657600080fd5b63ffffffff198116811462000b5657600080fdfe60806040526040516200152a3803806200152a8339810160408190526200002691620001a5565b6200003284826200024e565b6200003e838562000233565b6200004a919062000233565b341015620000de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f566572696669636174696f6e3a206e6f7420656e6f7567682066756e6473206660448201527f6f72207265776172647300000000000000000000000000000000000000000000606482015260840160405180910390fd5b60008054336001600160a01b0319918216179091556001805482166001600160a01b038c811691909117909155600280547fffffffff000000000000000000000000000000000000000000000000000000001660208c901c1790556003805490921690891617905560048390556005829055600681905562000161864362000233565b60098190556200017390869062000233565b600a55505050600755506200029f9350505050565b80516001600160a01b0381168114620001a057600080fd5b919050565b60008060008060008060008060006101208a8c031215620001c4578485fd5b620001cf8a62000188565b985060208a015163ffffffff1981168114620001e9578586fd5b9750620001f960408b0162000188565b965060608a0151955060808a0151945060a08a0151935060c08a0151925060e08a015191506101008a015190509295985092959850929598565b6000821982111562000249576200024962000270565b500190565b60008160001904831182151516156200026b576200026b62000270565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b61127b80620002af6000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c8063a0e45278116100f9578063c27c251411610097578063ed32cc6d11610071578063ed32cc6d14610329578063f69bce2414610331578063faf924cf1461033a578063fda5ee8914610342576101b9565b8063c27c2514146102f3578063d245fbe114610316578063eb273f97146102ba576101b9565b8063a9cc4718116100d3578063a9cc4718146102c2578063af22c359146102cf578063b5a85222146102d8578063b7aec7ff146102eb576101b9565b8063a0e45278146102a5578063a7a1ed72146102ad578063a9666725146102ba576101b9565b8063551edf6411610166578063675b591d11610140578063675b591d1461024e5780637d94792a146102725780638e3475fc1461029557806396ae8f7f1461029d576101b9565b8063551edf64146102565780635b9806281461025f5780635ddb379714610269576101b9565b8063200d2ed211610197578063200d2ed21461021c5780632e53c5b01461023b578063346b7ba21461024e576101b9565b8063047168e0146101be57806316f81cd8146101db578063177536ea146101f1575b600080fd5b6101c6610355565b60405190151581526020015b60405180910390f35b6101e3610382565b6040519081526020016101d2565b600154610204906001600160a01b031681565b6040516001600160a01b0390911681526020016101d2565b6008546102299060ff1681565b60405160ff90911681526020016101d2565b600054610204906001600160a01b031681565b610229600081565b6101e360055481565b6102676103f3565b005b6101e360045481565b60025461027f9060201b81565b60405163ffffffff1990911681526020016101d2565b610229600281565b6101c66104de565b6101c66104ef565b600754600c5410156101c6565b610229600181565b600754600d5410156101c6565b6101e360075481565b6102676102e63660046111b0565b6104f9565b6101e36107d8565b6101c6610301366004611139565b600b6020526000908152604090205460ff1681565b610267610324366004611178565b610846565b6101c6610cb6565b6101e360065481565b61027f610ce6565b600354610204906001600160a01b031681565b60085460009060ff1615801561036e575061036e6104de565b1561037b5750600161037f565b5060005b90565b600854600090819060ff16156103eb5760405162461bcd60e51b8152602060048201526024808201527f566572696669636174696f6e3a206e6f742061742072657175697265642073746044820152636174757360e01b60648201526084015b60405180910390fd5b505060095490565b600754600d541080156104095750600754600c54105b801561042657506104186104de565b8061042657506104266104ef565b6104985760405162461bcd60e51b815260206004820152602a60248201527f566572696669636174696f6e3a206e6f7420616c6c6f77656420746f20636f6c60448201527f6c6563742066756e64730000000000000000000000000000000000000000000060648201526084016103e2565b3031156104dc57600080546040516001600160a01b0390911691303180156108fc02929091818181858888f193505050501580156104da573d6000803e3d6000fd5b505b565b60006104e8610382565b4311905090565b60006104e86107d8565b60085460009060ff161561055b5760405162461bcd60e51b8152602060048201526024808201527f566572696669636174696f6e3a206e6f742061742072657175697265642073746044820152636174757360e01b60648201526084016103e2565b600154604080517f8da5cb5b000000000000000000000000000000000000000000000000000000008152905133926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b1580156105b857600080fd5b505afa1580156105cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f0919061115c565b6001600160a01b03161461066c5760405162461bcd60e51b815260206004820152602860248201527f566572696669636174696f6e3a2063616c6c6572206973206e6f74207365637460448201527f6f72206f776e657200000000000000000000000000000000000000000000000060648201526084016103e2565b6009544311156106ca5760405162461bcd60e51b815260206004820152602360248201527f566572696669636174696f6e3a207375626d69742070726f6f6620746f6f206c60448201526261746560e81b60648201526084016103e2565b6008805460017fffffff0000000000000000000000000000000000000000000000000000000000909116610100602086811c9190910260ff19169190911782179092556002549054604080516307fa4f9360e11b8152905192841b63ffffffff1916936001600160a01b0390921692630ff49f2692600480840193919291829003018186803b15801561075c57600080fd5b505afa158015610770573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079491906111cc565b60405163ffffffff19858116825291909116907f6d8409d5130d9982d8d4e6f32b95a9073d7f0e7aef72c00487f1507483a270ae9060200160405180910390a35050565b60085460009060019060ff16811461083e5760405162461bcd60e51b8152602060048201526024808201527f566572696669636174696f6e3a206e6f742061742072657175697265642073746044820152636174757360e01b60648201526084016103e2565b5050600a5490565b60085460019060ff1681146108a95760405162461bcd60e51b8152602060048201526024808201527f566572696669636174696f6e3a206e6f742061742072657175697265642073746044820152636174757360e01b60648201526084016103e2565b6000546040517fc3c56e660000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b039091169063c3c56e669060240160206040518083038186803b15801561090557600080fd5b505afa158015610919573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093d9190611194565b6109af5760405162461bcd60e51b815260206004820152603560248201527f566572696669636174696f6e3a20646f6573206e6f742068617665207072697660448201527f696c65676520746f207665726966792070726f6f66000000000000000000000060648201526084016103e2565b600a54431115610a0d5760405162461bcd60e51b815260206004820152602360248201527f566572696669636174696f6e3a207665726966792070726f6f6620746f6f206c60448201526261746560e81b60648201526084016103e2565b336000908152600b602052604090205460ff1615610a935760405162461bcd60e51b815260206004820152602960248201527f566572696669636174696f6e3a2063616c6c65722068617320616c726561647960448201527f207665726966696564000000000000000000000000000000000000000000000060648201526084016103e2565b8115610aed57600c80546001810182556000919091527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c701805473ffffffffffffffffffffffffffffffffffffffff191633179055610b3d565b600d80546001810182556000919091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb501805473ffffffffffffffffffffffffffffffffffffffff1916331790555b336000908152600b60209081526040918290208054600160ff199091168117909155600254905483516307fa4f9360e11b815293518615159492841b63ffffffff1916936001600160a01b0390921692630ff49f26926004808301939192829003018186803b158015610baf57600080fd5b505afa158015610bc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be791906111cc565b63ffffffff19167f34f93b456c3ffdb7064f4ce11127d2f8d8cb5d8a040b8afbdc223656648f56ef610c17610ce6565b60405163ffffffff19909116815260200160405180910390a4600754600c5410610c74576040516001907f22ef6b57ff0520c18bf784aafde82545aaf4682cfe59344462f5b1cbdf67040590600090a2610c6f610d5c565b610cb2565b600754600d5410610cb2576040516000907f22ef6b57ff0520c18bf784aafde82545aaf4682cfe59344462f5b1cbdf670405908290a2610cb2610fd3565b5050565b60085460009060ff166001148015610cd15750610cd16104ef565b15610cde5750600061037f565b50600161037f565b60085460009060019060ff168114610d4c5760405162461bcd60e51b8152602060048201526024808201527f566572696669636174696f6e3a206e6f742061742072657175697265642073746044820152636174757360e01b60648201526084016103e2565b5050600854610100900460201b90565b6001805460048054600254604051630e9af4c960e01b81526001600160a01b0390941694630e9af4c9949293610dad9360209390931b920163ffffffff199290921682521515602082015260400190565b6000604051808303818588803b158015610dc657600080fd5b505af1158015610dda573d6000803e3d6000fd5b50506001546004546040519081526001600160a01b039091169350600092507f5f0d8a7b2a35234a1623665f50a2ffb18dcc0b55afb65b95c44b94a9c4f2d4ce915060200160405180910390a36003546005546040516000926001600160a01b03169180156108fc029184818181858888f1935050505090508015610ea2576003546005546040519081526001600160a01b03909116906001907f5f0d8a7b2a35234a1623665f50a2ffb18dcc0b55afb65b95c44b94a9c4f2d4ce9060200160405180910390a35b60005b600c54811015610f90576000600c8281548110610ed257634e487b7160e01b600052603260045260246000fd5b60009182526020822001546006546040516001600160a01b039092169281156108fc029290818181858888f1935050505090508015610f7d57600c8281548110610f2c57634e487b7160e01b600052603260045260246000fd5b600091825260209182902001546006546040519081526001600160a01b03909116916002917f5f0d8a7b2a35234a1623665f50a2ffb18dcc0b55afb65b95c44b94a9c4f2d4ce910160405180910390a35b5080610f88816111e8565b915050610ea5565b503031156104da57600080546040516001600160a01b0390911691303180156108fc02929091818181858888f19350505050158015610cb2573d6000803e3d6000fd5b600154600254604051630e9af4c960e01b815260209190911b63ffffffff19166004820152600060248201526001600160a01b0390911690630e9af4c990604401600060405180830381600087803b15801561102e57600080fd5b505af1158015611042573d6000803e3d6000fd5b50506003546005546040516001600160a01b03909216935080156108fc029250906000818181858888f19350505050158015611082573d6000803e3d6000fd5b5060005b600d548110156110f657600d81815481106110b157634e487b7160e01b600052603260045260246000fd5b60009182526020822001546006546040516001600160a01b039092169281156108fc029290818181858888f193505050505080806110ee906111e8565b915050611086565b503031156104dc57600080546040516001600160a01b0390911691303180156108fc02929091818181858888f193505050501580156104da573d6000803e3d6000fd5b60006020828403121561114a578081fd5b81356111558161120f565b9392505050565b60006020828403121561116d578081fd5b81516111558161120f565b600060208284031215611189578081fd5b813561115581611224565b6000602082840312156111a5578081fd5b815161115581611224565b6000602082840312156111c1578081fd5b813561115581611232565b6000602082840312156111dd578081fd5b815161115581611232565b600060001982141561120857634e487b7160e01b81526011600452602481fd5b5060010190565b6001600160a01b03811681146104da57600080fd5b80151581146104da57600080fd5b63ffffffff19811681146104da57600080fdfea26469706673582212206583d6ed1d66fd72fc4917b1d1b252dea031e7936f361921930932f1d6e227d364736f6c63430008030033608060405260405161090e38038061090e83398101604081905261002291610094565b60098054336001600160a01b031991821617909155600780549091166001600160a01b038516179055600880547fffffffff0000000000000000000000000000000000000000000000000000000016602084901c179055600061008582346100ea565b60055550600655506101239050565b6000806000606084860312156100a8578283fd5b83516001600160a01b03811681146100be578384fd5b602085015190935063ffffffff19811681146100d8578283fd5b80925050604084015190509250925092565b60008261011e577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b6107dc806101326000396000f3fe6080604052600436106100965760003560e01c80634ffe2a8b116100695780638da5cb5b1161004e5780638da5cb5b14610191578063971f8bb1146101b1578063bdc63c84146101d157610096565b80634ffe2a8b1461014e578063826d3dec1461016e57610096565b80630e9af4c91461009b5780630ff49f26146100b05780632e53c5b0146100e557806336cf7c871461011d575b600080fd5b6100ae6100a93660046106b2565b6101e6565b005b3480156100bc57600080fd5b506008546100ca9060201b81565b60405163ffffffff1990911681526020015b60405180910390f35b3480156100f157600080fd5b50600954610105906001600160a01b031681565b6040516001600160a01b0390911681526020016100dc565b34801561012957600080fd5b5060095461013e90600160a01b900460ff1681565b60405190151581526020016100dc565b34801561015a57600080fd5b50600a54610105906001600160a01b031681565b34801561017a57600080fd5b50610183610320565b6040519081526020016100dc565b34801561019d57600080fd5b50600754610105906001600160a01b031681565b3480156101bd57600080fd5b506100ae6101cc366004610684565b610457565b3480156101dd57600080fd5b50610183610511565b600a546001600160a01b0316331461026b5760405162461bcd60e51b815260206004820152603260248201527f536563746f723a2063616e206f6e6c792062652063616c6c656420627920636f60448201527f727265637420766572696669636174696f6e000000000000000000000000000060648201526084015b60405180910390fd5b60008082156102865734915061028082610535565b506102ca565b61028e610320565b6009546040519192506001600160a01b0316903480156108fc02916000818181858888f193505050501580156102c8573d6000803e3d6000fd5b505b6040805163ffffffff19861681528415156020820152908101839052606081018290527f194223085d96876503fca1fe649fa0ed49ad5c5a9f80c7826f35e94caf9923dd9060800160405180910390a150505050565b6009546000906001600160a01b03163314806103465750600a546001600160a01b031633145b6103b85760405162461bcd60e51b815260206004820152603060248201527f536563746f723a2063616c6c657220646f6573206e6f7420686176652070726960448201527f76696c65676520746f2070756e697368000000000000000000000000000000006064820152608401610262565b6006546005546103c8919061070f565b6103d290826106f7565b6003549091506103e290826106f7565b90508015610426576009546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610424573d6000803e3d6000fd5b505b600980547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b17905590565b6009546001600160a01b031633146104d75760405162461bcd60e51b815260206004820152602660248201527f536563746f723a2063616e206f6e6c792062652063616c6c656420627920547560448201527f72626f46696c00000000000000000000000000000000000000000000000000006064820152608401610262565b600a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6006546005546000916105239161070f565b60035461053091906106f7565b905090565b6006546000901561057a5760055461054d90826106f7565b60068054919250600061055f83610745565b9091555050600480549060006105748361075c565b91905055505b60025460015483916000918291610590916106f7565b81526020019081526020016000208190555081600060030160008282546105b791906106f7565b909155505060045460025410156105e9576001600060020160008282546105de91906106f7565b9091555061063d9050565b60015460009081526020819052604090205461060590826106f7565b905060016000600101600082825461061d91906106f7565b90915550506003805482919060009061063790849061072e565b90915550505b801561067f576007546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561067d573d6000803e3d6000fd5b505b919050565b600060208284031215610695578081fd5b81356001600160a01b03811681146106ab578182fd5b9392505050565b600080604083850312156106c4578081fd5b823563ffffffff19811681146106d8578182fd5b9150602083013580151581146106ec578182fd5b809150509250929050565b6000821982111561070a5761070a610777565b500190565b600081600019048311821515161561072957610729610777565b500290565b60008282101561074057610740610777565b500390565b60008161075457610754610777565b506000190190565b600060001982141561077057610770610777565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220873961d2311ada93315524aed9260ad0c40ea46f854a5bc740c67b3a4cec61bb64736f6c63430008030033a26469706673582212208022a180e6cebe479fa697c3237dd538e54d6295825954a455b4ef98b949ee2164736f6c63430008030033",
    "deployedBytecode": "0x608060405260043610620002355760003560e01c806360eb95491162000139578063b25d8cee11620000c1578063dc606461116200008b578063e4933458116200006d578063e49334581462000708578063f69bce241462000720578063fc096c4f1462000738576200023d565b8063dc60646114620006be578063e23823c914620006e3576200023d565b8063b25d8cee1462000627578063c3c56e66146200063e578063d41d0e5c1462000663578063d547741f1462000699576200023d565b80638f84940a11620001035780638f84940a146200059857806391d1485414620005b0578063a217fddf14620005f8578063af22c359146200060f576200023d565b806360eb954914620004fb57806371c7c90c1462000536578063779972da146200055b5780638bbcf85f1462000580576200023d565b80633a8c266a11620001bd578063551edf641162000187578063551edf6414620004705780635c488da614620004885780635ddb379714620004be5780635e9dc50514620004d6576200023d565b80633a8c266a14620003c15780633ccfd60b146200041b5780633fd8b02f146200043357806352baa7c7146200044b576200023d565b8063225bb28611620001ff578063225bb286146200031e578063248a9ca314620003435780632f2ff15d146200037757806336568abe146200039c576200023d565b806301ffc9a714620002425780630217516a146200027c578063066b57ef14620002c15780630c8070f514620002f7576200023d565b366200023d57005b600080fd5b3480156200024f57600080fd5b50620002676200026136600462001e77565b6200075d565b60405190151581526020015b60405180910390f35b3480156200028957600080fd5b50620002b27ffc07948174d5b432cfe29332fd123b17c444c9f18f139c322a618ec51a67a47581565b60405190815260200162000273565b348015620002ce57600080fd5b50620002b27f27878d6fd2352e8c530d873016f67bb748d79859c781b7c2453cc2caffa896ff81565b3480156200030457600080fd5b506200031c6200031636600462001e37565b620007f9565b005b3480156200032b57600080fd5b506200031c6200033d36600462001e37565b620008a8565b3480156200035057600080fd5b50620002b26200036236600462001e37565b60009081526020819052604090206001015490565b3480156200038457600080fd5b506200031c6200039636600462001e50565b62000953565b348015620003a957600080fd5b506200031c620003bb36600462001e50565b620009f6565b348015620003ce57600080fd5b5062000402620003e036600462001df9565b63ffffffff19166000908152600860205260409020546001600160a01b031690565b6040516001600160a01b03909116815260200162000273565b3480156200042857600080fd5b506200031c62000a82565b3480156200044057600080fd5b50620002b260075481565b3480156200045857600080fd5b506200031c6200046a36600462001e37565b62000b59565b3480156200047d57600080fd5b50620002b260045481565b3480156200049557600080fd5b50620002b27fc92661711815e9b609b0f92f233af70537e889630fb3ca91ccc85ac8f98c784f81565b348015620004cb57600080fd5b50620002b260055481565b348015620004e357600080fd5b506200031c620004f536600462001e37565b62000c04565b3480156200050857600080fd5b50620002676200051a36600462001df9565b63ffffffff19166000908152600a602052604090205460ff1690565b3480156200054357600080fd5b506200031c6200055536600462001df9565b62000caf565b3480156200056857600080fd5b506200031c6200057a36600462001e37565b62001132565b3480156200058d57600080fd5b50620002b2620011dd565b348015620005a557600080fd5b50620002b260025481565b348015620005bd57600080fd5b5062000267620005cf36600462001e50565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156200060557600080fd5b50620002b2600081565b3480156200061c57600080fd5b50620002b260035481565b6200031c6200063836600462001d9a565b620011f6565b3480156200064b57600080fd5b50620002676200065d36600462001d74565b6200141c565b3480156200067057600080fd5b50620002b27fd262a1e181ec035692bcc8c920b971bccc173d5263f104f91c1561b5033679dd81565b348015620006a657600080fd5b506200031c620006b836600462001e50565b6200145d565b348015620006cb57600080fd5b506200031c620006dd36600462001e37565b620014ee565b348015620006f057600080fd5b50620004026200070236600462001e37565b62001599565b3480156200071557600080fd5b50620002b260015481565b3480156200072d57600080fd5b50620002b260065481565b3480156200074557600080fd5b506200031c6200075736600462001e37565b620015d8565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b000000000000000000000000000000000000000000000000000000001480620007f157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b90505b919050565b3360009081527fae0e3e90079b140685ffe82811e4f12bdad5cad554501b8278d0f5a224706b6d602052604090205460ff16620008a35760405162461bcd60e51b815260206004820152603d60248201527f547572626f46696c3a2063616c6c657220646f6573206e6f742068617665207060448201527f726976696c65676520746f206d61696e7461696e20547572626f46696c00000060648201526084015b60405180910390fd5b600555565b3360009081527fae0e3e90079b140685ffe82811e4f12bdad5cad554501b8278d0f5a224706b6d602052604090205460ff166200094e5760405162461bcd60e51b815260206004820152603d60248201527f547572626f46696c3a2063616c6c657220646f6573206e6f742068617665207060448201527f726976696c65676520746f206d61696e7461696e20547572626f46696c00000060648201526084016200089a565b600655565b60008281526020819052604090206001015462000972905b33620005cf565b620009e65760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e74000000000000000000000000000000000060648201526084016200089a565b620009f2828262001683565b5050565b6001600160a01b038116331462000a765760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016200089a565b620009f2828262001723565b3360009081527fae0e3e90079b140685ffe82811e4f12bdad5cad554501b8278d0f5a224706b6d602052604090205460ff1662000b285760405162461bcd60e51b815260206004820152603d60248201527f547572626f46696c3a2063616c6c657220646f6573206e6f742068617665207060448201527f726976696c65676520746f206d61696e7461696e20547572626f46696c00000060648201526084016200089a565b6040513390303180156108fc02916000818181858888f1935050505015801562000b56573d6000803e3d6000fd5b50565b3360009081527fae0e3e90079b140685ffe82811e4f12bdad5cad554501b8278d0f5a224706b6d602052604090205460ff1662000bff5760405162461bcd60e51b815260206004820152603d60248201527f547572626f46696c3a2063616c6c657220646f6573206e6f742068617665207060448201527f726976696c65676520746f206d61696e7461696e20547572626f46696c00000060648201526084016200089a565b600455565b3360009081527fae0e3e90079b140685ffe82811e4f12bdad5cad554501b8278d0f5a224706b6d602052604090205460ff1662000caa5760405162461bcd60e51b815260206004820152603d60248201527f547572626f46696c3a2063616c6c657220646f6573206e6f742068617665207060448201527f726976696c65676520746f206d61696e7461696e20547572626f46696c00000060648201526084016200089a565b600155565b3360009081527fceb024648002b7aa8bf572054d62dd3bc301b27fee40c0676cfe5d7af457c179602052604090205460ff1662000d555760405162461bcd60e51b815260206004820152603760248201527f547572626f46696c3a2063616c6c657220646f6573206e6f742068617665207060448201527f726976696c65676520746f207375626d6974207365656400000000000000000060648201526084016200089a565b63ffffffff1981166000908152600a602052604090205460ff161562000dbe5760405162461bcd60e51b815260206004820152601b60248201527f547572626f46696c3a207365656420616c72656164792075736564000000000060448201526064016200089a565b60095462000e0f5760405162461bcd60e51b815260206004820152601e60248201527f547572626f46696c3a206e6f20617661696c61626c6520736563746f7273000060448201526064016200089a565b63ffffffff1981166000908152600a602090815260408220805460ff191660011790556009549062000e4690429085901c62001f0c565b62000e52919062001f48565b9050805b62000e6181620017a3565b62000eeb5760095462000e7682600162001ef1565b62000e82919062001f48565b6009549091508210158062000e9657508181145b1562000ee55760405162461bcd60e51b815260206004820152601e60248201527f547572626f46696c3a206e6f20617661696c61626c6520736563746f7273000060448201526064016200089a565b62000e56565b60006009828154811062000f0f57634e487b7160e01b600052603260045260246000fd5b60009182526020822001546003546006546001600160a01b03909216935062000f389162001f0c565b60045460055462000f4a919062001ef1565b62000f56919062001ef1565b905060008183873360015460025460035460055460045460065460405162000f7e9062001d58565b6001600160a01b03998a16815263ffffffff1990981660208901529790951660408701526060860193909352608085019190915260a084015260c083015260e0820152610100810191909152610120016040518091039082f090508015801562000fec573d6000803e3d6000fd5b506040517f971f8bb10000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301529192509084169063971f8bb190602401600060405180830381600087803b1580156200104e57600080fd5b505af115801562001063573d6000803e3d6000fd5b50505050826001600160a01b0316630ff49f266040518163ffffffff1660e01b815260040160206040518083038186803b158015620010a157600080fd5b505afa158015620010b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010dc919062001e18565b6040805163ffffffff1989811682526001600160a01b038516602083015292909216917fc9204d0197ba560c2d53b10db6f2ae521b7171c0936c86d1443ec9aca3cc042f910160405180910390a2505050505050565b3360009081527fae0e3e90079b140685ffe82811e4f12bdad5cad554501b8278d0f5a224706b6d602052604090205460ff16620011d85760405162461bcd60e51b815260206004820152603d60248201527f547572626f46696c3a2063616c6c657220646f6573206e6f742068617665207060448201527f726976696c65676520746f206d61696e7461696e20547572626f46696c00000060648201526084016200089a565b600755565b6000600754600554620011f1919062001f0c565b905090565b3360009081527fa89c0f8ba48788a63faf58e7c9490f238a84082efa793d1a35ec2c48e19154f4602052604090205460ff166200129c5760405162461bcd60e51b815260206004820152603960248201527f547572626f46696c3a2063616c6c657220646f6573206e6f742068617665207060448201527f726976696c65676520746f207375626d697420736563746f720000000000000060648201526084016200089a565b600754600554620012ae919062001f0c565b341015620012ff5760405162461bcd60e51b815260206004820152601c60248201527f547572626f46696c3a206e6f7420656e6f756768206465706f7369740000000060448201526064016200089a565b6000348383600754604051620013159062001d66565b6001600160a01b03909316835263ffffffff19909116602083015260408201526060016040518091039082f090508015801562001356573d6000803e3d6000fd5b5063ffffffff1983166000818152600860209081526040808320805473ffffffffffffffffffffffffffffffffffffffff199081166001600160a01b038881169182179093556009805460018101825596527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af9095018054909116851790558151908916815291820193909352918201529091507f34da889154586424bd6c1f8c6719be8b74e3cc57fb04de7f502945dc6c1299439060600160405180910390a1505050565b6001600160a01b03811660009081527f70912f16addbccb216ad6bdad396e8fdf5835d1a3528876519bbd4a04c7c193b602052604081205460ff16620007f1565b6000828152602081905260409020600101546200147a906200096b565b62000a765760405162461bcd60e51b815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b650000000000000000000000000000000060648201526084016200089a565b3360009081527fae0e3e90079b140685ffe82811e4f12bdad5cad554501b8278d0f5a224706b6d602052604090205460ff16620015945760405162461bcd60e51b815260206004820152603d60248201527f547572626f46696c3a2063616c6c657220646f6573206e6f742068617665207060448201527f726976696c65676520746f206d61696e7461696e20547572626f46696c00000060648201526084016200089a565b600355565b600060098281548110620015bd57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031692915050565b3360009081527fae0e3e90079b140685ffe82811e4f12bdad5cad554501b8278d0f5a224706b6d602052604090205460ff166200167e5760405162461bcd60e51b815260206004820152603d60248201527f547572626f46696c3a2063616c6c657220646f6573206e6f742068617665207060448201527f726976696c65676520746f206d61696e7461696e20547572626f46696c00000060648201526084016200089a565b600255565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620009f2576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620016df3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1615620009f2576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60008060098381548110620017c857634e487b7160e01b600052603260045260246000fd5b60009182526020918290200154604080517f36cf7c8700000000000000000000000000000000000000000000000000000000815290516001600160a01b03909216935083926336cf7c8792600480840193829003018186803b1580156200182e57600080fd5b505afa15801562001843573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001869919062001dd7565b1562001885576200187a8362001b8c565b6001915050620007f4565b60006001600160a01b0316816001600160a01b0316634ffe2a8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015620018ca57600080fd5b505afa158015620018df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001905919062001eb9565b6001600160a01b0316141562001920576001915050620007f4565b806001600160a01b0316634ffe2a8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200195a57600080fd5b505afa1580156200196f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001995919062001eb9565b6001600160a01b031663047168e06040518163ffffffff1660e01b815260040160206040518083038186803b158015620019ce57600080fd5b505afa158015620019e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a09919062001dd7565b1562001a9257806001600160a01b031663826d3dec6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801562001a4b57600080fd5b505af115801562001a60573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a86919062001ed8565b506200187a8362001b8c565b806001600160a01b0316634ffe2a8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801562001acc57600080fd5b505afa15801562001ae1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b07919062001eb9565b6001600160a01b031663ed32cc6d6040518163ffffffff1660e01b815260040160206040518083038186803b15801562001b4057600080fd5b505afa15801562001b55573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b7b919062001dd7565b156200187a576001915050620007f4565b60006009828154811062001bb057634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600980546001600160a01b0390921692509062001bdc9060019062001f2e565b8154811062001bfb57634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600980546001600160a01b03909216918490811062001c3657634e487b7160e01b600052603260045260246000fd5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600980548062001c8457634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160006101000a8154906001600160a01b03021916905590556000816001600160a01b0316630ff49f266040518163ffffffff1660e01b815260040160206040518083038186803b15801562001ce857600080fd5b505afa15801562001cfd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d23919062001e18565b63ffffffff19166000908152600860205260409020805473ffffffffffffffffffffffffffffffffffffffff19169055505050565b61152a8062001faa83390190565b61090e80620034d483390190565b60006020828403121562001d86578081fd5b813562001d938162001f7f565b9392505050565b6000806040838503121562001dad578081fd5b823562001dba8162001f7f565b9150602083013562001dcc8162001f95565b809150509250929050565b60006020828403121562001de9578081fd5b8151801515811462001d93578182fd5b60006020828403121562001e0b578081fd5b813562001d938162001f95565b60006020828403121562001e2a578081fd5b815162001d938162001f95565b60006020828403121562001e49578081fd5b5035919050565b6000806040838503121562001e63578182fd5b82359150602083013562001dcc8162001f7f565b60006020828403121562001e89578081fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811462001d93578182fd5b60006020828403121562001ecb578081fd5b815162001d938162001f7f565b60006020828403121562001eea578081fd5b5051919050565b6000821982111562001f075762001f0762001f69565b500190565b600081600019048311821515161562001f295762001f2962001f69565b500290565b60008282101562001f435762001f4362001f69565b500390565b60008262001f6457634e487b7160e01b81526012600452602481fd5b500690565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811462000b5657600080fd5b63ffffffff198116811462000b5657600080fdfe60806040526040516200152a3803806200152a8339810160408190526200002691620001a5565b6200003284826200024e565b6200003e838562000233565b6200004a919062000233565b341015620000de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f566572696669636174696f6e3a206e6f7420656e6f7567682066756e6473206660448201527f6f72207265776172647300000000000000000000000000000000000000000000606482015260840160405180910390fd5b60008054336001600160a01b0319918216179091556001805482166001600160a01b038c811691909117909155600280547fffffffff000000000000000000000000000000000000000000000000000000001660208c901c1790556003805490921690891617905560048390556005829055600681905562000161864362000233565b60098190556200017390869062000233565b600a55505050600755506200029f9350505050565b80516001600160a01b0381168114620001a057600080fd5b919050565b60008060008060008060008060006101208a8c031215620001c4578485fd5b620001cf8a62000188565b985060208a015163ffffffff1981168114620001e9578586fd5b9750620001f960408b0162000188565b965060608a0151955060808a0151945060a08a0151935060c08a0151925060e08a015191506101008a015190509295985092959850929598565b6000821982111562000249576200024962000270565b500190565b60008160001904831182151516156200026b576200026b62000270565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b61127b80620002af6000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c8063a0e45278116100f9578063c27c251411610097578063ed32cc6d11610071578063ed32cc6d14610329578063f69bce2414610331578063faf924cf1461033a578063fda5ee8914610342576101b9565b8063c27c2514146102f3578063d245fbe114610316578063eb273f97146102ba576101b9565b8063a9cc4718116100d3578063a9cc4718146102c2578063af22c359146102cf578063b5a85222146102d8578063b7aec7ff146102eb576101b9565b8063a0e45278146102a5578063a7a1ed72146102ad578063a9666725146102ba576101b9565b8063551edf6411610166578063675b591d11610140578063675b591d1461024e5780637d94792a146102725780638e3475fc1461029557806396ae8f7f1461029d576101b9565b8063551edf64146102565780635b9806281461025f5780635ddb379714610269576101b9565b8063200d2ed211610197578063200d2ed21461021c5780632e53c5b01461023b578063346b7ba21461024e576101b9565b8063047168e0146101be57806316f81cd8146101db578063177536ea146101f1575b600080fd5b6101c6610355565b60405190151581526020015b60405180910390f35b6101e3610382565b6040519081526020016101d2565b600154610204906001600160a01b031681565b6040516001600160a01b0390911681526020016101d2565b6008546102299060ff1681565b60405160ff90911681526020016101d2565b600054610204906001600160a01b031681565b610229600081565b6101e360055481565b6102676103f3565b005b6101e360045481565b60025461027f9060201b81565b60405163ffffffff1990911681526020016101d2565b610229600281565b6101c66104de565b6101c66104ef565b600754600c5410156101c6565b610229600181565b600754600d5410156101c6565b6101e360075481565b6102676102e63660046111b0565b6104f9565b6101e36107d8565b6101c6610301366004611139565b600b6020526000908152604090205460ff1681565b610267610324366004611178565b610846565b6101c6610cb6565b6101e360065481565b61027f610ce6565b600354610204906001600160a01b031681565b60085460009060ff1615801561036e575061036e6104de565b1561037b5750600161037f565b5060005b90565b600854600090819060ff16156103eb5760405162461bcd60e51b8152602060048201526024808201527f566572696669636174696f6e3a206e6f742061742072657175697265642073746044820152636174757360e01b60648201526084015b60405180910390fd5b505060095490565b600754600d541080156104095750600754600c54105b801561042657506104186104de565b8061042657506104266104ef565b6104985760405162461bcd60e51b815260206004820152602a60248201527f566572696669636174696f6e3a206e6f7420616c6c6f77656420746f20636f6c60448201527f6c6563742066756e64730000000000000000000000000000000000000000000060648201526084016103e2565b3031156104dc57600080546040516001600160a01b0390911691303180156108fc02929091818181858888f193505050501580156104da573d6000803e3d6000fd5b505b565b60006104e8610382565b4311905090565b60006104e86107d8565b60085460009060ff161561055b5760405162461bcd60e51b8152602060048201526024808201527f566572696669636174696f6e3a206e6f742061742072657175697265642073746044820152636174757360e01b60648201526084016103e2565b600154604080517f8da5cb5b000000000000000000000000000000000000000000000000000000008152905133926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b1580156105b857600080fd5b505afa1580156105cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f0919061115c565b6001600160a01b03161461066c5760405162461bcd60e51b815260206004820152602860248201527f566572696669636174696f6e3a2063616c6c6572206973206e6f74207365637460448201527f6f72206f776e657200000000000000000000000000000000000000000000000060648201526084016103e2565b6009544311156106ca5760405162461bcd60e51b815260206004820152602360248201527f566572696669636174696f6e3a207375626d69742070726f6f6620746f6f206c60448201526261746560e81b60648201526084016103e2565b6008805460017fffffff0000000000000000000000000000000000000000000000000000000000909116610100602086811c9190910260ff19169190911782179092556002549054604080516307fa4f9360e11b8152905192841b63ffffffff1916936001600160a01b0390921692630ff49f2692600480840193919291829003018186803b15801561075c57600080fd5b505afa158015610770573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079491906111cc565b60405163ffffffff19858116825291909116907f6d8409d5130d9982d8d4e6f32b95a9073d7f0e7aef72c00487f1507483a270ae9060200160405180910390a35050565b60085460009060019060ff16811461083e5760405162461bcd60e51b8152602060048201526024808201527f566572696669636174696f6e3a206e6f742061742072657175697265642073746044820152636174757360e01b60648201526084016103e2565b5050600a5490565b60085460019060ff1681146108a95760405162461bcd60e51b8152602060048201526024808201527f566572696669636174696f6e3a206e6f742061742072657175697265642073746044820152636174757360e01b60648201526084016103e2565b6000546040517fc3c56e660000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b039091169063c3c56e669060240160206040518083038186803b15801561090557600080fd5b505afa158015610919573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093d9190611194565b6109af5760405162461bcd60e51b815260206004820152603560248201527f566572696669636174696f6e3a20646f6573206e6f742068617665207072697660448201527f696c65676520746f207665726966792070726f6f66000000000000000000000060648201526084016103e2565b600a54431115610a0d5760405162461bcd60e51b815260206004820152602360248201527f566572696669636174696f6e3a207665726966792070726f6f6620746f6f206c60448201526261746560e81b60648201526084016103e2565b336000908152600b602052604090205460ff1615610a935760405162461bcd60e51b815260206004820152602960248201527f566572696669636174696f6e3a2063616c6c65722068617320616c726561647960448201527f207665726966696564000000000000000000000000000000000000000000000060648201526084016103e2565b8115610aed57600c80546001810182556000919091527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c701805473ffffffffffffffffffffffffffffffffffffffff191633179055610b3d565b600d80546001810182556000919091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb501805473ffffffffffffffffffffffffffffffffffffffff1916331790555b336000908152600b60209081526040918290208054600160ff199091168117909155600254905483516307fa4f9360e11b815293518615159492841b63ffffffff1916936001600160a01b0390921692630ff49f26926004808301939192829003018186803b158015610baf57600080fd5b505afa158015610bc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be791906111cc565b63ffffffff19167f34f93b456c3ffdb7064f4ce11127d2f8d8cb5d8a040b8afbdc223656648f56ef610c17610ce6565b60405163ffffffff19909116815260200160405180910390a4600754600c5410610c74576040516001907f22ef6b57ff0520c18bf784aafde82545aaf4682cfe59344462f5b1cbdf67040590600090a2610c6f610d5c565b610cb2565b600754600d5410610cb2576040516000907f22ef6b57ff0520c18bf784aafde82545aaf4682cfe59344462f5b1cbdf670405908290a2610cb2610fd3565b5050565b60085460009060ff166001148015610cd15750610cd16104ef565b15610cde5750600061037f565b50600161037f565b60085460009060019060ff168114610d4c5760405162461bcd60e51b8152602060048201526024808201527f566572696669636174696f6e3a206e6f742061742072657175697265642073746044820152636174757360e01b60648201526084016103e2565b5050600854610100900460201b90565b6001805460048054600254604051630e9af4c960e01b81526001600160a01b0390941694630e9af4c9949293610dad9360209390931b920163ffffffff199290921682521515602082015260400190565b6000604051808303818588803b158015610dc657600080fd5b505af1158015610dda573d6000803e3d6000fd5b50506001546004546040519081526001600160a01b039091169350600092507f5f0d8a7b2a35234a1623665f50a2ffb18dcc0b55afb65b95c44b94a9c4f2d4ce915060200160405180910390a36003546005546040516000926001600160a01b03169180156108fc029184818181858888f1935050505090508015610ea2576003546005546040519081526001600160a01b03909116906001907f5f0d8a7b2a35234a1623665f50a2ffb18dcc0b55afb65b95c44b94a9c4f2d4ce9060200160405180910390a35b60005b600c54811015610f90576000600c8281548110610ed257634e487b7160e01b600052603260045260246000fd5b60009182526020822001546006546040516001600160a01b039092169281156108fc029290818181858888f1935050505090508015610f7d57600c8281548110610f2c57634e487b7160e01b600052603260045260246000fd5b600091825260209182902001546006546040519081526001600160a01b03909116916002917f5f0d8a7b2a35234a1623665f50a2ffb18dcc0b55afb65b95c44b94a9c4f2d4ce910160405180910390a35b5080610f88816111e8565b915050610ea5565b503031156104da57600080546040516001600160a01b0390911691303180156108fc02929091818181858888f19350505050158015610cb2573d6000803e3d6000fd5b600154600254604051630e9af4c960e01b815260209190911b63ffffffff19166004820152600060248201526001600160a01b0390911690630e9af4c990604401600060405180830381600087803b15801561102e57600080fd5b505af1158015611042573d6000803e3d6000fd5b50506003546005546040516001600160a01b03909216935080156108fc029250906000818181858888f19350505050158015611082573d6000803e3d6000fd5b5060005b600d548110156110f657600d81815481106110b157634e487b7160e01b600052603260045260246000fd5b60009182526020822001546006546040516001600160a01b039092169281156108fc029290818181858888f193505050505080806110ee906111e8565b915050611086565b503031156104dc57600080546040516001600160a01b0390911691303180156108fc02929091818181858888f193505050501580156104da573d6000803e3d6000fd5b60006020828403121561114a578081fd5b81356111558161120f565b9392505050565b60006020828403121561116d578081fd5b81516111558161120f565b600060208284031215611189578081fd5b813561115581611224565b6000602082840312156111a5578081fd5b815161115581611224565b6000602082840312156111c1578081fd5b813561115581611232565b6000602082840312156111dd578081fd5b815161115581611232565b600060001982141561120857634e487b7160e01b81526011600452602481fd5b5060010190565b6001600160a01b03811681146104da57600080fd5b80151581146104da57600080fd5b63ffffffff19811681146104da57600080fdfea26469706673582212206583d6ed1d66fd72fc4917b1d1b252dea031e7936f361921930932f1d6e227d364736f6c63430008030033608060405260405161090e38038061090e83398101604081905261002291610094565b60098054336001600160a01b031991821617909155600780549091166001600160a01b038516179055600880547fffffffff0000000000000000000000000000000000000000000000000000000016602084901c179055600061008582346100ea565b60055550600655506101239050565b6000806000606084860312156100a8578283fd5b83516001600160a01b03811681146100be578384fd5b602085015190935063ffffffff19811681146100d8578283fd5b80925050604084015190509250925092565b60008261011e577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b6107dc806101326000396000f3fe6080604052600436106100965760003560e01c80634ffe2a8b116100695780638da5cb5b1161004e5780638da5cb5b14610191578063971f8bb1146101b1578063bdc63c84146101d157610096565b80634ffe2a8b1461014e578063826d3dec1461016e57610096565b80630e9af4c91461009b5780630ff49f26146100b05780632e53c5b0146100e557806336cf7c871461011d575b600080fd5b6100ae6100a93660046106b2565b6101e6565b005b3480156100bc57600080fd5b506008546100ca9060201b81565b60405163ffffffff1990911681526020015b60405180910390f35b3480156100f157600080fd5b50600954610105906001600160a01b031681565b6040516001600160a01b0390911681526020016100dc565b34801561012957600080fd5b5060095461013e90600160a01b900460ff1681565b60405190151581526020016100dc565b34801561015a57600080fd5b50600a54610105906001600160a01b031681565b34801561017a57600080fd5b50610183610320565b6040519081526020016100dc565b34801561019d57600080fd5b50600754610105906001600160a01b031681565b3480156101bd57600080fd5b506100ae6101cc366004610684565b610457565b3480156101dd57600080fd5b50610183610511565b600a546001600160a01b0316331461026b5760405162461bcd60e51b815260206004820152603260248201527f536563746f723a2063616e206f6e6c792062652063616c6c656420627920636f60448201527f727265637420766572696669636174696f6e000000000000000000000000000060648201526084015b60405180910390fd5b60008082156102865734915061028082610535565b506102ca565b61028e610320565b6009546040519192506001600160a01b0316903480156108fc02916000818181858888f193505050501580156102c8573d6000803e3d6000fd5b505b6040805163ffffffff19861681528415156020820152908101839052606081018290527f194223085d96876503fca1fe649fa0ed49ad5c5a9f80c7826f35e94caf9923dd9060800160405180910390a150505050565b6009546000906001600160a01b03163314806103465750600a546001600160a01b031633145b6103b85760405162461bcd60e51b815260206004820152603060248201527f536563746f723a2063616c6c657220646f6573206e6f7420686176652070726960448201527f76696c65676520746f2070756e697368000000000000000000000000000000006064820152608401610262565b6006546005546103c8919061070f565b6103d290826106f7565b6003549091506103e290826106f7565b90508015610426576009546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610424573d6000803e3d6000fd5b505b600980547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b17905590565b6009546001600160a01b031633146104d75760405162461bcd60e51b815260206004820152602660248201527f536563746f723a2063616e206f6e6c792062652063616c6c656420627920547560448201527f72626f46696c00000000000000000000000000000000000000000000000000006064820152608401610262565b600a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6006546005546000916105239161070f565b60035461053091906106f7565b905090565b6006546000901561057a5760055461054d90826106f7565b60068054919250600061055f83610745565b9091555050600480549060006105748361075c565b91905055505b60025460015483916000918291610590916106f7565b81526020019081526020016000208190555081600060030160008282546105b791906106f7565b909155505060045460025410156105e9576001600060020160008282546105de91906106f7565b9091555061063d9050565b60015460009081526020819052604090205461060590826106f7565b905060016000600101600082825461061d91906106f7565b90915550506003805482919060009061063790849061072e565b90915550505b801561067f576007546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561067d573d6000803e3d6000fd5b505b919050565b600060208284031215610695578081fd5b81356001600160a01b03811681146106ab578182fd5b9392505050565b600080604083850312156106c4578081fd5b823563ffffffff19811681146106d8578182fd5b9150602083013580151581146106ec578182fd5b809150509250929050565b6000821982111561070a5761070a610777565b500190565b600081600019048311821515161561072957610729610777565b500290565b60008282101561074057610740610777565b500390565b60008161075457610754610777565b506000190190565b600060001982141561077057610770610777565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220873961d2311ada93315524aed9260ad0c40ea46f854a5bc740c67b3a4cec61bb64736f6c63430008030033a26469706673582212208022a180e6cebe479fa697c3237dd538e54d6295825954a455b4ef98b949ee2164736f6c63430008030033",
    "linkReferences": {},
    "deployedLinkReferences": {}
}
