{
  "_format": "hh-sol-artifact-1",
  "contractName": "ERC20FixedSupplyProxiedMock",
  "sourceName": "contracts/mocks/token/ERC20/preset/proxied/ERC20FixedSupplyProxiedMock.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IForwarderRegistry",
          "name": "forwarderRegistry",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "allowance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "increment",
          "type": "uint256"
        }
      ],
      "name": "ERC20AllowanceOverflow",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "ERC20ApprovalToAddressZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC20BatchMintValuesOverflow",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC20BatchTransferValuesOverflow",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "allowance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "decrement",
          "type": "uint256"
        }
      ],
      "name": "ERC20InsufficientAllowance",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "ERC20InsufficientBalance",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC20MintToAddressZero",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "ERC20PermitExpired",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC20PermitFromAddressZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC20PermitInvalidSignature",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        }
      ],
      "name": "ERC20SafeTransferRejected",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "supply",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "ERC20TotalSupplyOverflow",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "ERC20TransferToAddressZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "FailedCall",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "IllegalInterfaceId",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InconsistentArrayLengths",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenContract",
          "type": "address"
        }
      ],
      "name": "IncorrectTokenContractType",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "currentPhase",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "newPhase",
          "type": "uint256"
        }
      ],
      "name": "InitializationPhaseAlreadyReached",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "needed",
          "type": "uint256"
        }
      ],
      "name": "InsufficientBalance",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "NotContractOwner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "SafeERC20FailedOperation",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "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": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DOMAIN_SEPARATOR",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "__msgData",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "result",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "recipients",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        }
      ],
      "name": "batchTransfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address[]",
          "name": "recipients",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        }
      ],
      "name": "batchTransferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "result",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "forwarderRegistry",
      "outputs": [
        {
          "internalType": "contract IForwarderRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "result",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "tokenName",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "tokenSymbol",
          "type": "string"
        },
        {
          "internalType": "uint8",
          "name": "tokenDecimals",
          "type": "uint8"
        },
        {
          "internalType": "address[]",
          "name": "holders",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "allocations",
          "type": "uint256[]"
        }
      ],
      "name": "init",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "forwarder",
          "type": "address"
        }
      ],
      "name": "isTrustedForwarder",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "nonces",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "permit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "accounts",
          "type": "address[]"
        },
        {
          "internalType": "contract IERC20[]",
          "name": "tokens",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "name": "recoverERC20s",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "accounts",
          "type": "address[]"
        },
        {
          "internalType": "contract IERC721[]",
          "name": "contracts",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "name": "recoverERC721s",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable[]",
          "name": "accounts",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "name": "recoverETH",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeTransfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "uri",
          "type": "string"
        }
      ],
      "name": "setTokenURI",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tokenURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "supply",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "result",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "result",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60a03461007f57601f6138bb38819003918201601f19168301916001600160401b038311848410176100845780849260209460405283398101031261007f57516001600160a01b038116810361007f57608052604051613820908161009b82396080518181816120a2015281816125490152818161340f015261353a0152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001257600080fd5b60003560e01c806301ffc9a7146122a857806306fdde031461224d578063095ea7b3146121e057806318160ddd1461218557806323b872dd146120c65780632b4c9f1614612057578063313ce56714611ff957806331e66e1e14611f765780633644e51514611f355780633950935114611d055780633c130d9014611caa5780634885b25414611bfc578063572b6c0514611bb157806370a0823114611b2c57806373c8a958146119a95780637ecebe001461192457806388d695b2146118e05780638a6d57b614610f545780638da5cb5b14610ee357806395d89b4114610e70578063a457c2d714610e03578063a9059cbb14610d96578063b88d4fde14610c86578063c3666c3614610a49578063d505accf146107d6578063dd62ed3e14610727578063e0df5b6f146104dc578063eb79554914610417578063f2fde38b146103235763f7ba94bd1461016657600080fd5b346102c75761017436612498565b90917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806101b56133f8565b92541691169081036102f657508181036102cc5760005b8181106101d557005b6101e08183876128f5565b3573ffffffffffffffffffffffffffffffffffffffff81168091036102c75761020a8285876128f5565b359081471061029557600080809381935af13d1561028d573d9061022d8261336f565b9161023b6040519384612591565b82523d6000602084013e5b1561025457506001016101cc565b80511561026357602081519101fd5b7fd6bda2750000000000000000000000000000000000000000000000000000000060005260046000fd5b606090610246565b50477fcf4791810000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b600080fd5b7f658253360000000000000000000000000000000000000000000000000000000060005260046000fd5b7f2ef4875e0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b346102c75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c75761035a61238e565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc906103846133f8565b9073ffffffffffffffffffffffffffffffffffffffff8084541692168281036102f6575073ffffffffffffffffffffffffffffffffffffffff16918282036103c857005b827fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b346102c75760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c75761044e61238e565b60243560443567ffffffffffffffff81116102c757610471903690600401612504565b9190927f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee926104aa83836104a36133f8565b80976131ce565b813b6104bc575b602060405160018152f35b6104d2946104cb9136916133a9565b9280613669565b80808080806104b1565b346102c75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c75760043567ffffffffffffffff81116102c75761052b903690600401612504565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff8061056a6133f8565b92541691169081036102f657507ff41bf6a5db26bffdfab174dcf66b31fbba8fdb7e3db040721ce1e62d61839cea9067ffffffffffffffff81116106f8576105b28254612674565b601f81116106b0575b506000601f82116001146106155781929360009261060a575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916179055600080f35b0135905083806105d4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08216938382526020822091805b8681106106985750836001959610610660575b505050811b019055005b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c19910135169055838080610656565b90926020600181928686013581550194019101610643565b826000526020600020601f830160051c810191602084106106ee575b601f0160051c01905b8181106106e257506105bb565b600081556001016106d5565b90915081906106cc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b346102c75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c75761075e61238e565b73ffffffffffffffffffffffffffffffffffffffff61077b6123b1565b91166000527f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbef60205273ffffffffffffffffffffffffffffffffffffffff604060002091166000526020526020604060002054604051908152f35b346102c75760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c75761080d61238e565b6108156123b1565b6044359060643560843560ff81168091036102c75773ffffffffffffffffffffffffffffffffffffffff8516917f93fe0ff7226b064a4a8f0b09910762afb4bc2441835792c021ffd78cd513011d8315610a1f578142116109f1576020926000926080928685528552604084209081549160018301905560405190868201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9845288604084015273ffffffffffffffffffffffffffffffffffffffff8a1660608401528a8684015260a083015260c082015260c081526108f760e082612591565b51902061090261284e565b9060405190868201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152610947606282612591565b519020906040519182528482015260a435604082015260c435606082015282805260015afa156109e55773ffffffffffffffffffffffffffffffffffffffff60005116036109bb576109b9927f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee612789565b005b7f822a64c80000000000000000000000000000000000000000000000000000000060005260046000fd5b6040513d6000823e3d90fd5b507fea2b6f580000000000000000000000000000000000000000000000000000000060005260045260246000fd5b7fa97469760000000000000000000000000000000000000000000000000000000060005260046000fd5b346102c757610a5736612405565b9094929390917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff80610a9c6133f8565b92541691169081036102f65750808214801590610c7c575b6102cc5760005b828110610ac457005b73ffffffffffffffffffffffffffffffffffffffff610aec610ae783858a6128f5565b612934565b166040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f80ac58cd000000000000000000000000000000000000000000000000000000006004820152602081602481855afa9081156109e557600091610c4e575b5015610c21575073ffffffffffffffffffffffffffffffffffffffff610b7b610ae783858a6128f5565b1690610b8b610ae78286896128f5565b91610b9782878b6128f5565b3592813b156102c757606473ffffffffffffffffffffffffffffffffffffffff916000809460405197889586947f42842e0e00000000000000000000000000000000000000000000000000000000865230600487015216602485015260448401525af19182156109e557600192610c10575b5001610abb565b6000610c1b91612591565b88610c09565b7f986b9f1f0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b610c6f915060203d8111610c75575b610c678183612591565b8101906133e0565b89610b51565b503d610c5d565b5082821415610ab4565b346102c75760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c757610cbd61238e565b610cc56123b1565b60443560643567ffffffffffffffff81116102c757610ce8903690600401612504565b9290937f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee93610d54848484610d1b6133f8565b9873ffffffffffffffffffffffffffffffffffffffff8a1673ffffffffffffffffffffffffffffffffffffffff831603610d85576131ce565b823b610d6557602060405160018152f35b610d7a95610d749136916133a9565b93613669565b8080808080806104b1565b610d91848b8484612ff0565b6131ce565b346102c75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c7576104b1610dd061238e565b602435907f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee610dfd6133f8565b906131ce565b346102c75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c7576104b1610e3d61238e565b602435907f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee610e6a6133f8565b90612ff0565b346102c75760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c757610edf610ecb7f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a826126c7565b60405191829160208352602083019061232f565b0390f35b346102c75760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c757602073ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc5416604051908152f35b346102c75760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c75760043567ffffffffffffffff81116102c757610fa3903690600401612504565b9060243567ffffffffffffffff81116102c757610fc4903690600401612504565b90926044359060ff82168092036102c75760643567ffffffffffffffff81116102c757610ff59036906004016123d4565b92909360843567ffffffffffffffff81116102c7576110189036906004016123d4565b9790967fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc6110446133f8565b7f5b388d90dc1312ba799f321972f13311234fa1163bcabec7cf66101c4876eb83546001811015611859575060017f5b388d90dc1312ba799f321972f13311234fa1163bcabec7cf66101c4876eb835573ffffffffffffffffffffffffffffffffffffffff16908161188b575b50507fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d60208190527fa53d5a615b1d5279f1a6647c5c0f31bf064b1e70af135676a4a96aeaeb691a2f805460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091821681179092557f9aed5868410a44d2b2b5afc971a20f888382428fa3391cbfac5b1840d2aa352f80548216831790557fc6b5f03b0da98290ffa91f37e0f0b8e2702961697d46a1f6b2d24c3136073a6680548216831790557f27d9344430097694b44c54daae5d82db951e70f450202e98a31fb7e512b2167480548216831790557f53f41a97000000000000000000000000000000000000000000000000000000006000527f56711464edcafe4e82a7e7542dffa87959622899ee5b1c678e1763c8a0b334a98054909116821790557fd217496980d1cb14720b20a80af36676bbece8e5feeb5d8970a9681a2c76bb745491967f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a819390929091811015611859575060017fd217496980d1cb14720b20a80af36676bbece8e5feeb5d8970a9681a2c76bb745567ffffffffffffffff82116106f85781906112818454612674565b601f8111611806575b50600090601f831160011461176457600092611759575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790555b67ffffffffffffffff82116106f857819061130e7f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a8254612674565b601f81116116ca575b50600090601f83116001146115cb576000926115c0575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916177f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a82555b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a835416177f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a83557fa219a0250000000000000000000000000000000000000000000000000000000060005280602052604060002060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790557f3c130d900000000000000000000000000000000000000000000000000000000060005280602052604060002060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790557f9d8ff7da00000000000000000000000000000000000000000000000000000000600052602052604060002060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790557f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee90611513816125d2565b926115216040519485612591565b818452602084019160051b8101903682116102c757915b8183106115935750505061154b846125d2565b926115596040519485612591565b848452602084019460051b8101903682116102c757945b8186106115835750506109b99350612e76565b8535815260209586019501611570565b823573ffffffffffffffffffffffffffffffffffffffff811681036102c757815260209283019201611538565b01359050888061132e565b7f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a8282527f38f29baf5b4f1132a8b8d899467148f866f7b7a6d08f3c484abb8c5467292cef929091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016815b8181106116b2575090846001959493921061167a575b505050811b017f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a8255611380565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c1991013516905588808061164d565b91936020600181928787013581550195019201611637565b7f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a826000529091507f38f29baf5b4f1132a8b8d899467148f866f7b7a6d08f3c484abb8c5467292cef601f840160051c8101916020851061174f575b90601f859493920160051c01905b8181106117405750611317565b60008155849350600101611733565b9091508190611725565b013590508b806112a1565b90917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016918481526020812092815b8181106117ee57509084600195949392106117b6575b505050811b0190556112d3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c199101351690558b80806117a9565b91936020600181928787013581550195019201611793565b909150836000526020600020601f840160051c8101916020851061184f575b90601f859493920160051c01905b818110611840575061128a565b60008155849350600101611833565b9091508190611825565b7fbf0c18ec00000000000000000000000000000000000000000000000000000000600052600452600160245260446000fd5b817fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a389806110b1565b346102c7576104b16118f136612498565b929091907f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee61191e6133f8565b90612c01565b346102c75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c75761195b61238e565b73ffffffffffffffffffffffffffffffffffffffff7f93fe0ff7226b064a4a8f0b09910762afb4bc2441835792c021ffd78cd513011d91166000526020526020604060002054604051908152f35b346102c7576119b736612405565b949293917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806119fa6133f8565b92541691169081036102f65750808314801590611b22575b6102cc5760005b838110611a2257005b611a2d8183886128f5565b3573ffffffffffffffffffffffffffffffffffffffff8116908181036102c75760006020918a82611a6e87611a67610ae7828f8f906128f5565b938b6128f5565b356040519073ffffffffffffffffffffffffffffffffffffffff878301947fa9059cbb000000000000000000000000000000000000000000000000000000008652166024830152604482015260448152611ac9606482612591565b51925af1156109e5576000513d611b195750803b155b611aec5750600101611a19565b7f5274afe70000000000000000000000000000000000000000000000000000000060005260045260246000fd5b60011415611adf565b5085831415611a12565b346102c75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c757611b6361238e565b73ffffffffffffffffffffffffffffffffffffffff7f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee91166000526020526020604060002054604051908152f35b346102c75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c7576020611bf2611bed61238e565b612532565b6040519015158152f35b346102c75760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c757611c3361238e565b60243567ffffffffffffffff81116102c757611c539036906004016123d4565b916044359267ffffffffffffffff84116102c757611c786104b19436906004016123d4565b9390927f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee611ca46133f8565b90612955565b346102c75760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c757610edf610ecb7ff41bf6a5db26bffdfab174dcf66b31fbba8fdb7e3db040721ce1e62d61839cea6126c7565b346102c75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c757611d3c61238e565b602435611d476133f8565b9073ffffffffffffffffffffffffffffffffffffffff8316928315611ef15773ffffffffffffffffffffffffffffffffffffffff83166000527f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbef6020526040600020846000526020526040600020549180611e0c575b84837f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602073ffffffffffffffffffffffffffffffffffffffff886040519485521692a3602060405160018152f35b8083019280841115611e9657505050602073ffffffffffffffffffffffffffffffffffffffff7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928185166000527f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbef83526040600020866000528352806040600020559250611dbd565b6040517f93bc2ff100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015293909316602484015260448301526064820152608490fd5b73ffffffffffffffffffffffffffffffffffffffff837ff7e1ac0f000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b346102c75760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c7576020611f6e61284e565b604051908152f35b346102c75760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c7576040611faf613523565b91907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8484519586946020865281602087015286860137600085828601015201168101030190f35b346102c75760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c757602060ff7f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a835416604051908152f35b346102c75760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102c75760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c7576104b161210061238e565b6121086123b1565b7f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee916121326133f8565b92604435938473ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff851603612173575b50506131ce565b61217e918484612ff0565b858461216c565b346102c75760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c75760207f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbf054604051908152f35b346102c75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c7576104b161221a61238e565b602435907f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee6122476133f8565b90612789565b346102c75760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c757610edf610ecb7f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a816126c7565b346102c75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c7576004357fffffffff00000000000000000000000000000000000000000000000000000000811681036102c757611bf26020917fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d6125ea565b919082519283825260005b8481106123795750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b8060208092840101518282860101520161233a565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036102c757565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036102c757565b9181601f840112156102c75782359167ffffffffffffffff83116102c7576020808501948460051b0101116102c757565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102c75760043567ffffffffffffffff81116102c7578161244e916004016123d4565b9290929160243567ffffffffffffffff81116102c75781612471916004016123d4565b929092916044359067ffffffffffffffff82116102c757612494916004016123d4565b9091565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102c75760043567ffffffffffffffff81116102c757816124e1916004016123d4565b929092916024359067ffffffffffffffff82116102c757612494916004016123d4565b9181601f840112156102c75782359167ffffffffffffffff83116102c757602083818601950101116102c757565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690811561258a5773ffffffffffffffffffffffffffffffffffffffff161490565b5050600090565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176106f857604052565b67ffffffffffffffff81116106f85760051b60200190565b907fffffffff00000000000000000000000000000000000000000000000000000000167fffffffff00000000000000000000000000000000000000000000000000000000811461258a577f01ffc9a700000000000000000000000000000000000000000000000000000000811461266d5760005260205260ff6040600020541690565b5050600190565b90600182811c921680156126bd575b602083101461268e57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f1691612683565b90604051918260008254926126db84612674565b80845293600181169081156127495750600114612702575b5061270092500383612591565b565b90506000929192526020600020906000915b81831061272d57505090602061270092820101386126f3565b6020919350806001915483858901015201910190918492612714565b602093506127009592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b820101386126f3565b929173ffffffffffffffffffffffffffffffffffffffff1692831561280a5773ffffffffffffffffffffffffffffffffffffffff7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259260016020938383166000520183526040600020866000528352846040600020556040519485521692a3565b73ffffffffffffffffffffffffffffffffffffffff827ff7e1ac0f000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b6128777f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a816126c7565b6020815191012060405160208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835260408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a081526128ef60c082612591565b51902090565b91908110156129055760051b0190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b3573ffffffffffffffffffffffffffffffffffffffff811681036102c75790565b959490939291928581036102cc578015612bf85773ffffffffffffffffffffffffffffffffffffffff8416600052866020526040600020549160009660009260005b8181106129f1575050505050505073ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff8216036129df575b50505050565b6129e893612ff0565b388080806129d9565b73ffffffffffffffffffffffffffffffffffffffff612a14610ae783858b6128f5565b168015612bb457612a268285876128f5565b3580612af0575b906020917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef73ffffffffffffffffffffffffffffffffffffffff8c16938492604051908152a38a151580612ae6575b612a8a575b50600101612997565b8a87039087821015612ab057600090815260208d90526040902090860190556001612a81565b878c917fe450d38c0000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b50858b1415612a7c565b9a8b810190811115612b8a579a8c73ffffffffffffffffffffffffffffffffffffffff8b16838114612b3c5750906040602093926000908482528552208181540190555b909150612a2d565b90508882989211612b54575090866020920196612b34565b8888917fe450d38c0000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b7fdedd83410000000000000000000000000000000000000000000000000000000060005260046000fd5b73ffffffffffffffffffffffffffffffffffffffff897f754f425b000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b50505050505050565b92939490918185036102cc578415612e5a5773ffffffffffffffffffffffffffffffffffffffff8316600052836020526040600020549560009260009660005b818110612cf357505050505080151580612ce9575b612c62575b5050505050565b8085039480861015612c9f57505073ffffffffffffffffffffffffffffffffffffffff166000526020526040600020910190553880808080612c5b565b73ffffffffffffffffffffffffffffffffffffffff837fe450d38c000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b5083811415612c56565b73ffffffffffffffffffffffffffffffffffffffff612d16610ae78385896128f5565b168015612e1657612d288285876128f5565b3580612d7c575b90600192916040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602073ffffffffffffffffffffffffffffffffffffffff8c1692a301612c41565b9687810190811115612b8a579673ffffffffffffffffffffffffffffffffffffffff8916828114612dc957509060019291604060008381528c602052208181540190555b90919250612d2f565b8c829c9211612de05750908a60019392019a612dc0565b8c8c917fe450d38c0000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b73ffffffffffffffffffffffffffffffffffffffff887f754f425b000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b505050505050565b80518210156129055760209160051b010190565b9091825190805182036102cc5781156129d95760009360005b838110612eea575050505081612ea3575050565b6002018054918083019280841115612eba57505055565b7f0366a5f60000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b73ffffffffffffffffffffffffffffffffffffffff612f098284612e62565b51168015612fc657612f1b8285612e62565b5180612f59575b9060007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602060019594604051908152a301612e8f565b96919087830192831115612f9c5773ffffffffffffffffffffffffffffffffffffffff811660009081526020889052604090208054890190559196909190612f22565b7f5542ae7c0000000000000000000000000000000000000000000000000000000060005260046000fd5b7f92fd9c8f0000000000000000000000000000000000000000000000000000000060005260046000fd5b92909173ffffffffffffffffffffffffffffffffffffffff811693841561318a576001019073ffffffffffffffffffffffffffffffffffffffff841660005281602052604060002085600052602052604060002054927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84141580613181575b6130bd575b50505090602073ffffffffffffffffffffffffffffffffffffffff7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925926040519485521692a3565b80840393808510156131265750505073ffffffffffffffffffffffffffffffffffffffff7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92592602092828616600052835260406000208660005283528060406000205592613075565b6040517f137ad6ab00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015293909316602484015260448301526064820152608490fd5b50801515613070565b73ffffffffffffffffffffffffffffffffffffffff847ff7e1ac0f000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b929173ffffffffffffffffffffffffffffffffffffffff1692831561332b5782613238575b50602073ffffffffffffffffffffffffffffffffffffffff7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef926040519485521692a3565b73ffffffffffffffffffffffffffffffffffffffff82166000528060205260406000205483810390808210156132df57508260209273ffffffffffffffffffffffffffffffffffffffff9287847fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9716036132b8575b50509250506131f3565b838316600052818552604060002055866000528352604060002085815401905538806132ae565b849073ffffffffffffffffffffffffffffffffffffffff857fe450d38c000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b73ffffffffffffffffffffffffffffffffffffffff827f754f425b000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b67ffffffffffffffff81116106f857601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926133b58261336f565b916133c36040519384612591565b8294818452818301116102c7578281602093846000960137010152565b908160209103126102c7575180151581036102c75790565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168015613514573233148015613519575b613514577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90803314908115613483575b5061348057503390565b90565b6040517f019a202800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201523360248201523060448201529150602090829060649082905afa9081156109e5576000916134f5575b5038613476565b61350e915060203d602011610c7557610c678183612591565b386134ee565b503390565b506018361061343f565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016801561365757323314801561365f575b613657578033149081156135b6575b50613585576000903690565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec3601903682116102c75760009190565b6040517f019a20280000000000000000000000000000000000000000000000000000000081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c60048201523360248201523060448201529150602090829060649082905afa9081156109e557600091613638575b5038613579565b613651915060203d602011610c7557610c678183612591565b38613631565b506000903690565b506018361061356a565b6136d873ffffffffffffffffffffffffffffffffffffffff9294958360209516968460405197889687967f4fc35859000000000000000000000000000000000000000000000000000000008852166004870152166024850152604484015260806064840152608483019061232f565b03816000865af19081156109e557600091613768575b507fffffffff000000000000000000000000000000000000000000000000000000007f4fc358590000000000000000000000000000000000000000000000000000000091160361373b5750565b7f6d4497360000000000000000000000000000000000000000000000000000000060005260045260246000fd5b6020813d6020116137e2575b8161378160209383612591565b810103126137de5751907fffffffff00000000000000000000000000000000000000000000000000000000821682036137db57507fffffffff000000000000000000000000000000000000000000000000000000006136ee565b80fd5b5080fd5b3d915061377456fea2646970667358221220deff7f5b3490b724cb0b1e031559e0a3dc3e11bbf1f14c1cb6cb026e6215210264736f6c634300081e0033",
  "deployedBytecode": "0x6080604052600436101561001257600080fd5b60003560e01c806301ffc9a7146122a857806306fdde031461224d578063095ea7b3146121e057806318160ddd1461218557806323b872dd146120c65780632b4c9f1614612057578063313ce56714611ff957806331e66e1e14611f765780633644e51514611f355780633950935114611d055780633c130d9014611caa5780634885b25414611bfc578063572b6c0514611bb157806370a0823114611b2c57806373c8a958146119a95780637ecebe001461192457806388d695b2146118e05780638a6d57b614610f545780638da5cb5b14610ee357806395d89b4114610e70578063a457c2d714610e03578063a9059cbb14610d96578063b88d4fde14610c86578063c3666c3614610a49578063d505accf146107d6578063dd62ed3e14610727578063e0df5b6f146104dc578063eb79554914610417578063f2fde38b146103235763f7ba94bd1461016657600080fd5b346102c75761017436612498565b90917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806101b56133f8565b92541691169081036102f657508181036102cc5760005b8181106101d557005b6101e08183876128f5565b3573ffffffffffffffffffffffffffffffffffffffff81168091036102c75761020a8285876128f5565b359081471061029557600080809381935af13d1561028d573d9061022d8261336f565b9161023b6040519384612591565b82523d6000602084013e5b1561025457506001016101cc565b80511561026357602081519101fd5b7fd6bda2750000000000000000000000000000000000000000000000000000000060005260046000fd5b606090610246565b50477fcf4791810000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b600080fd5b7f658253360000000000000000000000000000000000000000000000000000000060005260046000fd5b7f2ef4875e0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b346102c75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c75761035a61238e565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc906103846133f8565b9073ffffffffffffffffffffffffffffffffffffffff8084541692168281036102f6575073ffffffffffffffffffffffffffffffffffffffff16918282036103c857005b827fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b346102c75760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c75761044e61238e565b60243560443567ffffffffffffffff81116102c757610471903690600401612504565b9190927f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee926104aa83836104a36133f8565b80976131ce565b813b6104bc575b602060405160018152f35b6104d2946104cb9136916133a9565b9280613669565b80808080806104b1565b346102c75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c75760043567ffffffffffffffff81116102c75761052b903690600401612504565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff8061056a6133f8565b92541691169081036102f657507ff41bf6a5db26bffdfab174dcf66b31fbba8fdb7e3db040721ce1e62d61839cea9067ffffffffffffffff81116106f8576105b28254612674565b601f81116106b0575b506000601f82116001146106155781929360009261060a575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916179055600080f35b0135905083806105d4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08216938382526020822091805b8681106106985750836001959610610660575b505050811b019055005b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c19910135169055838080610656565b90926020600181928686013581550194019101610643565b826000526020600020601f830160051c810191602084106106ee575b601f0160051c01905b8181106106e257506105bb565b600081556001016106d5565b90915081906106cc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b346102c75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c75761075e61238e565b73ffffffffffffffffffffffffffffffffffffffff61077b6123b1565b91166000527f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbef60205273ffffffffffffffffffffffffffffffffffffffff604060002091166000526020526020604060002054604051908152f35b346102c75760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c75761080d61238e565b6108156123b1565b6044359060643560843560ff81168091036102c75773ffffffffffffffffffffffffffffffffffffffff8516917f93fe0ff7226b064a4a8f0b09910762afb4bc2441835792c021ffd78cd513011d8315610a1f578142116109f1576020926000926080928685528552604084209081549160018301905560405190868201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9845288604084015273ffffffffffffffffffffffffffffffffffffffff8a1660608401528a8684015260a083015260c082015260c081526108f760e082612591565b51902061090261284e565b9060405190868201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152610947606282612591565b519020906040519182528482015260a435604082015260c435606082015282805260015afa156109e55773ffffffffffffffffffffffffffffffffffffffff60005116036109bb576109b9927f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee612789565b005b7f822a64c80000000000000000000000000000000000000000000000000000000060005260046000fd5b6040513d6000823e3d90fd5b507fea2b6f580000000000000000000000000000000000000000000000000000000060005260045260246000fd5b7fa97469760000000000000000000000000000000000000000000000000000000060005260046000fd5b346102c757610a5736612405565b9094929390917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff80610a9c6133f8565b92541691169081036102f65750808214801590610c7c575b6102cc5760005b828110610ac457005b73ffffffffffffffffffffffffffffffffffffffff610aec610ae783858a6128f5565b612934565b166040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f80ac58cd000000000000000000000000000000000000000000000000000000006004820152602081602481855afa9081156109e557600091610c4e575b5015610c21575073ffffffffffffffffffffffffffffffffffffffff610b7b610ae783858a6128f5565b1690610b8b610ae78286896128f5565b91610b9782878b6128f5565b3592813b156102c757606473ffffffffffffffffffffffffffffffffffffffff916000809460405197889586947f42842e0e00000000000000000000000000000000000000000000000000000000865230600487015216602485015260448401525af19182156109e557600192610c10575b5001610abb565b6000610c1b91612591565b88610c09565b7f986b9f1f0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b610c6f915060203d8111610c75575b610c678183612591565b8101906133e0565b89610b51565b503d610c5d565b5082821415610ab4565b346102c75760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c757610cbd61238e565b610cc56123b1565b60443560643567ffffffffffffffff81116102c757610ce8903690600401612504565b9290937f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee93610d54848484610d1b6133f8565b9873ffffffffffffffffffffffffffffffffffffffff8a1673ffffffffffffffffffffffffffffffffffffffff831603610d85576131ce565b823b610d6557602060405160018152f35b610d7a95610d749136916133a9565b93613669565b8080808080806104b1565b610d91848b8484612ff0565b6131ce565b346102c75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c7576104b1610dd061238e565b602435907f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee610dfd6133f8565b906131ce565b346102c75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c7576104b1610e3d61238e565b602435907f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee610e6a6133f8565b90612ff0565b346102c75760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c757610edf610ecb7f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a826126c7565b60405191829160208352602083019061232f565b0390f35b346102c75760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c757602073ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc5416604051908152f35b346102c75760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c75760043567ffffffffffffffff81116102c757610fa3903690600401612504565b9060243567ffffffffffffffff81116102c757610fc4903690600401612504565b90926044359060ff82168092036102c75760643567ffffffffffffffff81116102c757610ff59036906004016123d4565b92909360843567ffffffffffffffff81116102c7576110189036906004016123d4565b9790967fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc6110446133f8565b7f5b388d90dc1312ba799f321972f13311234fa1163bcabec7cf66101c4876eb83546001811015611859575060017f5b388d90dc1312ba799f321972f13311234fa1163bcabec7cf66101c4876eb835573ffffffffffffffffffffffffffffffffffffffff16908161188b575b50507fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d60208190527fa53d5a615b1d5279f1a6647c5c0f31bf064b1e70af135676a4a96aeaeb691a2f805460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091821681179092557f9aed5868410a44d2b2b5afc971a20f888382428fa3391cbfac5b1840d2aa352f80548216831790557fc6b5f03b0da98290ffa91f37e0f0b8e2702961697d46a1f6b2d24c3136073a6680548216831790557f27d9344430097694b44c54daae5d82db951e70f450202e98a31fb7e512b2167480548216831790557f53f41a97000000000000000000000000000000000000000000000000000000006000527f56711464edcafe4e82a7e7542dffa87959622899ee5b1c678e1763c8a0b334a98054909116821790557fd217496980d1cb14720b20a80af36676bbece8e5feeb5d8970a9681a2c76bb745491967f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a819390929091811015611859575060017fd217496980d1cb14720b20a80af36676bbece8e5feeb5d8970a9681a2c76bb745567ffffffffffffffff82116106f85781906112818454612674565b601f8111611806575b50600090601f831160011461176457600092611759575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790555b67ffffffffffffffff82116106f857819061130e7f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a8254612674565b601f81116116ca575b50600090601f83116001146115cb576000926115c0575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916177f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a82555b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a835416177f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a83557fa219a0250000000000000000000000000000000000000000000000000000000060005280602052604060002060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790557f3c130d900000000000000000000000000000000000000000000000000000000060005280602052604060002060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790557f9d8ff7da00000000000000000000000000000000000000000000000000000000600052602052604060002060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790557f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee90611513816125d2565b926115216040519485612591565b818452602084019160051b8101903682116102c757915b8183106115935750505061154b846125d2565b926115596040519485612591565b848452602084019460051b8101903682116102c757945b8186106115835750506109b99350612e76565b8535815260209586019501611570565b823573ffffffffffffffffffffffffffffffffffffffff811681036102c757815260209283019201611538565b01359050888061132e565b7f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a8282527f38f29baf5b4f1132a8b8d899467148f866f7b7a6d08f3c484abb8c5467292cef929091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016815b8181106116b2575090846001959493921061167a575b505050811b017f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a8255611380565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c1991013516905588808061164d565b91936020600181928787013581550195019201611637565b7f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a826000529091507f38f29baf5b4f1132a8b8d899467148f866f7b7a6d08f3c484abb8c5467292cef601f840160051c8101916020851061174f575b90601f859493920160051c01905b8181106117405750611317565b60008155849350600101611733565b9091508190611725565b013590508b806112a1565b90917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016918481526020812092815b8181106117ee57509084600195949392106117b6575b505050811b0190556112d3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c199101351690558b80806117a9565b91936020600181928787013581550195019201611793565b909150836000526020600020601f840160051c8101916020851061184f575b90601f859493920160051c01905b818110611840575061128a565b60008155849350600101611833565b9091508190611825565b7fbf0c18ec00000000000000000000000000000000000000000000000000000000600052600452600160245260446000fd5b817fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a389806110b1565b346102c7576104b16118f136612498565b929091907f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee61191e6133f8565b90612c01565b346102c75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c75761195b61238e565b73ffffffffffffffffffffffffffffffffffffffff7f93fe0ff7226b064a4a8f0b09910762afb4bc2441835792c021ffd78cd513011d91166000526020526020604060002054604051908152f35b346102c7576119b736612405565b949293917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806119fa6133f8565b92541691169081036102f65750808314801590611b22575b6102cc5760005b838110611a2257005b611a2d8183886128f5565b3573ffffffffffffffffffffffffffffffffffffffff8116908181036102c75760006020918a82611a6e87611a67610ae7828f8f906128f5565b938b6128f5565b356040519073ffffffffffffffffffffffffffffffffffffffff878301947fa9059cbb000000000000000000000000000000000000000000000000000000008652166024830152604482015260448152611ac9606482612591565b51925af1156109e5576000513d611b195750803b155b611aec5750600101611a19565b7f5274afe70000000000000000000000000000000000000000000000000000000060005260045260246000fd5b60011415611adf565b5085831415611a12565b346102c75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c757611b6361238e565b73ffffffffffffffffffffffffffffffffffffffff7f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee91166000526020526020604060002054604051908152f35b346102c75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c7576020611bf2611bed61238e565b612532565b6040519015158152f35b346102c75760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c757611c3361238e565b60243567ffffffffffffffff81116102c757611c539036906004016123d4565b916044359267ffffffffffffffff84116102c757611c786104b19436906004016123d4565b9390927f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee611ca46133f8565b90612955565b346102c75760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c757610edf610ecb7ff41bf6a5db26bffdfab174dcf66b31fbba8fdb7e3db040721ce1e62d61839cea6126c7565b346102c75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c757611d3c61238e565b602435611d476133f8565b9073ffffffffffffffffffffffffffffffffffffffff8316928315611ef15773ffffffffffffffffffffffffffffffffffffffff83166000527f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbef6020526040600020846000526020526040600020549180611e0c575b84837f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602073ffffffffffffffffffffffffffffffffffffffff886040519485521692a3602060405160018152f35b8083019280841115611e9657505050602073ffffffffffffffffffffffffffffffffffffffff7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928185166000527f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbef83526040600020866000528352806040600020559250611dbd565b6040517f93bc2ff100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015293909316602484015260448301526064820152608490fd5b73ffffffffffffffffffffffffffffffffffffffff837ff7e1ac0f000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b346102c75760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c7576020611f6e61284e565b604051908152f35b346102c75760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c7576040611faf613523565b91907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8484519586946020865281602087015286860137600085828601015201168101030190f35b346102c75760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c757602060ff7f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a835416604051908152f35b346102c75760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102c75760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c7576104b161210061238e565b6121086123b1565b7f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee916121326133f8565b92604435938473ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff851603612173575b50506131ce565b61217e918484612ff0565b858461216c565b346102c75760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c75760207f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbf054604051908152f35b346102c75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c7576104b161221a61238e565b602435907f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee6122476133f8565b90612789565b346102c75760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c757610edf610ecb7f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a816126c7565b346102c75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c7576004357fffffffff00000000000000000000000000000000000000000000000000000000811681036102c757611bf26020917fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d6125ea565b919082519283825260005b8481106123795750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b8060208092840101518282860101520161233a565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036102c757565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036102c757565b9181601f840112156102c75782359167ffffffffffffffff83116102c7576020808501948460051b0101116102c757565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102c75760043567ffffffffffffffff81116102c7578161244e916004016123d4565b9290929160243567ffffffffffffffff81116102c75781612471916004016123d4565b929092916044359067ffffffffffffffff82116102c757612494916004016123d4565b9091565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102c75760043567ffffffffffffffff81116102c757816124e1916004016123d4565b929092916024359067ffffffffffffffff82116102c757612494916004016123d4565b9181601f840112156102c75782359167ffffffffffffffff83116102c757602083818601950101116102c757565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690811561258a5773ffffffffffffffffffffffffffffffffffffffff161490565b5050600090565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176106f857604052565b67ffffffffffffffff81116106f85760051b60200190565b907fffffffff00000000000000000000000000000000000000000000000000000000167fffffffff00000000000000000000000000000000000000000000000000000000811461258a577f01ffc9a700000000000000000000000000000000000000000000000000000000811461266d5760005260205260ff6040600020541690565b5050600190565b90600182811c921680156126bd575b602083101461268e57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f1691612683565b90604051918260008254926126db84612674565b80845293600181169081156127495750600114612702575b5061270092500383612591565b565b90506000929192526020600020906000915b81831061272d57505090602061270092820101386126f3565b6020919350806001915483858901015201910190918492612714565b602093506127009592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b820101386126f3565b929173ffffffffffffffffffffffffffffffffffffffff1692831561280a5773ffffffffffffffffffffffffffffffffffffffff7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259260016020938383166000520183526040600020866000528352846040600020556040519485521692a3565b73ffffffffffffffffffffffffffffffffffffffff827ff7e1ac0f000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b6128777f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a816126c7565b6020815191012060405160208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835260408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a081526128ef60c082612591565b51902090565b91908110156129055760051b0190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b3573ffffffffffffffffffffffffffffffffffffffff811681036102c75790565b959490939291928581036102cc578015612bf85773ffffffffffffffffffffffffffffffffffffffff8416600052866020526040600020549160009660009260005b8181106129f1575050505050505073ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff8216036129df575b50505050565b6129e893612ff0565b388080806129d9565b73ffffffffffffffffffffffffffffffffffffffff612a14610ae783858b6128f5565b168015612bb457612a268285876128f5565b3580612af0575b906020917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef73ffffffffffffffffffffffffffffffffffffffff8c16938492604051908152a38a151580612ae6575b612a8a575b50600101612997565b8a87039087821015612ab057600090815260208d90526040902090860190556001612a81565b878c917fe450d38c0000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b50858b1415612a7c565b9a8b810190811115612b8a579a8c73ffffffffffffffffffffffffffffffffffffffff8b16838114612b3c5750906040602093926000908482528552208181540190555b909150612a2d565b90508882989211612b54575090866020920196612b34565b8888917fe450d38c0000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b7fdedd83410000000000000000000000000000000000000000000000000000000060005260046000fd5b73ffffffffffffffffffffffffffffffffffffffff897f754f425b000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b50505050505050565b92939490918185036102cc578415612e5a5773ffffffffffffffffffffffffffffffffffffffff8316600052836020526040600020549560009260009660005b818110612cf357505050505080151580612ce9575b612c62575b5050505050565b8085039480861015612c9f57505073ffffffffffffffffffffffffffffffffffffffff166000526020526040600020910190553880808080612c5b565b73ffffffffffffffffffffffffffffffffffffffff837fe450d38c000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b5083811415612c56565b73ffffffffffffffffffffffffffffffffffffffff612d16610ae78385896128f5565b168015612e1657612d288285876128f5565b3580612d7c575b90600192916040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602073ffffffffffffffffffffffffffffffffffffffff8c1692a301612c41565b9687810190811115612b8a579673ffffffffffffffffffffffffffffffffffffffff8916828114612dc957509060019291604060008381528c602052208181540190555b90919250612d2f565b8c829c9211612de05750908a60019392019a612dc0565b8c8c917fe450d38c0000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b73ffffffffffffffffffffffffffffffffffffffff887f754f425b000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b505050505050565b80518210156129055760209160051b010190565b9091825190805182036102cc5781156129d95760009360005b838110612eea575050505081612ea3575050565b6002018054918083019280841115612eba57505055565b7f0366a5f60000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b73ffffffffffffffffffffffffffffffffffffffff612f098284612e62565b51168015612fc657612f1b8285612e62565b5180612f59575b9060007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602060019594604051908152a301612e8f565b96919087830192831115612f9c5773ffffffffffffffffffffffffffffffffffffffff811660009081526020889052604090208054890190559196909190612f22565b7f5542ae7c0000000000000000000000000000000000000000000000000000000060005260046000fd5b7f92fd9c8f0000000000000000000000000000000000000000000000000000000060005260046000fd5b92909173ffffffffffffffffffffffffffffffffffffffff811693841561318a576001019073ffffffffffffffffffffffffffffffffffffffff841660005281602052604060002085600052602052604060002054927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84141580613181575b6130bd575b50505090602073ffffffffffffffffffffffffffffffffffffffff7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925926040519485521692a3565b80840393808510156131265750505073ffffffffffffffffffffffffffffffffffffffff7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92592602092828616600052835260406000208660005283528060406000205592613075565b6040517f137ad6ab00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015293909316602484015260448301526064820152608490fd5b50801515613070565b73ffffffffffffffffffffffffffffffffffffffff847ff7e1ac0f000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b929173ffffffffffffffffffffffffffffffffffffffff1692831561332b5782613238575b50602073ffffffffffffffffffffffffffffffffffffffff7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef926040519485521692a3565b73ffffffffffffffffffffffffffffffffffffffff82166000528060205260406000205483810390808210156132df57508260209273ffffffffffffffffffffffffffffffffffffffff9287847fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9716036132b8575b50509250506131f3565b838316600052818552604060002055866000528352604060002085815401905538806132ae565b849073ffffffffffffffffffffffffffffffffffffffff857fe450d38c000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b73ffffffffffffffffffffffffffffffffffffffff827f754f425b000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b67ffffffffffffffff81116106f857601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926133b58261336f565b916133c36040519384612591565b8294818452818301116102c7578281602093846000960137010152565b908160209103126102c7575180151581036102c75790565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168015613514573233148015613519575b613514577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90803314908115613483575b5061348057503390565b90565b6040517f019a202800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201523360248201523060448201529150602090829060649082905afa9081156109e5576000916134f5575b5038613476565b61350e915060203d602011610c7557610c678183612591565b386134ee565b503390565b506018361061343f565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016801561365757323314801561365f575b613657578033149081156135b6575b50613585576000903690565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec3601903682116102c75760009190565b6040517f019a20280000000000000000000000000000000000000000000000000000000081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c60048201523360248201523060448201529150602090829060649082905afa9081156109e557600091613638575b5038613579565b613651915060203d602011610c7557610c678183612591565b38613631565b506000903690565b506018361061356a565b6136d873ffffffffffffffffffffffffffffffffffffffff9294958360209516968460405197889687967f4fc35859000000000000000000000000000000000000000000000000000000008852166004870152166024850152604484015260806064840152608483019061232f565b03816000865af19081156109e557600091613768575b507fffffffff000000000000000000000000000000000000000000000000000000007f4fc358590000000000000000000000000000000000000000000000000000000091160361373b5750565b7f6d4497360000000000000000000000000000000000000000000000000000000060005260045260246000fd5b6020813d6020116137e2575b8161378160209383612591565b810103126137de5751907fffffffff00000000000000000000000000000000000000000000000000000000821682036137db57507fffffffff000000000000000000000000000000000000000000000000000000006136ee565b80fd5b5080fd5b3d915061377456fea2646970667358221220deff7f5b3490b724cb0b1e031559e0a3dc3e11bbf1f14c1cb6cb026e6215210264736f6c634300081e0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
