{
  "_format": "hh-sol-artifact-1",
  "contractName": "Claim",
  "sourceName": "contracts/claim/Claim.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        }
      ],
      "name": "AddressEmptyCode",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AddressZero",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "blockHash",
          "type": "bytes32"
        }
      ],
      "name": "BlockHashNotExists",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ClaimAggregatorMismatch",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ClaimChainVerificationFailed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ClaimProofVerificationFailed",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "ERC1967InvalidImplementation",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC1967NonPayable",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "FailedCall",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidDepositAmount",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidInitialization",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotFinishedPeriod",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotInitializing",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "OwnableInvalidOwner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "OwnableUnauthorizedAccount",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "PeriodIntervalZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RelayLimitExceeded",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "UUPSUnauthorizedCallContext",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "slot",
          "type": "bytes32"
        }
      ],
      "name": "UUPSUnsupportedProxiableUUID",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "period",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "depositAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "contribution",
          "type": "uint256"
        }
      ],
      "name": "ContributionRecorded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "withdrawalHash",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "tokenIndex",
              "type": "uint32"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "nullifier",
              "type": "bytes32"
            }
          ],
          "indexed": false,
          "internalType": "struct WithdrawalLib.Withdrawal",
          "name": "withdrawal",
          "type": "tuple"
        }
      ],
      "name": "DirectWithdrawalQueued",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "version",
          "type": "uint64"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "claimVerifier",
          "type": "address"
        }
      ],
      "name": "VerifierUpdated",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "RELAY_LIMIT",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "REWARD_TOKEN_INDEX",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "UPGRADE_INTERFACE_VERSION",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "claimVerifier",
      "outputs": [
        {
          "internalType": "contract IPlonkVerifier",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "contribution",
      "outputs": [
        {
          "internalType": "contract IContribution",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getAllocationConstants",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "startTimestamp",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "periodInterval",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "genesisTimestamp",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "phase0RewardPerDay",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "numPhases",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "phase0Period",
              "type": "uint256"
            }
          ],
          "internalType": "struct AllocationLib.AllocationConstants",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "periodNumber",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "getAllocationInfo",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "totalContribution",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "allocationPerPeriod",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "userContribution",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "userAllocation",
              "type": "uint256"
            }
          ],
          "internalType": "struct AllocationLib.AllocationInfo",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getCurrentPeriod",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_admin",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_scrollMessenger",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_claimVerifier",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_liquidity",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_rollup",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_contribution",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "periodInterval",
          "type": "uint256"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "l2ScrollMessenger",
      "outputs": [
        {
          "internalType": "contract IL2ScrollMessenger",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "liquidity",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "nullifierNonce",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "nullifiers",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxiableUUID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "period",
          "type": "uint256"
        },
        {
          "internalType": "address[]",
          "name": "users",
          "type": "address[]"
        }
      ],
      "name": "relayClaims",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rollup",
      "outputs": [
        {
          "internalType": "contract IRollup",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "nullifier",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "blockHash",
              "type": "bytes32"
            },
            {
              "internalType": "uint32",
              "name": "blockNumber",
              "type": "uint32"
            }
          ],
          "internalType": "struct ChainedClaimLib.ChainedClaim[]",
          "name": "claims",
          "type": "tuple[]"
        },
        {
          "components": [
            {
              "internalType": "bytes32",
              "name": "lastClaimHash",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "claimAggregator",
              "type": "address"
            }
          ],
          "internalType": "struct ClaimProofPublicInputsLib.ClaimProofPublicInputs",
          "name": "publicInputs",
          "type": "tuple"
        },
        {
          "internalType": "bytes",
          "name": "proof",
          "type": "bytes"
        }
      ],
      "name": "submitClaimProof",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_claimVerifier",
          "type": "address"
        }
      ],
      "name": "updateVerifier",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "upgradeToAndCall",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    }
  ],
  "bytecode": "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516123276100fd600039600081816112650152818161128e01526113d401526123276000f3fe6080604052600436106101355760003560e01c806362a66853116100ab578063a93539d01161006f578063a93539d01461039e578063ad3cb1cc146103be578063c0e70bbd146103fc578063cb23bcb51461041c578063cc1966b21461043c578063f2fde38b1461049d57600080fd5b806362a66853146102af578063715018a6146103025780637857cc7b146103175780638da5cb5b1461034157806397fc007c1461037e57600080fd5b806337a38d31116100fd57806337a38d311461021c578063419b8c571461023c5780634f1ef2861461025257806350520b1f1461026557806352d1902d1461028557806354adcb991461029a57600080fd5b8063086146d21461013a5780631460e390146101625780631a686502146101845780632997e86b146101bc5780632c36a5d4146101fc575b600080fd5b34801561014657600080fd5b5061014f6104bd565b6040519081526020015b60405180910390f35b34801561016e57600080fd5b5061018261017d366004611b76565b6104ce565b005b34801561019057600080fd5b506003546101a4906001600160a01b031681565b6040516001600160a01b039091168152602001610159565b3480156101c857600080fd5b506101ec6101d7366004611bf8565b600a6020526000908152604090205460ff1681565b6040519015158152602001610159565b34801561020857600080fd5b50610182610217366004611c71565b6106ce565b34801561022857600080fd5b50610182610237366004611d29565b6108cf565b34801561024857600080fd5b5061014f60055481565b610182610260366004611dee565b610c9a565b34801561027157600080fd5b506004546101a4906001600160a01b031681565b34801561029157600080fd5b5061014f610cb9565b3480156102a657600080fd5b5061014f606481565b3480156102bb57600080fd5b506102cf6102ca366004611e97565b610cd6565b60405161015991908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b34801561030e57600080fd5b50610182610d16565b34801561032357600080fd5b5061032c600181565b60405163ffffffff9091168152602001610159565b34801561034d57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166101a4565b34801561038a57600080fd5b50610182610399366004611ec3565b610d2a565b3480156103aa57600080fd5b506000546101a4906001600160a01b031681565b3480156103ca57600080fd5b506103ef604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101599190611f2e565b34801561040857600080fd5b506001546101a4906001600160a01b031681565b34801561042857600080fd5b506002546101a4906001600160a01b031681565b34801561044857600080fd5b50610451610da1565b6040516101599190600060c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b3480156104a957600080fd5b506101826104b8366004611ec3565b610de4565b60006104c96006610e22565b905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156105135750825b90506000826001600160401b0316600114801561052f5750303b155b90508115801561053d575080155b1561055b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561058557845460ff60401b1916600160401b1785555b6001600160a01b038c1615806105a257506001600160a01b038b16155b806105b457506001600160a01b038a16155b806105c657506001600160a01b038916155b806105d857506001600160a01b038816155b806105ea57506001600160a01b038716155b1561060857604051639fabe1c160e01b815260040160405180910390fd5b6106118c610e41565b610619610e52565b610624600687610e5a565b600180546001600160a01b03199081166001600160a01b038e8116919091179092556000805482168d84161790556002805482168b84161790556004805482168a841617905560038054909116918b1691909117905583156106c057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b6106db8585858585610ec2565b6000805b8581101561082d5760008787838181106106fb576106fb611f41565b905060a002018036038101906107119190611f57565b6040808201516000908152600a602052205490915060ff16156107345750610825565b6040818101516000908152600a602052818120805460ff191660011790556002546080840151925163d2b210a160e01b815263ffffffff909316600484015290916001600160a01b039091169063d2b210a190602401602060405180830381865afa1580156107a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107cb9190611fdf565b905081606001518114610802578160600151604051630631b89b60e41b81526004016107f991815260200190565b60405180910390fd5b8151602083015161081591600691611035565b8361081f8161200e565b94505050505b6001016106df565b506004546001600160a01b031663f099f9f57fda5ef0dc178ac91b88a75e00c784aa6cda7295d02eebaec5c697f2b7ca57cdba336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260448101849052606401600060405180830381600087803b1580156108af57600080fd5b505af11580156108c3573d6000803e3d6000fd5b50505050505050505050565b826108da6006610e22565b116108f857604051635c6f5fd960e01b815260040160405180910390fd5b6000816001600160401b0381111561091257610912611da8565b60405190808252806020026020018201604052801561096457816020015b6040805160808101825260008082526020808301829052928201819052606082015282526000199092019101816109305790505b506005549091506000805b84811015610aa657600086868381811061098b5761098b611f41565b90506020020160208101906109a09190611ec3565b905060006109b060068a846110ff565b9050806000036109c1575050610a9e565b60006109cd8587612027565b60405164636c61696d60d81b6020820152602581019190915260450160408051601f1981840301815282825280516020918201206080840183526001600160a01b03871680855260019285019290925291830185905260608301829052909250610a3682611166565b7fdbe674c66915823ad8cb90cac7eb482e951adec0311c9cf091da19de527ee93583604051610a65919061203a565b60405180910390a380888781518110610a8057610a80611f41565b60200260200101819052508580610a969061200e565b965050505050505b60010161096f565b5080600003610ab757505050505050565b610ac18183612027565b6005556064811115610ae657604051635a8a34e560e01b815260040160405180910390fd5b6000816001600160401b03811115610b0057610b00611da8565b604051908082528060200260200182016040528015610b5257816020015b604080516080810182526000808252602080830182905292820181905260608201528252600019909201910181610b1e5790505b50905060005b82811015610b9f57848181518110610b7257610b72611f41565b6020026020010151828281518110610b8c57610b8c611f41565b6020908102919091010152600101610b58565b5060408051600080825260208201909252639d6a54cb60e01b90610bc890849060448101612074565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529050610c05816111de565b6004546001600160a01b031663f099f9f57fb5676ab224a46e60d2dabad66cec9aca97207e56cceb702167f49c074d12052c336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260448101869052606401600060405180830381600087803b158015610c8657600080fd5b505af11580156106c0573d6000803e3d6000fd5b610ca261125a565b610cab826112ff565b610cb58282611307565b5050565b6000610cc36113c9565b506000805160206122d283398151915290565b610d016040518060800160405280600081526020016000815260200160008152602001600081525090565b610d0d60068484611412565b90505b92915050565b610d1e6114b6565b610d286000611511565b565b610d326114b6565b6001600160a01b038116610d5957604051639fabe1c160e01b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b038316908117825560405190917fd24015cc99cc1700cafca3042840a1d8ac1e3964fd2e0e37ea29c654056ee32791a250565b610dda6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6104c96006611582565b610dec6114b6565b6001600160a01b038116610e1657604051631e4fbdf760e01b8152600060048201526024016107f9565b610e1f81611511565b50565b6001810154815460009190610e37904261212e565b610d109190612141565b610e49611600565b610e1f81611649565b610d28611600565b80600003610e7b57604051630938939360e41b815260040160405180910390fd5b6001820181905562015180811115610ead57610e9a6201518042612141565b610ea79062015180612163565b82555050565b80610eb88142612141565b610ea79190612163565b610f2b83600001358686808060200260200160405190810160405280939291908181526020016000905b82821015610f1857610f0960a08302860136819003810190611f57565b81526020019060010190610eec565b505050505061165190919063ffffffff16565b610f485760405163ec196f1360e01b815260040160405180910390fd5b33610f596040850160208601611ec3565b6001600160a01b031614610f80576040516343c30a7760e01b815260040160405180910390fd5b6000546001600160a01b0316637e4f7a8a8383610fb2610fad610fa8368a90038a018a61217a565b6116ae565b6116e1565b6040518463ffffffff1660e01b8152600401610fd0939291906121cf565b602060405180830381865afa158015610fed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611011919061224a565b61102e57604051631f53b29360e01b815260040160405180910390fd5b5050505050565b600061104084610e22565b9050600061104d83611759565b90508085600201600084815260200190815260200160002060008282546110749190612027565b9091555050600082815260038601602090815260408083206001600160a01b0388168452909152812080548392906110ad908490612027565b909155505060408051848152602081018390526001600160a01b0386169184917f8d0cf479602fd3cf00c7e5f661984c44659a827edb5f23cd85094cdc942f4649910160405180910390a35050505050565b600061110a84610e22565b831061112957604051635c6f5fd960e01b815260040160405180910390fd5b60006111368585856117d6565b600085815260038701602090815260408083206001600160a01b03881684529091528120559150505b9392505050565b600081600001518260200151836040015184606001516040516020016111c1949392919060609490941b6001600160601b031916845260e09290921b6001600160e01b03191660148401526018830152603882015260580190565b604051602081830303815290604052805190602001209050919050565b600154600354604051635f7b157760e01b8152600092600019926001600160a01b0391821692635f7b157792869261122392911690839089908890339060040161226c565b6000604051808303818588803b15801561123c57600080fd5b505af1158015611250573d6000803e3d6000fd5b5050505050505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806112e157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112d56000805160206122d2833981519152546001600160a01b031690565b6001600160a01b031614155b15610d285760405163703e46dd60e11b815260040160405180910390fd5b610e1f6114b6565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611361575060408051601f3d908101601f1916820190925261135e91810190611fdf565b60015b61138957604051634c9c8ce360e01b81526001600160a01b03831660048201526024016107f9565b6000805160206122d283398151915281146113ba57604051632a87526960e21b8152600481018290526024016107f9565b6113c48383611846565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d285760405163703e46dd60e11b815260040160405180910390fd5b61143d6040518060800160405280600081526020016000815260200160008152602001600081525090565b600083815260028501602052604081205490611459868661189c565b600086815260038801602090815260408083206001600160a01b038916845290915281205491925061148c8888886117d6565b60408051608081018252958652602086019490945292840191909152506060820152949350505050565b336114e87f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610d285760405163118cdaa760e01b81523360048201526024016107f9565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6115bb6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506040805160c0810182528254815260019092015460208301526366b2e150908201526a076496d888478bcef00000606082015260076080820152601060a082015290565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610d2857604051631afcd79f60e31b815260040160405180910390fd5b610dec611600565b600080805b845181101561169257600085828151811061167357611673611f41565b6020026020010151905061168781846118da565b925050600101611656565b508281146116a4576000915050610d10565b5060019392505050565b6000816000015182602001516040516020016111c192919091825260601b6001600160601b031916602082015260340190565b604080516008808252610120820190925260609160009190602082016101008036833701905050905060005b600881101561175257611721816020612163565b84901b60e01c63ffffffff1682828151811061173f5761173f611f41565b602090810291909101015260010161170d565b5092915050565b60008167016345785d8a00000361177257506001919050565b81670de0b6b3a76400000361178957506004919050565b81678ac7230489e80000036117a057506009919050565b8168056bc75e2d63100000036117b857506010919050565b60405163fe9ba5cd60e01b815260040160405180910390fd5b919050565b60008281526002840160205260408120548082036117f857600091505061115f565b600084815260038601602090815260408083206001600160a01b03871684529091529020548190611829878761189c565b6118339190612163565b61183d9190612141565b95945050505050565b61184f82611966565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611894576113c482826119cb565b610cb5611a38565b6000806118b28460000154856001015485611a57565b9050620151808460010154826118c89190612163565b6118d29190612141565b949350505050565b600081836000015184602001518560400151866060015187608001516040516020016119489695949392919095865260609490941b6001600160601b031916602086015260348501929092526054840152607483015260e01b6001600160e01b031916609482015260980190565b60405160208183030381529060405280519060200120905092915050565b806001600160a01b03163b60000361199c57604051634c9c8ce360e01b81526001600160a01b03821660048201526024016107f9565b6000805160206122d283398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516119e891906122b5565b600060405180830381855af49150503d8060008114611a23576040519150601f19603f3d011682016040523d82523d6000602084013e611a28565b606091505b509150915061183d858383611ada565b3415610d285760405163b398979f60e01b815260040160405180910390fd5b600080620151806366b2e150611a6d8686612163565b611a779088612027565b611a81919061212e565b611a8b9190612141565b90506a076496d888478bcef0000060005b6007811015611acd576010811b80841015611abd578294505050505061115f565b90920391600191821c9101611a9c565b5060009695505050505050565b606082611aef57611aea82611b36565b61115f565b8151158015611b0657506001600160a01b0384163b155b15611b2f57604051639996b31560e01b81526001600160a01b03851660048201526024016107f9565b508061115f565b805115611b465780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b80356001600160a01b03811681146117d157600080fd5b600080600080600080600060e0888a031215611b9157600080fd5b611b9a88611b5f565b9650611ba860208901611b5f565b9550611bb660408901611b5f565b9450611bc460608901611b5f565b9350611bd260808901611b5f565b9250611be060a08901611b5f565b96999598509396929591949193505060c09091013590565b600060208284031215611c0a57600080fd5b5035919050565b600060408284031215611c2357600080fd5b50919050565b60008083601f840112611c3b57600080fd5b5081356001600160401b03811115611c5257600080fd5b602083019150836020828501011115611c6a57600080fd5b9250929050565b600080600080600060808688031215611c8957600080fd5b85356001600160401b03811115611c9f57600080fd5b8601601f81018813611cb057600080fd5b80356001600160401b03811115611cc657600080fd5b88602060a083028401011115611cdb57600080fd5b602091820196509450611cf19088908801611c11565b925060608601356001600160401b03811115611d0c57600080fd5b611d1888828901611c29565b969995985093965092949392505050565b600080600060408486031215611d3e57600080fd5b8335925060208401356001600160401b03811115611d5b57600080fd5b8401601f81018613611d6c57600080fd5b80356001600160401b03811115611d8257600080fd5b8660208260051b8401011115611d9757600080fd5b939660209190910195509293505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611de657611de6611da8565b604052919050565b60008060408385031215611e0157600080fd5b611e0a83611b5f565b915060208301356001600160401b03811115611e2557600080fd5b8301601f81018513611e3657600080fd5b80356001600160401b03811115611e4f57611e4f611da8565b611e62601f8201601f1916602001611dbe565b818152866020838501011115611e7757600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060408385031215611eaa57600080fd5b82359150611eba60208401611b5f565b90509250929050565b600060208284031215611ed557600080fd5b610d0d82611b5f565b60005b83811015611ef9578181015183820152602001611ee1565b50506000910152565b60008151808452611f1a816020860160208601611ede565b601f01601f19169290920160200192915050565b602081526000610d0d6020830184611f02565b634e487b7160e01b600052603260045260246000fd5b600060a0828403128015611f6a57600080fd5b5060405160009060a081016001600160401b0381118282101715611f9057611f90611da8565b604052611f9c84611b5f565b8152602084810135908201526040808501359082015260608085013590820152608084013563ffffffff81168114611fd2578283fd5b6080820152949350505050565b600060208284031215611ff157600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60006001820161202057612020611ff8565b5060010190565b80820180821115610d1057610d10611ff8565b81516001600160a01b0316815260208083015163ffffffff1690820152604080830151908201526060808301519082015260808101610d10565b6040808252835190820181905260009060208501906060840190835b818110156120e6576120d083855180516001600160a01b0316825260208082015163ffffffff169083015260408082015190830152606090810151910152565b6020939093019260809290920191600101612090565b50508381036020808601919091528551808352918101925085019060005b81811015612122578251845260209384019390920191600101612104565b50919695505050505050565b81810381811115610d1057610d10611ff8565b60008261215e57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610d1057610d10611ff8565b6000604082840312801561218d57600080fd5b50604080519081016001600160401b03811182821017156121b0576121b0611da8565b604052823581526121c360208401611b5f565b60208201529392505050565b60408152826040820152828460608301376000606084830101526000601f19601f8501168201606081016060848303016020850152808551808352608084019150602087019350600092505b8083101561223e578351825260208201915060208401935060018301925061221b565b50979650505050505050565b60006020828403121561225c57600080fd5b8151801515811461115f57600080fd5b60018060a01b038616815284602082015260a06040820152600061229360a0830186611f02565b6060830194909452506001600160a01b03919091166080909101529392505050565b600082516122c7818460208701611ede565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220fb8b7130d519ff48e44b1bb12ab1373fd5b05c3f547f3c6f7e4fcd27687cb63864736f6c634300081b0033",
  "deployedBytecode": "0x6080604052600436106101355760003560e01c806362a66853116100ab578063a93539d01161006f578063a93539d01461039e578063ad3cb1cc146103be578063c0e70bbd146103fc578063cb23bcb51461041c578063cc1966b21461043c578063f2fde38b1461049d57600080fd5b806362a66853146102af578063715018a6146103025780637857cc7b146103175780638da5cb5b1461034157806397fc007c1461037e57600080fd5b806337a38d31116100fd57806337a38d311461021c578063419b8c571461023c5780634f1ef2861461025257806350520b1f1461026557806352d1902d1461028557806354adcb991461029a57600080fd5b8063086146d21461013a5780631460e390146101625780631a686502146101845780632997e86b146101bc5780632c36a5d4146101fc575b600080fd5b34801561014657600080fd5b5061014f6104bd565b6040519081526020015b60405180910390f35b34801561016e57600080fd5b5061018261017d366004611b76565b6104ce565b005b34801561019057600080fd5b506003546101a4906001600160a01b031681565b6040516001600160a01b039091168152602001610159565b3480156101c857600080fd5b506101ec6101d7366004611bf8565b600a6020526000908152604090205460ff1681565b6040519015158152602001610159565b34801561020857600080fd5b50610182610217366004611c71565b6106ce565b34801561022857600080fd5b50610182610237366004611d29565b6108cf565b34801561024857600080fd5b5061014f60055481565b610182610260366004611dee565b610c9a565b34801561027157600080fd5b506004546101a4906001600160a01b031681565b34801561029157600080fd5b5061014f610cb9565b3480156102a657600080fd5b5061014f606481565b3480156102bb57600080fd5b506102cf6102ca366004611e97565b610cd6565b60405161015991908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b34801561030e57600080fd5b50610182610d16565b34801561032357600080fd5b5061032c600181565b60405163ffffffff9091168152602001610159565b34801561034d57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166101a4565b34801561038a57600080fd5b50610182610399366004611ec3565b610d2a565b3480156103aa57600080fd5b506000546101a4906001600160a01b031681565b3480156103ca57600080fd5b506103ef604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101599190611f2e565b34801561040857600080fd5b506001546101a4906001600160a01b031681565b34801561042857600080fd5b506002546101a4906001600160a01b031681565b34801561044857600080fd5b50610451610da1565b6040516101599190600060c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b3480156104a957600080fd5b506101826104b8366004611ec3565b610de4565b60006104c96006610e22565b905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156105135750825b90506000826001600160401b0316600114801561052f5750303b155b90508115801561053d575080155b1561055b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561058557845460ff60401b1916600160401b1785555b6001600160a01b038c1615806105a257506001600160a01b038b16155b806105b457506001600160a01b038a16155b806105c657506001600160a01b038916155b806105d857506001600160a01b038816155b806105ea57506001600160a01b038716155b1561060857604051639fabe1c160e01b815260040160405180910390fd5b6106118c610e41565b610619610e52565b610624600687610e5a565b600180546001600160a01b03199081166001600160a01b038e8116919091179092556000805482168d84161790556002805482168b84161790556004805482168a841617905560038054909116918b1691909117905583156106c057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b6106db8585858585610ec2565b6000805b8581101561082d5760008787838181106106fb576106fb611f41565b905060a002018036038101906107119190611f57565b6040808201516000908152600a602052205490915060ff16156107345750610825565b6040818101516000908152600a602052818120805460ff191660011790556002546080840151925163d2b210a160e01b815263ffffffff909316600484015290916001600160a01b039091169063d2b210a190602401602060405180830381865afa1580156107a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107cb9190611fdf565b905081606001518114610802578160600151604051630631b89b60e41b81526004016107f991815260200190565b60405180910390fd5b8151602083015161081591600691611035565b8361081f8161200e565b94505050505b6001016106df565b506004546001600160a01b031663f099f9f57fda5ef0dc178ac91b88a75e00c784aa6cda7295d02eebaec5c697f2b7ca57cdba336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260448101849052606401600060405180830381600087803b1580156108af57600080fd5b505af11580156108c3573d6000803e3d6000fd5b50505050505050505050565b826108da6006610e22565b116108f857604051635c6f5fd960e01b815260040160405180910390fd5b6000816001600160401b0381111561091257610912611da8565b60405190808252806020026020018201604052801561096457816020015b6040805160808101825260008082526020808301829052928201819052606082015282526000199092019101816109305790505b506005549091506000805b84811015610aa657600086868381811061098b5761098b611f41565b90506020020160208101906109a09190611ec3565b905060006109b060068a846110ff565b9050806000036109c1575050610a9e565b60006109cd8587612027565b60405164636c61696d60d81b6020820152602581019190915260450160408051601f1981840301815282825280516020918201206080840183526001600160a01b03871680855260019285019290925291830185905260608301829052909250610a3682611166565b7fdbe674c66915823ad8cb90cac7eb482e951adec0311c9cf091da19de527ee93583604051610a65919061203a565b60405180910390a380888781518110610a8057610a80611f41565b60200260200101819052508580610a969061200e565b965050505050505b60010161096f565b5080600003610ab757505050505050565b610ac18183612027565b6005556064811115610ae657604051635a8a34e560e01b815260040160405180910390fd5b6000816001600160401b03811115610b0057610b00611da8565b604051908082528060200260200182016040528015610b5257816020015b604080516080810182526000808252602080830182905292820181905260608201528252600019909201910181610b1e5790505b50905060005b82811015610b9f57848181518110610b7257610b72611f41565b6020026020010151828281518110610b8c57610b8c611f41565b6020908102919091010152600101610b58565b5060408051600080825260208201909252639d6a54cb60e01b90610bc890849060448101612074565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529050610c05816111de565b6004546001600160a01b031663f099f9f57fb5676ab224a46e60d2dabad66cec9aca97207e56cceb702167f49c074d12052c336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260448101869052606401600060405180830381600087803b158015610c8657600080fd5b505af11580156106c0573d6000803e3d6000fd5b610ca261125a565b610cab826112ff565b610cb58282611307565b5050565b6000610cc36113c9565b506000805160206122d283398151915290565b610d016040518060800160405280600081526020016000815260200160008152602001600081525090565b610d0d60068484611412565b90505b92915050565b610d1e6114b6565b610d286000611511565b565b610d326114b6565b6001600160a01b038116610d5957604051639fabe1c160e01b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b038316908117825560405190917fd24015cc99cc1700cafca3042840a1d8ac1e3964fd2e0e37ea29c654056ee32791a250565b610dda6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6104c96006611582565b610dec6114b6565b6001600160a01b038116610e1657604051631e4fbdf760e01b8152600060048201526024016107f9565b610e1f81611511565b50565b6001810154815460009190610e37904261212e565b610d109190612141565b610e49611600565b610e1f81611649565b610d28611600565b80600003610e7b57604051630938939360e41b815260040160405180910390fd5b6001820181905562015180811115610ead57610e9a6201518042612141565b610ea79062015180612163565b82555050565b80610eb88142612141565b610ea79190612163565b610f2b83600001358686808060200260200160405190810160405280939291908181526020016000905b82821015610f1857610f0960a08302860136819003810190611f57565b81526020019060010190610eec565b505050505061165190919063ffffffff16565b610f485760405163ec196f1360e01b815260040160405180910390fd5b33610f596040850160208601611ec3565b6001600160a01b031614610f80576040516343c30a7760e01b815260040160405180910390fd5b6000546001600160a01b0316637e4f7a8a8383610fb2610fad610fa8368a90038a018a61217a565b6116ae565b6116e1565b6040518463ffffffff1660e01b8152600401610fd0939291906121cf565b602060405180830381865afa158015610fed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611011919061224a565b61102e57604051631f53b29360e01b815260040160405180910390fd5b5050505050565b600061104084610e22565b9050600061104d83611759565b90508085600201600084815260200190815260200160002060008282546110749190612027565b9091555050600082815260038601602090815260408083206001600160a01b0388168452909152812080548392906110ad908490612027565b909155505060408051848152602081018390526001600160a01b0386169184917f8d0cf479602fd3cf00c7e5f661984c44659a827edb5f23cd85094cdc942f4649910160405180910390a35050505050565b600061110a84610e22565b831061112957604051635c6f5fd960e01b815260040160405180910390fd5b60006111368585856117d6565b600085815260038701602090815260408083206001600160a01b03881684529091528120559150505b9392505050565b600081600001518260200151836040015184606001516040516020016111c1949392919060609490941b6001600160601b031916845260e09290921b6001600160e01b03191660148401526018830152603882015260580190565b604051602081830303815290604052805190602001209050919050565b600154600354604051635f7b157760e01b8152600092600019926001600160a01b0391821692635f7b157792869261122392911690839089908890339060040161226c565b6000604051808303818588803b15801561123c57600080fd5b505af1158015611250573d6000803e3d6000fd5b5050505050505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806112e157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112d56000805160206122d2833981519152546001600160a01b031690565b6001600160a01b031614155b15610d285760405163703e46dd60e11b815260040160405180910390fd5b610e1f6114b6565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611361575060408051601f3d908101601f1916820190925261135e91810190611fdf565b60015b61138957604051634c9c8ce360e01b81526001600160a01b03831660048201526024016107f9565b6000805160206122d283398151915281146113ba57604051632a87526960e21b8152600481018290526024016107f9565b6113c48383611846565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d285760405163703e46dd60e11b815260040160405180910390fd5b61143d6040518060800160405280600081526020016000815260200160008152602001600081525090565b600083815260028501602052604081205490611459868661189c565b600086815260038801602090815260408083206001600160a01b038916845290915281205491925061148c8888886117d6565b60408051608081018252958652602086019490945292840191909152506060820152949350505050565b336114e87f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610d285760405163118cdaa760e01b81523360048201526024016107f9565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6115bb6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506040805160c0810182528254815260019092015460208301526366b2e150908201526a076496d888478bcef00000606082015260076080820152601060a082015290565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610d2857604051631afcd79f60e31b815260040160405180910390fd5b610dec611600565b600080805b845181101561169257600085828151811061167357611673611f41565b6020026020010151905061168781846118da565b925050600101611656565b508281146116a4576000915050610d10565b5060019392505050565b6000816000015182602001516040516020016111c192919091825260601b6001600160601b031916602082015260340190565b604080516008808252610120820190925260609160009190602082016101008036833701905050905060005b600881101561175257611721816020612163565b84901b60e01c63ffffffff1682828151811061173f5761173f611f41565b602090810291909101015260010161170d565b5092915050565b60008167016345785d8a00000361177257506001919050565b81670de0b6b3a76400000361178957506004919050565b81678ac7230489e80000036117a057506009919050565b8168056bc75e2d63100000036117b857506010919050565b60405163fe9ba5cd60e01b815260040160405180910390fd5b919050565b60008281526002840160205260408120548082036117f857600091505061115f565b600084815260038601602090815260408083206001600160a01b03871684529091529020548190611829878761189c565b6118339190612163565b61183d9190612141565b95945050505050565b61184f82611966565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611894576113c482826119cb565b610cb5611a38565b6000806118b28460000154856001015485611a57565b9050620151808460010154826118c89190612163565b6118d29190612141565b949350505050565b600081836000015184602001518560400151866060015187608001516040516020016119489695949392919095865260609490941b6001600160601b031916602086015260348501929092526054840152607483015260e01b6001600160e01b031916609482015260980190565b60405160208183030381529060405280519060200120905092915050565b806001600160a01b03163b60000361199c57604051634c9c8ce360e01b81526001600160a01b03821660048201526024016107f9565b6000805160206122d283398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516119e891906122b5565b600060405180830381855af49150503d8060008114611a23576040519150601f19603f3d011682016040523d82523d6000602084013e611a28565b606091505b509150915061183d858383611ada565b3415610d285760405163b398979f60e01b815260040160405180910390fd5b600080620151806366b2e150611a6d8686612163565b611a779088612027565b611a81919061212e565b611a8b9190612141565b90506a076496d888478bcef0000060005b6007811015611acd576010811b80841015611abd578294505050505061115f565b90920391600191821c9101611a9c565b5060009695505050505050565b606082611aef57611aea82611b36565b61115f565b8151158015611b0657506001600160a01b0384163b155b15611b2f57604051639996b31560e01b81526001600160a01b03851660048201526024016107f9565b508061115f565b805115611b465780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b80356001600160a01b03811681146117d157600080fd5b600080600080600080600060e0888a031215611b9157600080fd5b611b9a88611b5f565b9650611ba860208901611b5f565b9550611bb660408901611b5f565b9450611bc460608901611b5f565b9350611bd260808901611b5f565b9250611be060a08901611b5f565b96999598509396929591949193505060c09091013590565b600060208284031215611c0a57600080fd5b5035919050565b600060408284031215611c2357600080fd5b50919050565b60008083601f840112611c3b57600080fd5b5081356001600160401b03811115611c5257600080fd5b602083019150836020828501011115611c6a57600080fd5b9250929050565b600080600080600060808688031215611c8957600080fd5b85356001600160401b03811115611c9f57600080fd5b8601601f81018813611cb057600080fd5b80356001600160401b03811115611cc657600080fd5b88602060a083028401011115611cdb57600080fd5b602091820196509450611cf19088908801611c11565b925060608601356001600160401b03811115611d0c57600080fd5b611d1888828901611c29565b969995985093965092949392505050565b600080600060408486031215611d3e57600080fd5b8335925060208401356001600160401b03811115611d5b57600080fd5b8401601f81018613611d6c57600080fd5b80356001600160401b03811115611d8257600080fd5b8660208260051b8401011115611d9757600080fd5b939660209190910195509293505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611de657611de6611da8565b604052919050565b60008060408385031215611e0157600080fd5b611e0a83611b5f565b915060208301356001600160401b03811115611e2557600080fd5b8301601f81018513611e3657600080fd5b80356001600160401b03811115611e4f57611e4f611da8565b611e62601f8201601f1916602001611dbe565b818152866020838501011115611e7757600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060408385031215611eaa57600080fd5b82359150611eba60208401611b5f565b90509250929050565b600060208284031215611ed557600080fd5b610d0d82611b5f565b60005b83811015611ef9578181015183820152602001611ee1565b50506000910152565b60008151808452611f1a816020860160208601611ede565b601f01601f19169290920160200192915050565b602081526000610d0d6020830184611f02565b634e487b7160e01b600052603260045260246000fd5b600060a0828403128015611f6a57600080fd5b5060405160009060a081016001600160401b0381118282101715611f9057611f90611da8565b604052611f9c84611b5f565b8152602084810135908201526040808501359082015260608085013590820152608084013563ffffffff81168114611fd2578283fd5b6080820152949350505050565b600060208284031215611ff157600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60006001820161202057612020611ff8565b5060010190565b80820180821115610d1057610d10611ff8565b81516001600160a01b0316815260208083015163ffffffff1690820152604080830151908201526060808301519082015260808101610d10565b6040808252835190820181905260009060208501906060840190835b818110156120e6576120d083855180516001600160a01b0316825260208082015163ffffffff169083015260408082015190830152606090810151910152565b6020939093019260809290920191600101612090565b50508381036020808601919091528551808352918101925085019060005b81811015612122578251845260209384019390920191600101612104565b50919695505050505050565b81810381811115610d1057610d10611ff8565b60008261215e57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610d1057610d10611ff8565b6000604082840312801561218d57600080fd5b50604080519081016001600160401b03811182821017156121b0576121b0611da8565b604052823581526121c360208401611b5f565b60208201529392505050565b60408152826040820152828460608301376000606084830101526000601f19601f8501168201606081016060848303016020850152808551808352608084019150602087019350600092505b8083101561223e578351825260208201915060208401935060018301925061221b565b50979650505050505050565b60006020828403121561225c57600080fd5b8151801515811461115f57600080fd5b60018060a01b038616815284602082015260a06040820152600061229360a0830186611f02565b6060830194909452506001600160a01b03919091166080909101529392505050565b600082516122c7818460208701611ede565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220fb8b7130d519ff48e44b1bb12ab1373fd5b05c3f547f3c6f7e4fcd27687cb63864736f6c634300081b0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
