{
  "GMContractCustodyV5": {
    "abi": [
      {
        "inputs": [
          {
            "internalType": "contract IPonsV2FeeEscrowClaim",
            "name": "ponsEscrow",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "gmToken",
            "type": "address"
          },
          {
            "internalType": "contract IERC20BalanceTransfer",
            "name": "usdg",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "reserveSafe",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "recoverySafe",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "committer",
            "type": "address"
          },
          {
            "internalType": "contract IGMDrawVerifier",
            "name": "drawVerifier",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "minimumClaimableUsdg",
            "type": "uint256"
          },
          {
            "internalType": "contract IPonsV2BondingCurveV5",
            "name": "ponsCurve",
            "type": "address"
          },
          {
            "internalType": "contract IPonsV2LaunchFactoryV5",
            "name": "ponsFactory",
            "type": "address"
          }
        ],
        "stateMutability": "nonpayable",
        "type": "constructor"
      },
      {
        "inputs": [
          {
            "internalType": "uint256",
            "name": "claimable",
            "type": "uint256"
          }
        ],
        "name": "BelowClaimThreshold",
        "type": "error"
      },
      {
        "inputs": [],
        "name": "BuybackEnabled",
        "type": "error"
      },
      {
        "inputs": [],
        "name": "BuybackStateMismatch",
        "type": "error"
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "target",
            "type": "address"
          }
        ],
        "name": "ContractCodeRequired",
        "type": "error"
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "actual",
            "type": "address"
          }
        ],
        "name": "CurvePairTokenMismatch",
        "type": "error"
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "actual",
            "type": "address"
          }
        ],
        "name": "CurveTokenMismatch",
        "type": "error"
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "actual",
            "type": "address"
          }
        ],
        "name": "CustodyNotCreatorFeeRecipient",
        "type": "error"
      },
      {
        "inputs": [],
        "name": "DrawNotCommitted",
        "type": "error"
      },
      {
        "inputs": [],
        "name": "DuplicateDraw",
        "type": "error"
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "actual",
            "type": "address"
          }
        ],
        "name": "FactoryEscrowMismatch",
        "type": "error"
      },
      {
        "inputs": [],
        "name": "InexactTransfer",
        "type": "error"
      },
      {
        "inputs": [],
        "name": "InvalidCommitment",
        "type": "error"
      },
      {
        "inputs": [],
        "name": "InvalidDrawProof",
        "type": "error"
      },
      {
        "inputs": [],
        "name": "InvalidRecoveryRecipient",
        "type": "error"
      },
      {
        "inputs": [],
        "name": "LaunchBindingMismatch",
        "type": "error"
      },
      {
        "inputs": [],
        "name": "NoAvailableBalance",
        "type": "error"
      },
      {
        "inputs": [],
        "name": "NoClaimReceived",
        "type": "error"
      },
      {
        "inputs": [],
        "name": "NotCommitter",
        "type": "error"
      },
      {
        "inputs": [],
        "name": "NotRecoverySafe",
        "type": "error"
      },
      {
        "inputs": [],
        "name": "NothingToSweep",
        "type": "error"
      },
      {
        "inputs": [],
        "name": "Paused",
        "type": "error"
      },
      {
        "inputs": [],
        "name": "RandomnessNotFuture",
        "type": "error"
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "actual",
            "type": "address"
          }
        ],
        "name": "RecoveryRecipientMismatch",
        "type": "error"
      },
      {
        "inputs": [],
        "name": "ReentrantCall",
        "type": "error"
      },
      {
        "inputs": [],
        "name": "TransferFailed",
        "type": "error"
      },
      {
        "inputs": [],
        "name": "ZeroAddress",
        "type": "error"
      },
      {
        "inputs": [],
        "name": "ZeroThreshold",
        "type": "error"
      },
      {
        "anonymous": false,
        "inputs": [
          {
            "indexed": true,
            "internalType": "address",
            "name": "recoverySafe",
            "type": "address"
          },
          {
            "indexed": true,
            "internalType": "address",
            "name": "newRecipient",
            "type": "address"
          }
        ],
        "name": "CreatorFeeRecipientTransferred",
        "type": "event"
      },
      {
        "anonymous": false,
        "inputs": [
          {
            "indexed": true,
            "internalType": "address",
            "name": "executor",
            "type": "address"
          },
          {
            "indexed": true,
            "internalType": "address",
            "name": "curve",
            "type": "address"
          }
        ],
        "name": "CurveFeesSwept",
        "type": "event"
      },
      {
        "anonymous": false,
        "inputs": [
          {
            "indexed": true,
            "internalType": "address",
            "name": "executor",
            "type": "address"
          },
          {
            "indexed": false,
            "internalType": "uint256",
            "name": "sweptAmount",
            "type": "uint256"
          }
        ],
        "name": "DonationsSwept",
        "type": "event"
      },
      {
        "anonymous": false,
        "inputs": [
          {
            "indexed": true,
            "internalType": "bytes32",
            "name": "drawId",
            "type": "bytes32"
          },
          {
            "indexed": true,
            "internalType": "bytes32",
            "name": "snapshotHash",
            "type": "bytes32"
          },
          {
            "indexed": true,
            "internalType": "bytes32",
            "name": "rangeRoot",
            "type": "bytes32"
          },
          {
            "indexed": false,
            "internalType": "uint256",
            "name": "totalTickets",
            "type": "uint256"
          },
          {
            "indexed": false,
            "internalType": "uint64",
            "name": "commitmentRound",
            "type": "uint64"
          },
          {
            "indexed": false,
            "internalType": "uint64",
            "name": "futureRandomnessRound",
            "type": "uint64"
          },
          {
            "indexed": false,
            "internalType": "uint256",
            "name": "amount",
            "type": "uint256"
          },
          {
            "indexed": false,
            "internalType": "uint256",
            "name": "commitmentBlock",
            "type": "uint256"
          }
        ],
        "name": "DrawCommitted",
        "type": "event"
      },
      {
        "anonymous": false,
        "inputs": [
          {
            "indexed": true,
            "internalType": "bytes32",
            "name": "drawId",
            "type": "bytes32"
          },
          {
            "indexed": false,
            "internalType": "uint256",
            "name": "winningTicket",
            "type": "uint256"
          },
          {
            "indexed": true,
            "internalType": "address",
            "name": "winner",
            "type": "address"
          },
          {
            "indexed": false,
            "internalType": "uint256",
            "name": "winnerAmount",
            "type": "uint256"
          },
          {
            "indexed": true,
            "internalType": "address",
            "name": "reserveSafe",
            "type": "address"
          },
          {
            "indexed": false,
            "internalType": "uint256",
            "name": "reserveAmount",
            "type": "uint256"
          }
        ],
        "name": "DrawSettled",
        "type": "event"
      },
      {
        "anonymous": false,
        "inputs": [
          {
            "indexed": true,
            "internalType": "address",
            "name": "executor",
            "type": "address"
          },
          {
            "indexed": false,
            "internalType": "uint256",
            "name": "measuredAmount",
            "type": "uint256"
          }
        ],
        "name": "FeesClaimed",
        "type": "event"
      },
      {
        "anonymous": false,
        "inputs": [
          {
            "indexed": false,
            "internalType": "bool",
            "name": "paused",
            "type": "bool"
          }
        ],
        "name": "PauseChanged",
        "type": "event"
      },
      {
        "inputs": [],
        "name": "COMMITTER",
        "outputs": [
          {
            "internalType": "address",
            "name": "",
            "type": "address"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "DRAW_VERIFIER",
        "outputs": [
          {
            "internalType": "contract IGMDrawVerifier",
            "name": "",
            "type": "address"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "GM_TOKEN",
        "outputs": [
          {
            "internalType": "address",
            "name": "",
            "type": "address"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "MINIMUM_CLAIMABLE_USDG",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "",
            "type": "uint256"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "PONS_CURVE",
        "outputs": [
          {
            "internalType": "contract IPonsV2BondingCurveV5",
            "name": "",
            "type": "address"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "PONS_ESCROW",
        "outputs": [
          {
            "internalType": "contract IPonsV2FeeEscrowClaim",
            "name": "",
            "type": "address"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "PONS_FACTORY",
        "outputs": [
          {
            "internalType": "contract IPonsV2LaunchFactoryV5",
            "name": "",
            "type": "address"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "RECOVERY_SAFE",
        "outputs": [
          {
            "internalType": "address",
            "name": "",
            "type": "address"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "RESERVE_SAFE",
        "outputs": [
          {
            "internalType": "address",
            "name": "",
            "type": "address"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "USDG",
        "outputs": [
          {
            "internalType": "contract IERC20BalanceTransfer",
            "name": "",
            "type": "address"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "availableBalance",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "",
            "type": "uint256"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "claimIfThreshold",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "claimedAmount",
            "type": "uint256"
          }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "bytes32",
            "name": "drawId",
            "type": "bytes32"
          },
          {
            "internalType": "bytes32",
            "name": "snapshotHash",
            "type": "bytes32"
          },
          {
            "internalType": "bytes32",
            "name": "rangeRoot",
            "type": "bytes32"
          },
          {
            "internalType": "uint256",
            "name": "totalTickets",
            "type": "uint256"
          },
          {
            "internalType": "uint64",
            "name": "futureRandomnessRound",
            "type": "uint64"
          }
        ],
        "name": "commitDraw",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "amount",
            "type": "uint256"
          }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "committedBalance",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "",
            "type": "uint256"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "bytes32",
            "name": "drawId",
            "type": "bytes32"
          }
        ],
        "name": "draws",
        "outputs": [
          {
            "internalType": "bytes32",
            "name": "snapshotHash",
            "type": "bytes32"
          },
          {
            "internalType": "bytes32",
            "name": "rangeRoot",
            "type": "bytes32"
          },
          {
            "internalType": "uint256",
            "name": "totalTickets",
            "type": "uint256"
          },
          {
            "internalType": "uint64",
            "name": "commitmentRound",
            "type": "uint64"
          },
          {
            "internalType": "uint64",
            "name": "futureRandomnessRound",
            "type": "uint64"
          },
          {
            "internalType": "uint256",
            "name": "amount",
            "type": "uint256"
          },
          {
            "internalType": "enum GMContractCustody.DrawStatus",
            "name": "status",
            "type": "uint8"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "pause",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "paused",
        "outputs": [
          {
            "internalType": "bool",
            "name": "",
            "type": "bool"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "bytes32",
            "name": "drawId",
            "type": "bytes32"
          },
          {
            "internalType": "bytes",
            "name": "drandSignature",
            "type": "bytes"
          },
          {
            "components": [
              {
                "internalType": "address",
                "name": "holder",
                "type": "address"
              },
              {
                "internalType": "uint256",
                "name": "startInclusive",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "endExclusive",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "leafIndex",
                "type": "uint256"
              },
              {
                "internalType": "bytes32[]",
                "name": "siblings",
                "type": "bytes32[]"
              }
            ],
            "internalType": "struct GMContractCustody.RangeProof",
            "name": "rangeProof",
            "type": "tuple"
          }
        ],
        "name": "settleDraw",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "winnerAmount",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "reserveAmount",
            "type": "uint256"
          }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "sweepCurveFees",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "sweepDonations",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "sweptAmount",
            "type": "uint256"
          }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "newRecipient",
            "type": "address"
          }
        ],
        "name": "transferCreatorFeeRecipient",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "unpause",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
      }
    ],
    "creation": "6101c0604052348015610010575f5ffd5b5060405161288438038061288483398101604081905261002f916104e6565b89898989898989896001600160a01b038816158061005457506001600160a01b038716155b8061006657506001600160a01b038616155b8061007857506001600160a01b038516155b8061008a57506001600160a01b038416155b8061009c57506001600160a01b038316155b806100ae57506001600160a01b038216155b156100cc5760405163d92e233d60e01b815260040160405180910390fd5b805f036100ec5760405163831761d760e01b815260040160405180910390fd5b6001600160a01b0397881660a05295871660c05293861660e052918516610100528416610120528316610140528216610160526080528216158061013757506001600160a01b038116155b156101555760405163d92e233d60e01b815260040160405180910390fd5b816001600160a01b03163b5f0361018f57604051630d3e6c4160e01b81526001600160a01b03831660048201526024015b60405180910390fd5b806001600160a01b03163b5f036101c457604051630d3e6c4160e01b81526001600160a01b0382166004820152602401610186565b5f826001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610201573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061022591906105af565b9050896001600160a01b0316816001600160a01b031614610264576040516353d9b77560e01b81526001600160a01b0382166004820152602401610186565b5f836001600160a01b0316633de35b796040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102a1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102c591906105af565b9050896001600160a01b0316816001600160a01b031614610304576040516307a8f8a960e21b81526001600160a01b0382166004820152602401610186565b5f836001600160a01b031663c4b7de976040518163ffffffff1660e01b8152600401602060405180830381865afa158015610341573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061036591906105af565b90508c6001600160a01b0316816001600160a01b0316146103a457604051634a59640160e11b81526001600160a01b0382166004820152602401610186565b604051631e7945ad60e11b81526001600160a01b038d811660048301525f9190861690633cf28b5a906024016101e060405180830381865afa1580156103ec573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104109190610657565b9050806101c00151158061043957508c6001600160a01b0316815f01516001600160a01b031614155b8061045a5750856001600160a01b031681602001516001600160a01b031614155b8061047b57508b6001600160a01b031681608001516001600160a01b031614155b1561049957604051632cad4d4b60e21b815260040160405180910390fd5b5050506001600160a01b039283166101805250166101a052506107619650505050505050565b6001600160a01b03811681146104d3575f5ffd5b50565b80516104e1816104bf565b919050565b5f5f5f5f5f5f5f5f5f5f6101408b8d031215610500575f5ffd5b8a5161050b816104bf565b60208c0151909a5061051c816104bf565b60408c015190995061052d816104bf565b60608c015190985061053e816104bf565b60808c015190975061054f816104bf565b60a08c0151909650610560816104bf565b60c08c0151909550610571816104bf565b60e08c01516101008d0151919550935061058a816104bf565b6101208c015190925061059c816104bf565b809150509295989b9194979a5092959850565b5f602082840312156105bf575f5ffd5b81516105ca816104bf565b9392505050565b6040516101e081016001600160401b038111828210171561060057634e487b7160e01b5f52604160045260245ffd5b60405290565b805162ffffff811681146104e1575f5ffd5b8051600281900b81146104e1575f5ffd5b805161ffff811681146104e1575f5ffd5b805180151581146104e1575f5ffd5b8051600481106104e1575f5ffd5b5f6101e0828403128015610669575f5ffd5b506106726105d1565b61067b836104d6565b8152610689602084016104d6565b602082015261069a604084016104d6565b60408201526106ab606084016104d6565b60608201526106bc608084016104d6565b608082015260a083810151908201526106d760c08401610606565b60c08201526106e860e08401610618565b60e08201526106fa6101008401610629565b61010082015261070d610120840161063a565b6101208201526107206101408401610649565b610140820152610160838101519082015261018080840151908201526101a080840151908201526107546101c0840161063a565b6101c08201529392505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051611fdb6108a95f395f818161019e01528181610aed015281816112a6015261133d01525f81816102b701528181610b6a01528181610c0701528181610ce90152610d5301525f81816103950152818161051a015261080b01525f81816102de015261041101525f8181610231015281816109e40152818161113601526111bf01525f81816102900152818161092c015261096f01525f81816101e501528181610e0e01528181610f0001528181610f88015281816110370152818161148b0152818161179b01528181611830015281816118c40152818161196501526119fa01525f81816103e301528181610ac301528181611276015261131201525f81816103bc01528181610e380152610fb301525f81816102610152610ea70152611fdb5ff3fe608060405234801561000f575f5ffd5b506004361061013d575f3560e01c80638456cb59116100b4578063ab2f0e5111610079578063ab2f0e511461036c578063ca5a84de14610375578063cfc98a2414610388578063d2bdd90314610390578063d9c61db3146103b7578063e20ffb3f146103de575f5ffd5b80638456cb59146102835780638735c2031461028b578063939326a3146102b2578063a3efd7f6146102d9578063a41e4c7014610300575f5ffd5b806357ae3a9f1161010557806357ae3a9f146101e057806359d098ce146102075780635c975abb1461020f5780637f3d1b1c1461022c57806380e4c1de146102535780638309e8b41461025c575f5ffd5b80631e86e67e146101415780632a2bee7c146101675780633f4ba83a1461018f5780634baebae5146101995780635442e4d7146101d8575b5f5ffd5b61015461014f366004611ac4565b610405565b6040519081526020015b60405180910390f35b61017a610175366004611b23565b610762565b6040805192835260208301919091520161015e565b6101976109d9565b005b6101c07f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161015e565b610197610a62565b6101c07f000000000000000000000000000000000000000000000000000000000000000081565b610154610da5565b60035461021c9060ff1681565b604051901515815260200161015e565b6101c07f000000000000000000000000000000000000000000000000000000000000000081565b61015460025481565b6101547f000000000000000000000000000000000000000000000000000000000000000081565b61019761112b565b6101c07f000000000000000000000000000000000000000000000000000000000000000081565b6101c07f000000000000000000000000000000000000000000000000000000000000000081565b6101c07f000000000000000000000000000000000000000000000000000000000000000081565b61035961030e366004611bc2565b5f602081905290815260409020805460018201546002830154600384015460048501546005909501549394929391926001600160401b0380831693600160401b909304169160ff1687565b60405161015e9796959493929190611bed565b61015460015481565b610197610383366004611c69565b6111b4565b610154611428565b6101c07f000000000000000000000000000000000000000000000000000000000000000081565b6101c07f000000000000000000000000000000000000000000000000000000000000000081565b6101c07f000000000000000000000000000000000000000000000000000000000000000081565b5f336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461044f57604051632e3bec6160e01b815260040160405180910390fd5b60045415610470576040516306fda65d60e31b815260040160405180910390fd5b600160045560035460ff1615610499576040516313d0ff5960e31b815260040160405180910390fd5b8515806104a4575084155b806104ad575083155b806104b6575082155b156104d457604051636033c4fd60e11b815260040160405180910390fd5b5f8681526020819052604081206005015460ff1660028111156104f9576104f9611bd9565b146105175760405163dbcec1a760e01b815260040160405180910390fd5b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638a19c8bc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610574573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105989190611c8b565b9050806001600160401b0316836001600160401b0316116105cc57604051636ebc65d960e11b815260040160405180910390fd5b6001549150815f036105f157604051637c0160a760e01b815260040160405180910390fd5b5f6001819055508160025f8282546106099190611cba565b90915550506040805160e081018252878152602081018790529081018590526001600160401b0380831660608301528416608082015260a0810183905260c08101600190525f8881526020818152604091829020835181559083015160018083019190915591830151600280830191909155606084015160038301805460808701516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff1990921693169290921791909117905560a0840151600483015560c084015160058301805493949193909260ff19909116919084908111156106f1576106f1611bd9565b021790555050604080518681526001600160401b03848116602083015286168183015260608101859052436080820152905187925088918a917fbf83cb51dc9b2762f914e1d698459c59bfbcc9f8c28de27260d3172051e249c49181900360a00190a4505f60045595945050505050565b5f5f6004545f14610786576040516306fda65d60e31b815260040160405180910390fd5b600160045560035460ff16156107af576040516313d0ff5960e31b815260040160405180910390fd5b5f8681526020819052604090206001600582015460ff1660028111156107d7576107d7611bd9565b146107f5576040516314b00a6960e21b815260040160405180910390fd5b600381015460405163d01e8afb60e01b81525f917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169163d01e8afb9161085c91600160401b9091046001600160401b0316908b908b90600401611cd3565b602060405180830381865afa158015610877573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061089b9190611d11565b60028301549091505f906108af9083611d3c565b90505f6108c684600101548560020154848a611591565b600485015490915060646108db82600a611d4f565b6108e59190611d66565b95506108f18682611d79565b60058601805460ff19166002908117909155805491985082915f90610917908490611d79565b9091555061092790508288611784565b6109517f000000000000000000000000000000000000000000000000000000000000000087611784565b60408051848152602081018990529081018790526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691908416908d907f2de951bdc7c7ff20b3ed94fa274f219a013b24c78348ab0cafd4eb3f4168b5c79060600160405180910390a450505050505f60048190555094509492505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a22576040516310d724e560e31b815260040160405180910390fd5b6003805460ff191690556040515f81527f8fb6c181ee25a520cf3dd6565006ef91229fcfe5a989566c2a3b8c115570cec5906020015b60405180910390a1565b60045415610a83576040516306fda65d60e31b815260040160405180910390fd5b600160045560035460ff1615610aac576040516313d0ff5960e31b815260040160405180910390fd5b604051631e7945ad60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f917f000000000000000000000000000000000000000000000000000000000000000090911690633cf28b5a906024016101e060405180830381865afa158015610b35573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b599190611e22565b9050806101c001511580610ba357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681602001516001600160a01b031614155b15610bc157604051632cad4d4b60e21b815260040160405180910390fd5b60608101516001600160a01b03163014610c045760608101516040516321aa67ed60e21b81526001600160a01b0390911660048201526024015b60405180910390fd5b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663160d0da56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c61573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c859190611f2c565b9050801515826101200151151514610cb05760405163355596c560e01b815260040160405180910390fd5b81610120015115610cd457604051631865a05360e01b815260040160405180910390fd5b604051631b94ddcd60e11b81525f60048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633729bb9a906024015f604051808303815f87803b158015610d32575f5ffd5b505af1158015610d44573d5f5f3e3d5ffd5b50506040516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692503391507f7e0390b46dda0aa2229b1c5745b28a9232d4d61b6903bb70779a3282ecee0b18905f90a350505f600455565b5f6004545f14610dc8576040516306fda65d60e31b815260040160405180910390fd5b600160045560035460ff1615610df1576040516313d0ff5960e31b815260040160405180910390fd5b60405163f59e38b760e01b81523060048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660248301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063f59e38b790604401602060405180830381865afa158015610e7f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ea39190611d11565b90507f0000000000000000000000000000000000000000000000000000000000000000811015610ee957604051633683f63960e11b815260048101829052602401610bfb565b6040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610f4d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f719190611d11565b6040516332f289cf60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301529192507f0000000000000000000000000000000000000000000000000000000000000000909116906332f289cf906024016020604051808303815f875af1158015610ffb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061101f9190611d11565b506040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611084573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110a89190611d11565b90508181116110ca57604051637ecb222560e11b815260040160405180910390fd5b6110d48282611d79565b93508360015f8282546110e79190611cba565b909155505060405184815233907f9493e5bbe4e8e0ac67284469a2d677403d0378a85a59e341d3abc433d0d9a2099060200160405180910390a250505f6004555090565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611174576040516310d724e560e31b815260040160405180910390fd5b6003805460ff191660019081179091556040519081527f8fb6c181ee25a520cf3dd6565006ef91229fcfe5a989566c2a3b8c115570cec590602001610a58565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111fd576040516310d724e560e31b815260040160405180910390fd5b6004541561121e576040516306fda65d60e31b815260040160405180910390fd5b60016004556001600160a01b038116158061124157506001600160a01b03811630145b1561125f57604051631faab26360e01b815260040160405180910390fd5b604051632931861b60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015282811660248301527f00000000000000000000000000000000000000000000000000000000000000001690632931861b906044015f604051808303815f87803b1580156112e7575f5ffd5b505af11580156112f9573d5f5f3e3d5ffd5b5050604051631e7945ad60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f93507f0000000000000000000000000000000000000000000000000000000000000000169150633cf28b5a906024016101e060405180830381865afa158015611384573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113a89190611e22565b606001519050816001600160a01b0316816001600160a01b0316146113eb5760405163fb93fe4960e01b81526001600160a01b0382166004820152602401610bfb565b6040516001600160a01b0383169033907f2e76da7884425b2ec0bd3138de7dc501275d0f7a4c67dd7273d648972be31577905f90a350505f600455565b5f6004545f1461144b576040516306fda65d60e31b815260040160405180910390fd5b600160045560035460ff1615611474576040516313d0ff5960e31b815260040160405180910390fd5b6040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156114d8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114fc9190611d11565b90505f60025460015461150f9190611cba565b905080821161153157604051630d44987f60e21b815260040160405180910390fd5b61153b8183611d79565b92508260015f82825461154e9190611cba565b909155505060405183815233907fcb2e84b08a7a96bf62a4416748a26a53aeb0f87dd26e2ef25bc46df567411b349060200160405180910390a250505f60045590565b5f61159f6020830183611c69565b90506001600160a01b03811615806115bf57508160400135826020013510155b806115cd5750838260400135115b806115db5750816020013583105b806115ea575081604001358310155b80611603575060406115ff6080840184611f45565b9050115b156116215760405163a1b0ba7d60e01b815260040160405180910390fd5b6040805160a06020828101829052601260c084015271474d5f484f4c4445525f52414e47455f563160701b60e08401526001600160a01b0385168385015285013560608301529184013560808201529081018590525f906101000160408051601f198184030181529190528051602090910120905060608301355f5b6116aa6080860186611f45565b905081101561174d575f6116c16080870187611f45565b838181106116d1576116d1611f91565b905060200201359050826001165f146117135760408051602081018390529081018590526060016040516020818303038152906040528051906020012061173e565b6040805160208101869052908101829052606001604051602081830303815290604052805190602001205b935050600191821c910161169d565b508015158061175c5750868214155b1561177a5760405163a1b0ba7d60e01b815260040160405180910390fd5b5050949350505050565b6040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156117e8573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061180c9190611d11565b6040516370a0823160e01b81526001600160a01b0385811660048301529192505f917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015611875573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118999190611d11565b60405163a9059cbb60e01b81526001600160a01b038681166004830152602482018690529192505f917f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303815f875af115801561190a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061192e9190611f2c565b90508061194e576040516312171d8360e31b815260040160405180910390fd5b6040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156119b2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119d69190611d11565b6040516370a0823160e01b81526001600160a01b0388811660048301529192505f917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015611a3f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a639190611d11565b905085611a708387611d79565b141580611a86575085611a838583611d79565b14155b15611aa457604051631dc418c360e31b815260040160405180910390fd5b50505050505050565b6001600160401b0381168114611ac1575f5ffd5b50565b5f5f5f5f5f60a08688031215611ad8575f5ffd5b853594506020860135935060408601359250606086013591506080860135611aff81611aad565b809150509295509295909350565b5f60a08284031215611b1d575f5ffd5b50919050565b5f5f5f5f60608587031215611b36575f5ffd5b8435935060208501356001600160401b03811115611b52575f5ffd5b8501601f81018713611b62575f5ffd5b80356001600160401b03811115611b77575f5ffd5b876020828401011115611b88575f5ffd5b6020919091019350915060408501356001600160401b03811115611baa575f5ffd5b611bb687828801611b0d565b91505092959194509250565b5f60208284031215611bd2575f5ffd5b5035919050565b634e487b7160e01b5f52602160045260245ffd5b5f60e0820190508882528760208301528660408301526001600160401b03861660608301526001600160401b03851660808301528360a083015260038310611c4357634e487b7160e01b5f52602160045260245ffd5b8260c083015298975050505050505050565b6001600160a01b0381168114611ac1575f5ffd5b5f60208284031215611c79575f5ffd5b8135611c8481611c55565b9392505050565b5f60208284031215611c9b575f5ffd5b8151611c8481611aad565b634e487b7160e01b5f52601160045260245ffd5b80820180821115611ccd57611ccd611ca6565b92915050565b6001600160401b038416815260406020820152816040820152818360608301375f818301606090810191909152601f909201601f1916010192915050565b5f60208284031215611d21575f5ffd5b5051919050565b634e487b7160e01b5f52601260045260245ffd5b5f82611d4a57611d4a611d28565b500690565b8082028115828204841417611ccd57611ccd611ca6565b5f82611d7457611d74611d28565b500490565b81810381811115611ccd57611ccd611ca6565b6040516101e081016001600160401b0381118282101715611dbb57634e487b7160e01b5f52604160045260245ffd5b60405290565b8051611dcc81611c55565b919050565b805162ffffff81168114611dcc575f5ffd5b8051600281900b8114611dcc575f5ffd5b805161ffff81168114611dcc575f5ffd5b80518015158114611dcc575f5ffd5b805160048110611dcc575f5ffd5b5f6101e0828403128015611e34575f5ffd5b50611e3d611d8c565b611e4683611dc1565b8152611e5460208401611dc1565b6020820152611e6560408401611dc1565b6040820152611e7660608401611dc1565b6060820152611e8760808401611dc1565b608082015260a08381015190820152611ea260c08401611dd1565b60c0820152611eb360e08401611de3565b60e0820152611ec56101008401611df4565b610100820152611ed86101208401611e05565b610120820152611eeb6101408401611e14565b610140820152610160838101519082015261018080840151908201526101a08084015190820152611f1f6101c08401611e05565b6101c08201529392505050565b5f60208284031215611f3c575f5ffd5b611c8482611e05565b5f5f8335601e19843603018112611f5a575f5ffd5b8301803591506001600160401b03821115611f73575f5ffd5b6020019150600581901b3603821315611f8a575f5ffd5b9250929050565b634e487b7160e01b5f52603260045260245ffdfea2646970667358221220556cd712a4792d992aa87f29620f1a7a77704df351174be72f812ead5ef234ed64736f6c63430008220033",
    "runtimeTemplate": "608060405234801561000f575f5ffd5b506004361061013d575f3560e01c80638456cb59116100b4578063ab2f0e5111610079578063ab2f0e511461036c578063ca5a84de14610375578063cfc98a2414610388578063d2bdd90314610390578063d9c61db3146103b7578063e20ffb3f146103de575f5ffd5b80638456cb59146102835780638735c2031461028b578063939326a3146102b2578063a3efd7f6146102d9578063a41e4c7014610300575f5ffd5b806357ae3a9f1161010557806357ae3a9f146101e057806359d098ce146102075780635c975abb1461020f5780637f3d1b1c1461022c57806380e4c1de146102535780638309e8b41461025c575f5ffd5b80631e86e67e146101415780632a2bee7c146101675780633f4ba83a1461018f5780634baebae5146101995780635442e4d7146101d8575b5f5ffd5b61015461014f366004611ac4565b610405565b6040519081526020015b60405180910390f35b61017a610175366004611b23565b610762565b6040805192835260208301919091520161015e565b6101976109d9565b005b6101c07f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161015e565b610197610a62565b6101c07f000000000000000000000000000000000000000000000000000000000000000081565b610154610da5565b60035461021c9060ff1681565b604051901515815260200161015e565b6101c07f000000000000000000000000000000000000000000000000000000000000000081565b61015460025481565b6101547f000000000000000000000000000000000000000000000000000000000000000081565b61019761112b565b6101c07f000000000000000000000000000000000000000000000000000000000000000081565b6101c07f000000000000000000000000000000000000000000000000000000000000000081565b6101c07f000000000000000000000000000000000000000000000000000000000000000081565b61035961030e366004611bc2565b5f602081905290815260409020805460018201546002830154600384015460048501546005909501549394929391926001600160401b0380831693600160401b909304169160ff1687565b60405161015e9796959493929190611bed565b61015460015481565b610197610383366004611c69565b6111b4565b610154611428565b6101c07f000000000000000000000000000000000000000000000000000000000000000081565b6101c07f000000000000000000000000000000000000000000000000000000000000000081565b6101c07f000000000000000000000000000000000000000000000000000000000000000081565b5f336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461044f57604051632e3bec6160e01b815260040160405180910390fd5b60045415610470576040516306fda65d60e31b815260040160405180910390fd5b600160045560035460ff1615610499576040516313d0ff5960e31b815260040160405180910390fd5b8515806104a4575084155b806104ad575083155b806104b6575082155b156104d457604051636033c4fd60e11b815260040160405180910390fd5b5f8681526020819052604081206005015460ff1660028111156104f9576104f9611bd9565b146105175760405163dbcec1a760e01b815260040160405180910390fd5b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638a19c8bc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610574573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105989190611c8b565b9050806001600160401b0316836001600160401b0316116105cc57604051636ebc65d960e11b815260040160405180910390fd5b6001549150815f036105f157604051637c0160a760e01b815260040160405180910390fd5b5f6001819055508160025f8282546106099190611cba565b90915550506040805160e081018252878152602081018790529081018590526001600160401b0380831660608301528416608082015260a0810183905260c08101600190525f8881526020818152604091829020835181559083015160018083019190915591830151600280830191909155606084015160038301805460808701516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff1990921693169290921791909117905560a0840151600483015560c084015160058301805493949193909260ff19909116919084908111156106f1576106f1611bd9565b021790555050604080518681526001600160401b03848116602083015286168183015260608101859052436080820152905187925088918a917fbf83cb51dc9b2762f914e1d698459c59bfbcc9f8c28de27260d3172051e249c49181900360a00190a4505f60045595945050505050565b5f5f6004545f14610786576040516306fda65d60e31b815260040160405180910390fd5b600160045560035460ff16156107af576040516313d0ff5960e31b815260040160405180910390fd5b5f8681526020819052604090206001600582015460ff1660028111156107d7576107d7611bd9565b146107f5576040516314b00a6960e21b815260040160405180910390fd5b600381015460405163d01e8afb60e01b81525f917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169163d01e8afb9161085c91600160401b9091046001600160401b0316908b908b90600401611cd3565b602060405180830381865afa158015610877573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061089b9190611d11565b60028301549091505f906108af9083611d3c565b90505f6108c684600101548560020154848a611591565b600485015490915060646108db82600a611d4f565b6108e59190611d66565b95506108f18682611d79565b60058601805460ff19166002908117909155805491985082915f90610917908490611d79565b9091555061092790508288611784565b6109517f000000000000000000000000000000000000000000000000000000000000000087611784565b60408051848152602081018990529081018790526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691908416908d907f2de951bdc7c7ff20b3ed94fa274f219a013b24c78348ab0cafd4eb3f4168b5c79060600160405180910390a450505050505f60048190555094509492505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a22576040516310d724e560e31b815260040160405180910390fd5b6003805460ff191690556040515f81527f8fb6c181ee25a520cf3dd6565006ef91229fcfe5a989566c2a3b8c115570cec5906020015b60405180910390a1565b60045415610a83576040516306fda65d60e31b815260040160405180910390fd5b600160045560035460ff1615610aac576040516313d0ff5960e31b815260040160405180910390fd5b604051631e7945ad60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f917f000000000000000000000000000000000000000000000000000000000000000090911690633cf28b5a906024016101e060405180830381865afa158015610b35573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b599190611e22565b9050806101c001511580610ba357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681602001516001600160a01b031614155b15610bc157604051632cad4d4b60e21b815260040160405180910390fd5b60608101516001600160a01b03163014610c045760608101516040516321aa67ed60e21b81526001600160a01b0390911660048201526024015b60405180910390fd5b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663160d0da56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c61573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c859190611f2c565b9050801515826101200151151514610cb05760405163355596c560e01b815260040160405180910390fd5b81610120015115610cd457604051631865a05360e01b815260040160405180910390fd5b604051631b94ddcd60e11b81525f60048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633729bb9a906024015f604051808303815f87803b158015610d32575f5ffd5b505af1158015610d44573d5f5f3e3d5ffd5b50506040516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692503391507f7e0390b46dda0aa2229b1c5745b28a9232d4d61b6903bb70779a3282ecee0b18905f90a350505f600455565b5f6004545f14610dc8576040516306fda65d60e31b815260040160405180910390fd5b600160045560035460ff1615610df1576040516313d0ff5960e31b815260040160405180910390fd5b60405163f59e38b760e01b81523060048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660248301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063f59e38b790604401602060405180830381865afa158015610e7f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ea39190611d11565b90507f0000000000000000000000000000000000000000000000000000000000000000811015610ee957604051633683f63960e11b815260048101829052602401610bfb565b6040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610f4d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f719190611d11565b6040516332f289cf60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301529192507f0000000000000000000000000000000000000000000000000000000000000000909116906332f289cf906024016020604051808303815f875af1158015610ffb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061101f9190611d11565b506040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611084573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110a89190611d11565b90508181116110ca57604051637ecb222560e11b815260040160405180910390fd5b6110d48282611d79565b93508360015f8282546110e79190611cba565b909155505060405184815233907f9493e5bbe4e8e0ac67284469a2d677403d0378a85a59e341d3abc433d0d9a2099060200160405180910390a250505f6004555090565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611174576040516310d724e560e31b815260040160405180910390fd5b6003805460ff191660019081179091556040519081527f8fb6c181ee25a520cf3dd6565006ef91229fcfe5a989566c2a3b8c115570cec590602001610a58565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111fd576040516310d724e560e31b815260040160405180910390fd5b6004541561121e576040516306fda65d60e31b815260040160405180910390fd5b60016004556001600160a01b038116158061124157506001600160a01b03811630145b1561125f57604051631faab26360e01b815260040160405180910390fd5b604051632931861b60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015282811660248301527f00000000000000000000000000000000000000000000000000000000000000001690632931861b906044015f604051808303815f87803b1580156112e7575f5ffd5b505af11580156112f9573d5f5f3e3d5ffd5b5050604051631e7945ad60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f93507f0000000000000000000000000000000000000000000000000000000000000000169150633cf28b5a906024016101e060405180830381865afa158015611384573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113a89190611e22565b606001519050816001600160a01b0316816001600160a01b0316146113eb5760405163fb93fe4960e01b81526001600160a01b0382166004820152602401610bfb565b6040516001600160a01b0383169033907f2e76da7884425b2ec0bd3138de7dc501275d0f7a4c67dd7273d648972be31577905f90a350505f600455565b5f6004545f1461144b576040516306fda65d60e31b815260040160405180910390fd5b600160045560035460ff1615611474576040516313d0ff5960e31b815260040160405180910390fd5b6040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156114d8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114fc9190611d11565b90505f60025460015461150f9190611cba565b905080821161153157604051630d44987f60e21b815260040160405180910390fd5b61153b8183611d79565b92508260015f82825461154e9190611cba565b909155505060405183815233907fcb2e84b08a7a96bf62a4416748a26a53aeb0f87dd26e2ef25bc46df567411b349060200160405180910390a250505f60045590565b5f61159f6020830183611c69565b90506001600160a01b03811615806115bf57508160400135826020013510155b806115cd5750838260400135115b806115db5750816020013583105b806115ea575081604001358310155b80611603575060406115ff6080840184611f45565b9050115b156116215760405163a1b0ba7d60e01b815260040160405180910390fd5b6040805160a06020828101829052601260c084015271474d5f484f4c4445525f52414e47455f563160701b60e08401526001600160a01b0385168385015285013560608301529184013560808201529081018590525f906101000160408051601f198184030181529190528051602090910120905060608301355f5b6116aa6080860186611f45565b905081101561174d575f6116c16080870187611f45565b838181106116d1576116d1611f91565b905060200201359050826001165f146117135760408051602081018390529081018590526060016040516020818303038152906040528051906020012061173e565b6040805160208101869052908101829052606001604051602081830303815290604052805190602001205b935050600191821c910161169d565b508015158061175c5750868214155b1561177a5760405163a1b0ba7d60e01b815260040160405180910390fd5b5050949350505050565b6040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156117e8573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061180c9190611d11565b6040516370a0823160e01b81526001600160a01b0385811660048301529192505f917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015611875573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118999190611d11565b60405163a9059cbb60e01b81526001600160a01b038681166004830152602482018690529192505f917f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303815f875af115801561190a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061192e9190611f2c565b90508061194e576040516312171d8360e31b815260040160405180910390fd5b6040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156119b2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119d69190611d11565b6040516370a0823160e01b81526001600160a01b0388811660048301529192505f917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015611a3f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a639190611d11565b905085611a708387611d79565b141580611a86575085611a838583611d79565b14155b15611aa457604051631dc418c360e31b815260040160405180910390fd5b50505050505050565b6001600160401b0381168114611ac1575f5ffd5b50565b5f5f5f5f5f60a08688031215611ad8575f5ffd5b853594506020860135935060408601359250606086013591506080860135611aff81611aad565b809150509295509295909350565b5f60a08284031215611b1d575f5ffd5b50919050565b5f5f5f5f60608587031215611b36575f5ffd5b8435935060208501356001600160401b03811115611b52575f5ffd5b8501601f81018713611b62575f5ffd5b80356001600160401b03811115611b77575f5ffd5b876020828401011115611b88575f5ffd5b6020919091019350915060408501356001600160401b03811115611baa575f5ffd5b611bb687828801611b0d565b91505092959194509250565b5f60208284031215611bd2575f5ffd5b5035919050565b634e487b7160e01b5f52602160045260245ffd5b5f60e0820190508882528760208301528660408301526001600160401b03861660608301526001600160401b03851660808301528360a083015260038310611c4357634e487b7160e01b5f52602160045260245ffd5b8260c083015298975050505050505050565b6001600160a01b0381168114611ac1575f5ffd5b5f60208284031215611c79575f5ffd5b8135611c8481611c55565b9392505050565b5f60208284031215611c9b575f5ffd5b8151611c8481611aad565b634e487b7160e01b5f52601160045260245ffd5b80820180821115611ccd57611ccd611ca6565b92915050565b6001600160401b038416815260406020820152816040820152818360608301375f818301606090810191909152601f909201601f1916010192915050565b5f60208284031215611d21575f5ffd5b5051919050565b634e487b7160e01b5f52601260045260245ffd5b5f82611d4a57611d4a611d28565b500690565b8082028115828204841417611ccd57611ccd611ca6565b5f82611d7457611d74611d28565b500490565b81810381811115611ccd57611ccd611ca6565b6040516101e081016001600160401b0381118282101715611dbb57634e487b7160e01b5f52604160045260245ffd5b60405290565b8051611dcc81611c55565b919050565b805162ffffff81168114611dcc575f5ffd5b8051600281900b8114611dcc575f5ffd5b805161ffff81168114611dcc575f5ffd5b80518015158114611dcc575f5ffd5b805160048110611dcc575f5ffd5b5f6101e0828403128015611e34575f5ffd5b50611e3d611d8c565b611e4683611dc1565b8152611e5460208401611dc1565b6020820152611e6560408401611dc1565b6040820152611e7660608401611dc1565b6060820152611e8760808401611dc1565b608082015260a08381015190820152611ea260c08401611dd1565b60c0820152611eb360e08401611de3565b60e0820152611ec56101008401611df4565b610100820152611ed86101208401611e05565b610120820152611eeb6101408401611e14565b610140820152610160838101519082015261018080840151908201526101a08084015190820152611f1f6101c08401611e05565b6101c08201529392505050565b5f60208284031215611f3c575f5ffd5b611c8482611e05565b5f5f8335601e19843603018112611f5a575f5ffd5b8301803591506001600160401b03821115611f73575f5ffd5b6020019150600581901b3603821315611f8a575f5ffd5b9250929050565b634e487b7160e01b5f52603260045260245ffdfea2646970667358221220556cd712a4792d992aa87f29620f1a7a77704df351174be72f812ead5ef234ed64736f6c63430008220033",
    "immutableReferences": {
      "1079": [
        {
          "length": 32,
          "start": 695
        },
        {
          "length": 32,
          "start": 2922
        },
        {
          "length": 32,
          "start": 3079
        },
        {
          "length": 32,
          "start": 3305
        },
        {
          "length": 32,
          "start": 3411
        }
      ],
      "1082": [
        {
          "length": 32,
          "start": 414
        },
        {
          "length": 32,
          "start": 2797
        },
        {
          "length": 32,
          "start": 4774
        },
        {
          "length": 32,
          "start": 4925
        }
      ],
      "55": [
        {
          "length": 32,
          "start": 609
        },
        {
          "length": 32,
          "start": 3751
        }
      ],
      "58": [
        {
          "length": 32,
          "start": 956
        },
        {
          "length": 32,
          "start": 3640
        },
        {
          "length": 32,
          "start": 4019
        }
      ],
      "60": [
        {
          "length": 32,
          "start": 995
        },
        {
          "length": 32,
          "start": 2755
        },
        {
          "length": 32,
          "start": 4726
        },
        {
          "length": 32,
          "start": 4882
        }
      ],
      "63": [
        {
          "length": 32,
          "start": 485
        },
        {
          "length": 32,
          "start": 3598
        },
        {
          "length": 32,
          "start": 3840
        },
        {
          "length": 32,
          "start": 3976
        },
        {
          "length": 32,
          "start": 4151
        },
        {
          "length": 32,
          "start": 5259
        },
        {
          "length": 32,
          "start": 6043
        },
        {
          "length": 32,
          "start": 6192
        },
        {
          "length": 32,
          "start": 6340
        },
        {
          "length": 32,
          "start": 6501
        },
        {
          "length": 32,
          "start": 6650
        }
      ],
      "65": [
        {
          "length": 32,
          "start": 656
        },
        {
          "length": 32,
          "start": 2348
        },
        {
          "length": 32,
          "start": 2415
        }
      ],
      "67": [
        {
          "length": 32,
          "start": 561
        },
        {
          "length": 32,
          "start": 2532
        },
        {
          "length": 32,
          "start": 4406
        },
        {
          "length": 32,
          "start": 4543
        }
      ],
      "69": [
        {
          "length": 32,
          "start": 734
        },
        {
          "length": 32,
          "start": 1041
        }
      ],
      "72": [
        {
          "length": 32,
          "start": 917
        },
        {
          "length": 32,
          "start": 1306
        },
        {
          "length": 32,
          "start": 2059
        }
      ]
    },
    "immutableNames": {
      "1079": "PONS_CURVE",
      "1082": "PONS_FACTORY",
      "55": "MINIMUM_CLAIMABLE_USDG",
      "58": "PONS_ESCROW",
      "60": "GM_TOKEN",
      "63": "USDG",
      "65": "RESERVE_SAFE",
      "67": "RECOVERY_SAFE",
      "69": "COMMITTER",
      "72": "DRAW_VERIFIER"
    }
  },
  "GMDrandQuicknetVerifier": {
    "abi": [
      {
        "inputs": [],
        "name": "BeforeGenesis",
        "type": "error"
      },
      {
        "inputs": [],
        "name": "InvalidBeacon",
        "type": "error"
      },
      {
        "inputs": [
          {
            "internalType": "bytes",
            "name": "dst",
            "type": "bytes"
          }
        ],
        "name": "InvalidDSTLength",
        "type": "error"
      },
      {
        "inputs": [],
        "name": "InvalidSignatureLength",
        "type": "error"
      },
      {
        "inputs": [],
        "name": "CHAIN_HASH",
        "outputs": [
          {
            "internalType": "bytes32",
            "name": "",
            "type": "bytes32"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "COMPRESSED_SIGNATURE_LENGTH",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "",
            "type": "uint256"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "DST",
        "outputs": [
          {
            "internalType": "string",
            "name": "",
            "type": "string"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "GENESIS_TIMESTAMP",
        "outputs": [
          {
            "internalType": "uint64",
            "name": "",
            "type": "uint64"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "PERIOD_SECONDS",
        "outputs": [
          {
            "internalType": "uint64",
            "name": "",
            "type": "uint64"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "currentRound",
        "outputs": [
          {
            "internalType": "uint64",
            "name": "",
            "type": "uint64"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "uint64",
            "name": "round",
            "type": "uint64"
          },
          {
            "internalType": "bytes",
            "name": "signature",
            "type": "bytes"
          }
        ],
        "name": "verifyBeacon",
        "outputs": [
          {
            "internalType": "bytes32",
            "name": "randomness",
            "type": "bytes32"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      }
    ],
    "creation": "6080604052348015600e575f5ffd5b506111688061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061007a575f3560e01c80639acbc4ca116100585780639acbc4ca146100c4578063d01e8afb146100f9578063d7ddd0331461010c578063d8a441cb14610114575f5ffd5b80630c204d441461007e5780635f7c7522146100a75780638a19c8bc146100bc575b5f5ffd5b6100896364e6212781565b60405167ffffffffffffffff90911681526020015b60405180910390f35b6100af61011c565b60405161009e9190610e68565b610089610138565b6100eb7f52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e97181565b60405190815260200161009e565b6100eb610107366004610e81565b610188565b610089600381565b6100eb603081565b6040518060600160405280602b81526020016110e8602b913981565b5f6364e6212742101561015e576040516302825c0d60e61b815260040160405180910390fd5b600361016e6364e6212742610f21565b6101789190610f3a565b610183906001610f59565b905090565b5f603082146101aa57604051634be6321b60e01b815260040160405180910390fd5b5f6101e984848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061047b92505050565b90505f6102a36040518060600160405280602b81526020016110e8602b91396040516001600160c01b031960c08a901b16602082015260029060280160408051601f198184030181529082905261023f91610f90565b602060405180830381855afa15801561025a573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061027d9190610f9b565b60405160200161028f91815260200190565b604051602081830303815290604052610804565b90505f5f6103f2846103ec60408051610100810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091525060408051610100810182526f03cf0f2896adee7eb8b5f01fcad3912281527f12c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d10645160208201526f0d1fec758c921cc22b0e17e63aaf4bcb918101919091527f5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a60608201526f01a714f2edb74119a2f2b0d5a7c75ba960808201527f02d163700a61bc224ededd8e63aef7be1aaf8e93d7a9718b047ccddb3eb5d68b60a08201526f0e5db2b6bfbb01c867749cadffca88b360c08201527f6c24f3012ba09fc4d3022c5c37dce0f977d3adb5d183c7477c442b1f0451527360e082015290565b85610956565b91509150811580610401575080155b1561041f576040516330740e7560e01b815260040160405180910390fd5b60028787604051610431929190610fb2565b602060405180830381855afa15801561044c573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061046f9190610f9b565b98975050505050505050565b610483610de6565b81516030146104d95760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964204731206279746573206c656e67746800000000000000000060448201526064015b60405180910390fd5b6040805161012080825261014082019092525f9182918291829182916020820181803683370190505060208801516030890151608082811c6f1fffffffffffffffffffffffffffffff1698509096509192505f90811a91821681036105805760405162461bcd60e51b815260206004820181905260248201527f496e76616c696420473120706f696e743a206e6f7420636f6d7072657373656460448201526064016104d0565b60408216156105d15760405162461bcd60e51b815260206004820152601e60248201527f756e737570706f727465643a20706f696e7420617420696e66696e697479000060448201526064016104d0565b602082165f036105df575060015b60406020840181905260018185015260608401526080830187905260a083018690525f60c08401600381536f1a0111ea397fe69a4b1ba7b6434bacd760018201525f5160206111135f395f51905f5260219091015260406020850160e18160055afa905060208401519550604084015194508061065e5761065e610fd5565b60049485019485101561067957610676600187610fe9565b95505b604060208501818152818601829052606086018290526080860188905260a086018790526f0680447a8e5ff9a692c6e9ed90d2eb3560c08701527fd91dd2e13ce144afd9cc34a83dac3d8907aaffffac54ffffee7fbfffffffeaab60e08701526f1a0111ea397fe69a4b1ba7b6434bacd76101008701525f5160206111135f395f51905f52610120808801919091528160055afa905060208401519550604084015194508061072a5761072a610fd5565b5f610745876f1a0111ea397fe69a4b1ba7b6434bacd7611008565b90505f5160206111135f395f51905f528681039081111561076e5761076b600183611008565b91505b5f826001600160801b0316896001600160801b031611806107aa5750826001600160801b0316896001600160801b03161480156107aa57508188115b151585151514905080156107bf578298508197505b60405180608001604052808c6001600160801b031681526020018b81526020018a6001600160801b03168152602001898152509b505050505050505050505050919050565b61080c610de6565b5f61081984846080610b81565b6040805160e180825261012082019092529192505f919060208201818036833750506040805161010080825261012082019092529293505f9291506020820181803683370190505090505f805b60028110156108ff57604060208581018290526001828701526060860182905281830287010190608086019082825e604001600181536f1a0111ea397fe69a4b1ba7b6434bacd760018201525f5160206111135f395f51905f5260219091015260408160e16020880160055afa925060808083028501602001908160408460105afa841693505050816108f7575f5ffd5b600101610866565b5060808561010060208501600b5afa90508061094c5760405162461bcd60e51b815260206004820152600c60248201526b19cc5859190819985a5b195960a21b60448201526064016104d0565b5050505092915050565b5f5f5f604051806103000160405280875f01516001600160801b031681526020018760200151815260200187604001516001600160801b03168152602001876060015181526020016f024aa2b2f08f0a91260805272dc510516001600160801b031681526020017fc6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb881526020016f13e02b6052719f607dacd3a088274f656001600160801b031681526020017f596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e81526020016f0d1b3cc2c7027888be51d9ef691d77bc6001600160801b031681526020017fb679afda66c73f17f9ee3837a55024f78c71363275a75d75d86bab79f74782aa81526020016f13fa4d4a0ad8b1ce186ed5061789213d6001600160801b031681526020017f993923066dddaf1040bc3ff59f825c78df74f2d75467e25e0f55f8a00fa030ed8152602001855f01516001600160801b031681526020018560200151815260200185604001516001600160801b031681526020018560600151815260200186604001516001600160801b0316815260200186606001518152602001865f01516001600160801b03168152602001866020015181526020018660c001516001600160801b031681526020018660e00151815260200186608001516001600160801b031681526020018660a001518152509050610b66610e1c565b60208161030084600f5afa9051151597909650945050505050565b825160609060ff811115610baa57846040516313727cdd60e11b81526004016104d09190610e68565b604080518181526060810182525f916020820181803683370190505090505f81865f875f8b88604051602001610be69796959493929190611027565b60405160208183030381529060405290505f600282604051610c089190610f90565b602060405180830381855afa158015610c23573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610c469190610f9b565b90505f8160018a87604051602001610c619493929190611091565b60405160208183030381529060405290505f600282604051610c839190610f90565b602060405180830381855afa158015610c9e573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610cc19190610f9b565b90505f8860ff1667ffffffffffffffff811115610ce057610ce0610fc1565b6040519080825280601f01601f191660200182016040528015610d0a576020820181803683370190505b5090505f6005610d1e601f60ff8d166110d4565b901c905060015b81811015610dc857858418610d3b8260016110d4565b8e8b604051602001610d509493929190611091565b60408051808303601f1901815291815260205f198401810286010186905251909550600290610d80908790610f90565b602060405180830381855afa158015610d9b573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610dbe9190610f9b565b9350600101610d25565b505f1901602090810282010191909152955050505050509392505050565b60405180608001604052805f6001600160801b031681526020015f81526020015f6001600160801b031681526020015f81525090565b60405180602001604052806001906020820280368337509192915050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610e7a6020830184610e3a565b9392505050565b5f5f5f60408486031215610e93575f5ffd5b833567ffffffffffffffff81168114610eaa575f5ffd5b9250602084013567ffffffffffffffff811115610ec5575f5ffd5b8401601f81018613610ed5575f5ffd5b803567ffffffffffffffff811115610eeb575f5ffd5b866020828401011115610efc575f5ffd5b939660209190910195509293505050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610f3457610f34610f0d565b92915050565b5f82610f5457634e487b7160e01b5f52601260045260245ffd5b500490565b67ffffffffffffffff8181168382160190811115610f3457610f34610f0d565b5f81518060208401855e5f93019283525090919050565b5f610e7a8284610f79565b5f60208284031215610fab575f5ffd5b5051919050565b818382375f9101908152919050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52600160045260245ffd5b6001600160801b038181168382160190811115610f3457610f34610f0d565b6001600160801b038281168282160390811115610f3457610f34610f0d565b5f61103b611035838b610f79565b89610f79565b6001600160f81b031960f889811b8216835288811b8216600184015287901b16600282015261106d6003820186610f79565b60f89490941b6001600160f81b031916845250506001909101979650505050505050565b84815260f884901b6001600160f81b03191660208201525f6110b66021830185610f79565b60f89390931b6001600160f81b031916835250506001019392505050565b80820180821115610f3457610f34610f0d56fe424c535f5349475f424c53313233383147315f584d443a5348412d3235365f535357555f524f5f4e554c5f64774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaaba26469706673582212201ede23dc25ae92ac1c5a4136678d28a4d419e3094812ad86075c54cd093ced8664736f6c63430008220033",
    "runtimeTemplate": "608060405234801561000f575f5ffd5b506004361061007a575f3560e01c80639acbc4ca116100585780639acbc4ca146100c4578063d01e8afb146100f9578063d7ddd0331461010c578063d8a441cb14610114575f5ffd5b80630c204d441461007e5780635f7c7522146100a75780638a19c8bc146100bc575b5f5ffd5b6100896364e6212781565b60405167ffffffffffffffff90911681526020015b60405180910390f35b6100af61011c565b60405161009e9190610e68565b610089610138565b6100eb7f52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e97181565b60405190815260200161009e565b6100eb610107366004610e81565b610188565b610089600381565b6100eb603081565b6040518060600160405280602b81526020016110e8602b913981565b5f6364e6212742101561015e576040516302825c0d60e61b815260040160405180910390fd5b600361016e6364e6212742610f21565b6101789190610f3a565b610183906001610f59565b905090565b5f603082146101aa57604051634be6321b60e01b815260040160405180910390fd5b5f6101e984848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061047b92505050565b90505f6102a36040518060600160405280602b81526020016110e8602b91396040516001600160c01b031960c08a901b16602082015260029060280160408051601f198184030181529082905261023f91610f90565b602060405180830381855afa15801561025a573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061027d9190610f9b565b60405160200161028f91815260200190565b604051602081830303815290604052610804565b90505f5f6103f2846103ec60408051610100810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091525060408051610100810182526f03cf0f2896adee7eb8b5f01fcad3912281527f12c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d10645160208201526f0d1fec758c921cc22b0e17e63aaf4bcb918101919091527f5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a60608201526f01a714f2edb74119a2f2b0d5a7c75ba960808201527f02d163700a61bc224ededd8e63aef7be1aaf8e93d7a9718b047ccddb3eb5d68b60a08201526f0e5db2b6bfbb01c867749cadffca88b360c08201527f6c24f3012ba09fc4d3022c5c37dce0f977d3adb5d183c7477c442b1f0451527360e082015290565b85610956565b91509150811580610401575080155b1561041f576040516330740e7560e01b815260040160405180910390fd5b60028787604051610431929190610fb2565b602060405180830381855afa15801561044c573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061046f9190610f9b565b98975050505050505050565b610483610de6565b81516030146104d95760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964204731206279746573206c656e67746800000000000000000060448201526064015b60405180910390fd5b6040805161012080825261014082019092525f9182918291829182916020820181803683370190505060208801516030890151608082811c6f1fffffffffffffffffffffffffffffff1698509096509192505f90811a91821681036105805760405162461bcd60e51b815260206004820181905260248201527f496e76616c696420473120706f696e743a206e6f7420636f6d7072657373656460448201526064016104d0565b60408216156105d15760405162461bcd60e51b815260206004820152601e60248201527f756e737570706f727465643a20706f696e7420617420696e66696e697479000060448201526064016104d0565b602082165f036105df575060015b60406020840181905260018185015260608401526080830187905260a083018690525f60c08401600381536f1a0111ea397fe69a4b1ba7b6434bacd760018201525f5160206111135f395f51905f5260219091015260406020850160e18160055afa905060208401519550604084015194508061065e5761065e610fd5565b60049485019485101561067957610676600187610fe9565b95505b604060208501818152818601829052606086018290526080860188905260a086018790526f0680447a8e5ff9a692c6e9ed90d2eb3560c08701527fd91dd2e13ce144afd9cc34a83dac3d8907aaffffac54ffffee7fbfffffffeaab60e08701526f1a0111ea397fe69a4b1ba7b6434bacd76101008701525f5160206111135f395f51905f52610120808801919091528160055afa905060208401519550604084015194508061072a5761072a610fd5565b5f610745876f1a0111ea397fe69a4b1ba7b6434bacd7611008565b90505f5160206111135f395f51905f528681039081111561076e5761076b600183611008565b91505b5f826001600160801b0316896001600160801b031611806107aa5750826001600160801b0316896001600160801b03161480156107aa57508188115b151585151514905080156107bf578298508197505b60405180608001604052808c6001600160801b031681526020018b81526020018a6001600160801b03168152602001898152509b505050505050505050505050919050565b61080c610de6565b5f61081984846080610b81565b6040805160e180825261012082019092529192505f919060208201818036833750506040805161010080825261012082019092529293505f9291506020820181803683370190505090505f805b60028110156108ff57604060208581018290526001828701526060860182905281830287010190608086019082825e604001600181536f1a0111ea397fe69a4b1ba7b6434bacd760018201525f5160206111135f395f51905f5260219091015260408160e16020880160055afa925060808083028501602001908160408460105afa841693505050816108f7575f5ffd5b600101610866565b5060808561010060208501600b5afa90508061094c5760405162461bcd60e51b815260206004820152600c60248201526b19cc5859190819985a5b195960a21b60448201526064016104d0565b5050505092915050565b5f5f5f604051806103000160405280875f01516001600160801b031681526020018760200151815260200187604001516001600160801b03168152602001876060015181526020016f024aa2b2f08f0a91260805272dc510516001600160801b031681526020017fc6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb881526020016f13e02b6052719f607dacd3a088274f656001600160801b031681526020017f596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e81526020016f0d1b3cc2c7027888be51d9ef691d77bc6001600160801b031681526020017fb679afda66c73f17f9ee3837a55024f78c71363275a75d75d86bab79f74782aa81526020016f13fa4d4a0ad8b1ce186ed5061789213d6001600160801b031681526020017f993923066dddaf1040bc3ff59f825c78df74f2d75467e25e0f55f8a00fa030ed8152602001855f01516001600160801b031681526020018560200151815260200185604001516001600160801b031681526020018560600151815260200186604001516001600160801b0316815260200186606001518152602001865f01516001600160801b03168152602001866020015181526020018660c001516001600160801b031681526020018660e00151815260200186608001516001600160801b031681526020018660a001518152509050610b66610e1c565b60208161030084600f5afa9051151597909650945050505050565b825160609060ff811115610baa57846040516313727cdd60e11b81526004016104d09190610e68565b604080518181526060810182525f916020820181803683370190505090505f81865f875f8b88604051602001610be69796959493929190611027565b60405160208183030381529060405290505f600282604051610c089190610f90565b602060405180830381855afa158015610c23573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610c469190610f9b565b90505f8160018a87604051602001610c619493929190611091565b60405160208183030381529060405290505f600282604051610c839190610f90565b602060405180830381855afa158015610c9e573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610cc19190610f9b565b90505f8860ff1667ffffffffffffffff811115610ce057610ce0610fc1565b6040519080825280601f01601f191660200182016040528015610d0a576020820181803683370190505b5090505f6005610d1e601f60ff8d166110d4565b901c905060015b81811015610dc857858418610d3b8260016110d4565b8e8b604051602001610d509493929190611091565b60408051808303601f1901815291815260205f198401810286010186905251909550600290610d80908790610f90565b602060405180830381855afa158015610d9b573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610dbe9190610f9b565b9350600101610d25565b505f1901602090810282010191909152955050505050509392505050565b60405180608001604052805f6001600160801b031681526020015f81526020015f6001600160801b031681526020015f81525090565b60405180602001604052806001906020820280368337509192915050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610e7a6020830184610e3a565b9392505050565b5f5f5f60408486031215610e93575f5ffd5b833567ffffffffffffffff81168114610eaa575f5ffd5b9250602084013567ffffffffffffffff811115610ec5575f5ffd5b8401601f81018613610ed5575f5ffd5b803567ffffffffffffffff811115610eeb575f5ffd5b866020828401011115610efc575f5ffd5b939660209190910195509293505050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610f3457610f34610f0d565b92915050565b5f82610f5457634e487b7160e01b5f52601260045260245ffd5b500490565b67ffffffffffffffff8181168382160190811115610f3457610f34610f0d565b5f81518060208401855e5f93019283525090919050565b5f610e7a8284610f79565b5f60208284031215610fab575f5ffd5b5051919050565b818382375f9101908152919050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52600160045260245ffd5b6001600160801b038181168382160190811115610f3457610f34610f0d565b6001600160801b038281168282160390811115610f3457610f34610f0d565b5f61103b611035838b610f79565b89610f79565b6001600160f81b031960f889811b8216835288811b8216600184015287901b16600282015261106d6003820186610f79565b60f89490941b6001600160f81b031916845250506001909101979650505050505050565b84815260f884901b6001600160f81b03191660208201525f6110b66021830185610f79565b60f89390931b6001600160f81b031916835250506001019392505050565b80820180821115610f3457610f34610f0d56fe424c535f5349475f424c53313233383147315f584d443a5348412d3235365f535357555f524f5f4e554c5f64774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaaba26469706673582212201ede23dc25ae92ac1c5a4136678d28a4d419e3094812ad86075c54cd093ced8664736f6c63430008220033",
    "immutableReferences": {},
    "immutableNames": {}
  }
}
