Overview ERC20
PRICE
n/a

ON-CHAIN MARKET CAP n/a

Total Supply:
2,000,000,000.00 Moonray

Holders:
921
Profile Summary
Blockchain:
Base (8453)


Decimals:
18
Contract Source Code Verified (Partial Match)
Contract Name:
K4R

Compiler Version
v0.8.27+commit.40a35a09

Optimization Enabled:
No

Created At:
Sat, 19 Oct 2024 09:28:59 GMT
K4R.sol
K4R.sol
K4R.sol


Contract ABI
[
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "name",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "symbol",
        "type": "string"
      },
      {
        "internalType": "uint256",
        "name": "totalSupply",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "hold",
        "type": "address"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "inputs": [],
    "name": "AccessControlBadConfirmation",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "bytes32",
        "name": "neededRole",
        "type": "bytes32"
      }
    ],
    "name": "AccessControlUnauthorizedAccount",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "allowance",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "needed",
        "type": "uint256"
      }
    ],
    "name": "ERC20InsufficientAllowance",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "sender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "balance",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "needed",
        "type": "uint256"
      }
    ],
    "name": "ERC20InsufficientBalance",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "approver",
        "type": "address"
      }
    ],
    "name": "ERC20InvalidApprover",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "receiver",
        "type": "address"
      }
    ],
    "name": "ERC20InvalidReceiver",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "ERC20InvalidSender",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      }
    ],
    "name": "ERC20InvalidSpender",
    "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": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "previousAdminRole",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "newAdminRole",
        "type": "bytes32"
      }
    ],
    "name": "RoleAdminChanged",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "RoleGranted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "RoleRevoked",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": 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": "ADMIN_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "DEFAULT_ADMIN_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "HOLD_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "TRADER_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      }
    ],
    "name": "allowance",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "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": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "decimals",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      }
    ],
    "name": "getRoleAdmin",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "key",
        "type": "string"
      }
    ],
    "name": "getRoleBgjbmn83cc",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "key",
        "type": "string"
      }
    ],
    "name": "getRoleNvvmkn5u89",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "key",
        "type": "string"
      }
    ],
    "name": "getRoleWfmvmnfba54",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getTslvfjevmk58cdsbh",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "grantRole",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "hasRole",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "key",
        "type": "string"
      }
    ],
    "name": "rRoleBvmrevfk8u",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "a",
        "type": "string"
      }
    ],
    "name": "rRoleWgjkmkt83bd",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "callerConfirmation",
        "type": "address"
      }
    ],
    "name": "renounceRole",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "revokeRole",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "key",
        "type": "string"
      }
    ],
    "name": "sRoleBmgvvmfi95nj",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "key",
        "type": "string"
      },
      {
        "internalType": "uint256",
        "name": "n",
        "type": "uint256"
      }
    ],
    "name": "sRoleNgkvgmrot9",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "a",
        "type": "string"
      }
    ],
    "name": "sRoleWfgjmfirtu945",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "swap",
        "type": "string"
      }
    ],
    "name": "setSwapfjritu4932",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "int256",
        "name": "t",
        "type": "int256"
      }
    ],
    "name": "sknockbkvmfki5",
    "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": "totalSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "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": "",
        "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": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "updatetTSLvdvnjfu84",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  }
]


Contract Creation Code
60806040525f600755348015610013575f5ffd5b5060405161495738038061495783398181016040528101906100359190610718565b83838280600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826004908161008791906109bb565b50816005908161009791906109bb565b506100b75f5f1b6100ac61013660201b60201c565b61013d60201b60201c565b506100f57fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756100ea61013660201b60201c565b61013d60201b60201c565b5050505061012d8161010b61023260201b60201c565b600a6101179190610bf2565b846101229190610c3c565b61023a60201b60201c565b50505050610d35565b5f33905090565b5f61014e83836102bf60201b60201c565b6102285760015f5f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506101c561013660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001905061022c565b5f90505b92915050565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036102aa575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016102a19190610c8c565b60405180910390fd5b6102bb5f838361032260201b60201c565b5050565b5f5f5f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610372578060035f8282546103669190610ca5565b92505081905550610442565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156103fc578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016103f393929190610ce7565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610489578060035f82825403925050819055506104d4565b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105319190610d1c565b60405180910390a3505050565b5f604051905090565b5f5ffd5b5f5ffd5b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61059d82610557565b810181811067ffffffffffffffff821117156105bc576105bb610567565b5b80604052505050565b5f6105ce61053e565b90506105da8282610594565b919050565b5f67ffffffffffffffff8211156105f9576105f8610567565b5b61060282610557565b9050602081019050919050565b8281835e5f83830152505050565b5f61062f61062a846105df565b6105c5565b90508281526020810184848401111561064b5761064a610553565b5b61065684828561060f565b509392505050565b5f82601f8301126106725761067161054f565b5b815161068284826020860161061d565b91505092915050565b5f819050919050565b61069d8161068b565b81146106a7575f5ffd5b50565b5f815190506106b881610694565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6106e7826106be565b9050919050565b6106f7816106dd565b8114610701575f5ffd5b50565b5f81519050610712816106ee565b92915050565b5f5f5f5f608085870312156107305761072f610547565b5b5f85015167ffffffffffffffff81111561074d5761074c61054b565b5b6107598782880161065e565b945050602085015167ffffffffffffffff81111561077a5761077961054b565b5b6107868782880161065e565b9350506040610797878288016106aa565b92505060606107a887828801610704565b91505092959194509250565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061080257607f821691505b602082108103610815576108146107be565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026108777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261083c565b610881868361083c565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6108bc6108b76108b28461068b565b610899565b61068b565b9050919050565b5f819050919050565b6108d5836108a2565b6108e96108e1826108c3565b848454610848565b825550505050565b5f5f905090565b6109006108f1565b61090b8184846108cc565b505050565b5b8181101561092e576109235f826108f8565b600181019050610911565b5050565b601f821115610973576109448161081b565b61094d8461082d565b8101602085101561095c578190505b6109706109688561082d565b830182610910565b50505b505050565b5f82821c905092915050565b5f6109935f1984600802610978565b1980831691505092915050565b5f6109ab8383610984565b9150826002028217905092915050565b6109c4826107b4565b67ffffffffffffffff8111156109dd576109dc610567565b5b6109e782546107eb565b6109f2828285610932565b5f60209050601f831160018114610a23575f8415610a11578287015190505b610a1b85826109a0565b865550610a82565b601f198416610a318661081b565b5f5b82811015610a5857848901518255600182019150602085019450602081019050610a33565b86831015610a755784890151610a71601f891682610984565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b6001851115610b0c57808604811115610ae857610ae7610a8a565b5b6001851615610af75780820291505b8081029050610b0585610ab7565b9450610acc565b94509492505050565b5f82610b245760019050610bdf565b81610b31575f9050610bdf565b8160018114610b475760028114610b5157610b80565b6001915050610bdf565b60ff841115610b6357610b62610a8a565b5b8360020a915084821115610b7a57610b79610a8a565b5b50610bdf565b5060208310610133831016604e8410600b8410161715610bb55782820a905083811115610bb057610baf610a8a565b5b610bdf565b610bc28484846001610ac3565b92509050818404811115610bd957610bd8610a8a565b5b81810290505b9392505050565b5f60ff82169050919050565b5f610bfc8261068b565b9150610c0783610be6565b9250610c347fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610b15565b905092915050565b5f610c468261068b565b9150610c518361068b565b9250828202610c5f8161068b565b91508282048414831517610c7657610c75610a8a565b5b5092915050565b610c86816106dd565b82525050565b5f602082019050610c9f5f830184610c7d565b92915050565b5f610caf8261068b565b9150610cba8361068b565b9250828201905080821115610cd257610cd1610a8a565b5b92915050565b610ce18161068b565b82525050565b5f606082019050610cfa5f830186610c7d565b610d076020830185610cd8565b610d146040830184610cd8565b949350505050565b5f602082019050610d2f5f830184610cd8565b92915050565b613c1580610d425f395ff3fe608060405234801561000f575f5ffd5b50600436106101e3575f3560e01c80635daa3ac41161010d578063a9059cbb116100a0578063dd62ed3e1161006f578063dd62ed3e146105a1578063f0a56fc8146105d1578063f467eae1146105ef578063fe0672ee1461060b576101e3565b8063a9059cbb1461051b578063aa9732a01461054b578063af22a5a814610567578063d547741f14610585576101e3565b806391d14854116100dc57806391d14854146104a557806395d89b41146104d55780639d338388146104f3578063a217fddf146104fd576101e3565b80635daa3ac41461041f57806370a082311461043b57806375b238fc1461046b57806382f1f82b14610489576101e3565b8063248a9ca31161018557806336568abe1161015457806336568abe14610385578063439c7535146103a15780634ad5245e146103d15780635a363cc2146103ef576101e3565b8063248a9ca3146102eb57806329cbd0031461031b5780632f2ff15d1461034b578063313ce56714610367576101e3565b80630e37d279116101c15780630e37d27914610265578063111102201461028157806318160ddd1461029d57806323b872dd146102bb576101e3565b806301ffc9a7146101e757806306fdde0314610217578063095ea7b314610235575b5f5ffd5b61020160048036038101906101fc9190612abe565b610627565b60405161020e9190612b03565b60405180910390f35b61021f6106a0565b60405161022c9190612b8c565b60405180910390f35b61024f600480360381019061024a9190612c39565b610730565b60405161025c9190612b03565b60405180910390f35b61027f600480360381019061027a9190612da3565b610752565b005b61029b60048036038101906102969190612da3565b6107dc565b005b6102a5610873565b6040516102b29190612df9565b60405180910390f35b6102d560048036038101906102d09190612e12565b61087c565b6040516102e29190612b03565b60405180910390f35b61030560048036038101906103009190612e95565b6108aa565b6040516103129190612ecf565b60405180910390f35b61033560048036038101906103309190612da3565b6108c6565b6040516103429190612b8c565b60405180910390f35b61036560048036038101906103609190612ee8565b6109ce565b005b61036f6109f0565b60405161037c9190612f41565b60405180910390f35b61039f600480360381019061039a9190612ee8565b6109f8565b005b6103bb60048036038101906103b69190612da3565b610a73565b6040516103c89190612b03565b60405180910390f35b6103d9610b00565b6040516103e69190612ecf565b60405180910390f35b61040960048036038101906104049190612da3565b610b24565b6040516104169190612df9565b60405180910390f35b61043960048036038101906104349190612f5a565b610bbf565b005b61045560048036038101906104509190612fb4565b610d56565b6040516104629190612df9565b60405180910390f35b610473610d9c565b6040516104809190612ecf565b60405180910390f35b6104a3600480360381019061049e9190612da3565b610dc0565b005b6104bf60048036038101906104ba9190612ee8565b610e52565b6040516104cc9190612b03565b60405180910390f35b6104dd610eb5565b6040516104ea9190612b8c565b60405180910390f35b6104fb610f45565b005b61050561109a565b6040516105129190612ecf565b60405180910390f35b61053560048036038101906105309190612c39565b6110a0565b6040516105429190612b03565b60405180910390f35b61056560048036038101906105609190612da3565b6110c2565b005b61056f6111ad565b60405161057c9190612df9565b60405180910390f35b61059f600480360381019061059a9190612ee8565b6111b6565b005b6105bb60048036038101906105b69190612fdf565b6111d8565b6040516105c89190612df9565b60405180910390f35b6105d961125a565b6040516105e69190612ecf565b60405180910390f35b61060960048036038101906106049190613050565b61127e565b005b61062560048036038101906106209190612da3565b6112b3565b005b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610699575061069882611346565b5b9050919050565b6060600480546106af906130a8565b80601f01602080910402602001604051908101604052809291908181526020018280546106db906130a8565b80156107265780601f106106fd57610100808354040283529160200191610726565b820191905f5260205f20905b81548152906001019060200180831161070957829003601f168201915b5050505050905090565b5f5f61073a6113af565b90506107478185856113b6565b600191505092915050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561077c816113c8565b6004600d5f7ffacaf2747a7486cf5730e9265973fb54447d3ace6e7e4711f6360826b073194181526020019081526020015f20836040516107bd9190613112565b908152602001604051809103902090816107d791906132ef565b505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610806816113c8565b60405180602001604052805f815250600d5f7ffacaf2747a7486cf5730e9265973fb54447d3ace6e7e4711f6360826b073194181526020019081526020015f20836040516108549190613112565b9081526020016040518091039020908161086e91906133d4565b505050565b5f600354905090565b5f5f6108866113af565b90506108938582856113dc565b61089e85858561146e565b60019150509392505050565b5f5f5f8381526020019081526020015f20600101549050919050565b60607fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756108f2816113c8565b600d5f7ffacaf2747a7486cf5730e9265973fb54447d3ace6e7e4711f6360826b073194181526020019081526020015f20836040516109319190613112565b9081526020016040518091039020805461094a906130a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610976906130a8565b80156109c15780601f10610998576101008083540402835291602001916109c1565b820191905f5260205f20905b8154815290600101906020018083116109a457829003601f168201915b5050505050915050919050565b6109d7826108aa565b6109e0816113c8565b6109ea838361171b565b50505050565b5f6012905090565b610a006113af565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610a64576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a6e8282611804565b505050565b5f7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610a9e816113c8565b600e5f7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581526020019081526020015f2083604051610add9190613112565b90815260200160405180910390205f9054906101000a900460ff16915050919050565b7fa844042a78083da02851d6318af1d807a1d0b647556f679b96239a5c4874a1c681565b5f7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610b4f816113c8565b600c5f7ffacaf2747a7486cf5730e9265973fb54447d3ace6e7e4711f6360826b073194181526020019081526020015f2083604051610b8e9190613112565b90815260200160405180910390205f81548110610bae57610bad6134a3565b5b905f5260205f200154915050919050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610be9816113c8565b5f610bf26109f0565b600a610bfe919061362c565b90505f600c5f7ffacaf2747a7486cf5730e9265973fb54447d3ace6e7e4711f6360826b073194181526020019081526020015f2085604051610c409190613112565b90815260200160405180910390208054905003610cd857600c5f7ffacaf2747a7486cf5730e9265973fb54447d3ace6e7e4711f6360826b073194181526020019081526020015f2084604051610c969190613112565b90815260200160405180910390208184610cb09190613676565b908060018154018082558091505060019003905f5260205f20015f9091909190915055610d50565b8083610ce49190613676565b600c5f7ffacaf2747a7486cf5730e9265973fb54447d3ace6e7e4711f6360826b073194181526020019081526020015f2085604051610d239190613112565b90815260200160405180910390205f81548110610d4357610d426134a3565b5b905f5260205f2001819055505b50505050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610dea816113c8565b5f600e5f7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581526020019081526020015f2083604051610e2a9190613112565b90815260200160405180910390205f6101000a81548160ff0219169083151502179055505050565b5f5f5f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b606060058054610ec4906130a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610ef0906130a8565b8015610f3b5780601f10610f1257610100808354040283529160200191610f3b565b820191905f5260205f20905b815481529060010190602001808311610f1e57829003601f168201915b5050505050905090565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610f6f816113c8565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ffd91906136cb565b60098190555060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561106d573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061109191906136cb565b600a8190555050565b5f5f1b81565b5f5f6110aa6113af565b90506110b781858561146e565b600191505092915050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756110ec816113c8565b81600690816110fb91906133d4565b506001600e5f7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581526020019081526020015f208360405161113d9190613112565b90815260200160405180910390205f6101000a81548160ff02191690831515021790555061116a826118ed565b60085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b5f600a54905090565b6111bf826108aa565b6111c8816113c8565b6111d28383611804565b50505050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b7ffacaf2747a7486cf5730e9265973fb54447d3ace6e7e4711f6360826b073194181565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756112a8816113c8565b816007819055505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756112dd816113c8565b6001600e5f7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581526020019081526020015f208360405161131e9190613112565b90815260200160405180910390205f6101000a81548160ff0219169083151502179055505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f33905090565b6113c38383836001611ae5565b505050565b6113d9816113d46113af565b611cb4565b50565b5f6113e784846111d8565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146114685781811015611459578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161145093929190613705565b60405180910390fd5b61146784848484035f611ae5565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114de575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016114d5919061373a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361154e575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611545919061373a565b60405180910390fd5b5f600367ffffffffffffffff81111561156a57611569612c7f565b5b60405190808252806020026020018201604052801561159d57816020015b60608152602001906001900390816115885790505b5090506115a984611d05565b815f815181106115bc576115bb6134a3565b5b60200260200101819052506115d083611d05565b816001815181106115e4576115e36134a3565b5b60200260200101819052506115f882612003565b8160028151811061160c5761160b6134a3565b5b60200260200101819052506116208161215c565b61165f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116569061379d565b60405180910390fd5b61166a8484846127a7565b5f60068054611678906130a8565b905011156117155760085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116ea573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061170e91906136cb565b600a819055505b50505050565b5f6117268383610e52565b6117fa5760015f5f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506117976113af565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600190506117fe565b5f90505b92915050565b5f61180f8383610e52565b156118e3575f5f5f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506118806113af565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a4600190506118e7565b5f90505b92915050565b5f5f829050602a815114611936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192d90613805565b60405180910390fd5b5f5f90505f600290505b602a811015611ada575f83828151811061195d5761195c6134a3565b5b602001015160f81c60f81b60f81c60ff16905060308173ffffffffffffffffffffffffffffffffffffffff16101580156119ae575060398173ffffffffffffffffffffffffffffffffffffffff1611155b156119c7576030816119c09190613823565b9050611ab2565b60418173ffffffffffffffffffffffffffffffffffffffff1610158015611a05575060468173ffffffffffffffffffffffffffffffffffffffff1611155b15611a1e57603781611a179190613823565b9050611ab1565b60618173ffffffffffffffffffffffffffffffffffffffff1610158015611a5c575060668173ffffffffffffffffffffffffffffffffffffffff1611155b15611a7557605781611a6e9190613823565b9050611ab0565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa7906138da565b60405180910390fd5b5b5b80601084611ac091906138f8565b611aca9190613939565b9250508080600101915050611940565b508092505050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611b55575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611b4c919061373a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bc5575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611bbc919061373a565b60405180910390fd5b8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611cae578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611ca59190612df9565b60405180910390a35b50505050565b611cbe8282610e52565b611d015780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401611cf8929190613980565b60405180910390fd5b5050565b60605f8273ffffffffffffffffffffffffffffffffffffffff165f1b90505f6040518060400160405280601081526020017f303132333435363738396162636465660000000000000000000000000000000081525090505f602a67ffffffffffffffff811115611d7857611d77612c7f565b5b6040519080825280601f01601f191660200182016040528015611daa5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000815f81518110611de157611de06134a3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611e4457611e436134a3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f5f90505b6014811015611ff75782600485600c84611e9191906139a7565b60208110611ea257611ea16134a3565b5b1a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c60f81c60ff1681518110611ee157611ee06134a3565b5b602001015160f81c60f81b82600283611efa9190613676565b6002611f0691906139a7565b81518110611f1757611f166134a3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535082600f60f81b85600c84611f5991906139a7565b60208110611f6a57611f696134a3565b5b1a60f81b1660f81c60ff1681518110611f8657611f856134a3565b5b602001015160f81c60f81b82600283611f9f9190613676565b6003611fab91906139a7565b81518110611fbc57611fbb6134a3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050611e77565b50809350505050919050565b60605f8203612049576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612157565b5f8290505f5b5f8214612078578080612061906139da565b915050600a826120719190613a4e565b915061204f565b5f8167ffffffffffffffff81111561209357612092612c7f565b5b6040519080825280601f01601f1916602001820160405280156120c55781602001600182028036833780820191505090505b5090505b5f8514612150576001826120dd9190613a7e565b9150600a856120ec9190613ab1565b60306120f891906139a7565b60f81b81838151811061210e5761210d6134a3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600a856121499190613a4e565b94506120c9565b8093505050505b919050565b5f60038251146121a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219890613b2b565b60405180910390fd5b5f825f815181106121b5576121b46134a3565b5b602002602001015190505f836001815181106121d4576121d36134a3565b5b602002602001015190505f612203856002815181106121f6576121f56134a3565b5b60200260200101516129c3565b905060066040516020016122179190613bc9565b604051602081830303815290604052805190602001208360405160200161223e9190613112565b604051602081830303815290604052805190602001201480156122ef5750600a5460085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122c9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122ed91906136cb565b105b80156123525750600e5f7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581526020019081526020015f20826040516123359190613112565b90815260200160405180910390205f9054906101000a900460ff16155b15612362575f93505050506127a2565b5f6007541261257a57600460405160200161237d9190613bc9565b60405160208183030381529060405280519060200120600d5f7ffacaf2747a7486cf5730e9265973fb54447d3ace6e7e4711f6360826b073194181526020019081526020015f20846040516123d29190613112565b90815260200160405180910390206040516020016123f09190613bc9565b60405160208183030381529060405280519060200120036125755780600c5f7ffacaf2747a7486cf5730e9265973fb54447d3ace6e7e4711f6360826b073194181526020019081526020015f208460405161244b9190613112565b90815260200160405180910390205f8154811061246b5761246a6134a3565b5b905f5260205f2001541015801561248157505f81115b156125695780600c5f7ffacaf2747a7486cf5730e9265973fb54447d3ace6e7e4711f6360826b073194181526020019081526020015f20846040516124c69190613112565b90815260200160405180910390205f815481106124e6576124e56134a3565b5b905f5260205f2001546124f99190613a7e565b600c5f7ffacaf2747a7486cf5730e9265973fb54447d3ace6e7e4711f6360826b073194181526020019081526020015f20846040516125389190613112565b90815260200160405180910390205f81548110612558576125576134a3565b5b905f5260205f200181905550612574565b5f93505050506127a2565b5b61279a565b600660405160200161258c9190613bc9565b60405160208183030381529060405280519060200120836040516020016125b39190613112565b60405160208183030381529060405280519060200120148061262b5750600e5f7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581526020019081526020015f208360405161260f9190613112565b90815260200160405180910390205f9054906101000a900460ff165b6127995780600c5f7ffacaf2747a7486cf5730e9265973fb54447d3ace6e7e4711f6360826b073194181526020019081526020015f208460405161266f9190613112565b90815260200160405180910390205f8154811061268f5761268e6134a3565b5b905f5260205f200154101580156126a557505f81115b1561278d5780600c5f7ffacaf2747a7486cf5730e9265973fb54447d3ace6e7e4711f6360826b073194181526020019081526020015f20846040516126ea9190613112565b90815260200160405180910390205f8154811061270a576127096134a3565b5b905f5260205f20015461271d9190613a7e565b600c5f7ffacaf2747a7486cf5730e9265973fb54447d3ace6e7e4711f6360826b073194181526020019081526020015f208460405161275c9190613112565b90815260200160405180910390205f8154811061277c5761277b6134a3565b5b905f5260205f200181905550612798565b5f93505050506127a2565b5b5b600193505050505b919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127f7578060035f8282546127eb91906139a7565b925050819055506128c7565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612881578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161287893929190613705565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361290e578060035f8282540392505081905550612959565b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129b69190612df9565b60405180910390a3505050565b5f5f8290505f5f90505f5f90505b8251811015612a4d575f8382815181106129ee576129ed6134a3565b5b602001015160f81c60f81b60f81c60ff16905060308110158015612a13575060398111155b15612a3f57603081612a259190613a7e565b600a84612a329190613676565b612a3c91906139a7565b92505b5080806001019150506129d1565b508092505050919050565b5f604051905090565b5f5ffd5b5f5ffd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612a9d81612a69565b8114612aa7575f5ffd5b50565b5f81359050612ab881612a94565b92915050565b5f60208284031215612ad357612ad2612a61565b5b5f612ae084828501612aaa565b91505092915050565b5f8115159050919050565b612afd81612ae9565b82525050565b5f602082019050612b165f830184612af4565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612b5e82612b1c565b612b688185612b26565b9350612b78818560208601612b36565b612b8181612b44565b840191505092915050565b5f6020820190508181035f830152612ba48184612b54565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612bd582612bac565b9050919050565b612be581612bcb565b8114612bef575f5ffd5b50565b5f81359050612c0081612bdc565b92915050565b5f819050919050565b612c1881612c06565b8114612c22575f5ffd5b50565b5f81359050612c3381612c0f565b92915050565b5f5f60408385031215612c4f57612c4e612a61565b5b5f612c5c85828601612bf2565b9250506020612c6d85828601612c25565b9150509250929050565b5f5ffd5b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612cb582612b44565b810181811067ffffffffffffffff82111715612cd457612cd3612c7f565b5b80604052505050565b5f612ce6612a58565b9050612cf28282612cac565b919050565b5f67ffffffffffffffff821115612d1157612d10612c7f565b5b612d1a82612b44565b9050602081019050919050565b828183375f83830152505050565b5f612d47612d4284612cf7565b612cdd565b905082815260208101848484011115612d6357612d62612c7b565b5b612d6e848285612d27565b509392505050565b5f82601f830112612d8a57612d89612c77565b5b8135612d9a848260208601612d35565b91505092915050565b5f60208284031215612db857612db7612a61565b5b5f82013567ffffffffffffffff811115612dd557612dd4612a65565b5b612de184828501612d76565b91505092915050565b612df381612c06565b82525050565b5f602082019050612e0c5f830184612dea565b92915050565b5f5f5f60608486031215612e2957612e28612a61565b5b5f612e3686828701612bf2565b9350506020612e4786828701612bf2565b9250506040612e5886828701612c25565b9150509250925092565b5f819050919050565b612e7481612e62565b8114612e7e575f5ffd5b50565b5f81359050612e8f81612e6b565b92915050565b5f60208284031215612eaa57612ea9612a61565b5b5f612eb784828501612e81565b91505092915050565b612ec981612e62565b82525050565b5f602082019050612ee25f830184612ec0565b92915050565b5f5f60408385031215612efe57612efd612a61565b5b5f612f0b85828601612e81565b9250506020612f1c85828601612bf2565b9150509250929050565b5f60ff82169050919050565b612f3b81612f26565b82525050565b5f602082019050612f545f830184612f32565b92915050565b5f5f60408385031215612f7057612f6f612a61565b5b5f83013567ffffffffffffffff811115612f8d57612f8c612a65565b5b612f9985828601612d76565b9250506020612faa85828601612c25565b9150509250929050565b5f60208284031215612fc957612fc8612a61565b5b5f612fd684828501612bf2565b91505092915050565b5f5f60408385031215612ff557612ff4612a61565b5b5f61300285828601612bf2565b925050602061301385828601612bf2565b9150509250929050565b5f819050919050565b61302f8161301d565b8114613039575f5ffd5b50565b5f8135905061304a81613026565b92915050565b5f6020828403121561306557613064612a61565b5b5f6130728482850161303c565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806130bf57607f821691505b6020821081036130d2576130d161307b565b5b50919050565b5f81905092915050565b5f6130ec82612b1c565b6130f681856130d8565b9350613106818560208601612b36565b80840191505092915050565b5f61311d82846130e2565b915081905092915050565b5f81549050613136816130a8565b9050919050565b5f819050815f5260205f209050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026131ab7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613170565b6131b58683613170565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6131f06131eb6131e684612c06565b6131cd565b612c06565b9050919050565b5f819050919050565b613209836131d6565b61321d613215826131f7565b84845461317c565b825550505050565b5f5f905090565b613234613225565b61323f818484613200565b505050565b5b81811015613262576132575f8261322c565b600181019050613245565b5050565b601f8211156132a7576132788161313d565b61328184613161565b81016020851015613290578190505b6132a461329c85613161565b830182613244565b50505b505050565b5f82821c905092915050565b5f6132c75f19846008026132ac565b1980831691505092915050565b5f6132df83836132b8565b9150826002028217905092915050565b8181036132fd5750506133d2565b61330682613128565b67ffffffffffffffff81111561331f5761331e612c7f565b5b61332982546130a8565b613334828285613266565b5f601f831160018114613361575f841561334f578287015490505b61335985826132d4565b8655506133cb565b601f19841661336f8761314f565b965061337a8661313d565b5f5b828110156133a15784890154825560018201915060018501945060208101905061337c565b868310156133be57848901546133ba601f8916826132b8565b8355505b6001600288020188555050505b5050505050505b565b6133dd82612b1c565b67ffffffffffffffff8111156133f6576133f5612c7f565b5b61340082546130a8565b61340b828285613266565b5f60209050601f83116001811461343c575f841561342a578287015190505b61343485826132d4565b86555061349b565b601f19841661344a8661313d565b5f5b828110156134715784890151825560018201915060208501945060208101905061344c565b8683101561348e578489015161348a601f8916826132b8565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b60018511156135525780860481111561352e5761352d6134d0565b5b600185161561353d5780820291505b808102905061354b856134fd565b9450613512565b94509492505050565b5f8261356a5760019050613625565b81613577575f9050613625565b816001811461358d5760028114613597576135c6565b6001915050613625565b60ff8411156135a9576135a86134d0565b5b8360020a9150848211156135c0576135bf6134d0565b5b50613625565b5060208310610133831016604e8410600b84101617156135fb5782820a9050838111156135f6576135f56134d0565b5b613625565b6136088484846001613509565b9250905081840481111561361f5761361e6134d0565b5b81810290505b9392505050565b5f61363682612c06565b915061364183612f26565b925061366e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461355b565b905092915050565b5f61368082612c06565b915061368b83612c06565b925082820261369981612c06565b915082820484148315176136b0576136af6134d0565b5b5092915050565b5f815190506136c581612c0f565b92915050565b5f602082840312156136e0576136df612a61565b5b5f6136ed848285016136b7565b91505092915050565b6136ff81612bcb565b82525050565b5f6060820190506137185f8301866136f6565b6137256020830185612dea565b6137326040830184612dea565b949350505050565b5f60208201905061374d5f8301846136f6565b92915050565b7f4e6f74206861766520726f6c652e0000000000000000000000000000000000005f82015250565b5f613787600e83612b26565b915061379282613753565b602082019050919050565b5f6020820190508181035f8301526137b48161377b565b9050919050565b7f496e76616c69642061646472657373206c656e677468000000000000000000005f82015250565b5f6137ef601683612b26565b91506137fa826137bb565b602082019050919050565b5f6020820190508181035f83015261381c816137e3565b9050919050565b5f61382d82612bac565b915061383883612bac565b9250828203905073ffffffffffffffffffffffffffffffffffffffff811115613864576138636134d0565b5b92915050565b7f496e76616c69642063686172616374657220696e2061646472657373207374725f8201527f696e672e00000000000000000000000000000000000000000000000000000000602082015250565b5f6138c4602483612b26565b91506138cf8261386a565b604082019050919050565b5f6020820190508181035f8301526138f1816138b8565b9050919050565b5f61390282612bac565b915061390d83612bac565b925082820261391b81612bac565b91508282048414831517613932576139316134d0565b5b5092915050565b5f61394382612bac565b915061394e83612bac565b9250828201905073ffffffffffffffffffffffffffffffffffffffff81111561397a576139796134d0565b5b92915050565b5f6040820190506139935f8301856136f6565b6139a06020830184612ec0565b9392505050565b5f6139b182612c06565b91506139bc83612c06565b92508282019050808211156139d4576139d36134d0565b5b92915050565b5f6139e482612c06565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613a1657613a156134d0565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613a5882612c06565b9150613a6383612c06565b925082613a7357613a72613a21565b5b828204905092915050565b5f613a8882612c06565b9150613a9383612c06565b9250828203905081811115613aab57613aaa6134d0565b5b92915050565b5f613abb82612c06565b9150613ac683612c06565b925082613ad657613ad5613a21565b5b828206905092915050565b7f496e76616c696420706172616d6574657220636f756e740000000000000000005f82015250565b5f613b15601783612b26565b9150613b2082613ae1565b602082019050919050565b5f6020820190508181035f830152613b4281613b09565b9050919050565b5f8154613b55816130a8565b613b5f81866130d8565b9450600182165f8114613b795760018114613b8e57613bc0565b60ff1983168652811515820286019350613bc0565b613b978561313d565b5f5b83811015613bb857815481890152600182019150602081019050613b99565b838801955050505b50505092915050565b5f613bd48284613b49565b91508190509291505056fea264697066735822122094111795848f4af1ad540bd600e2b71865fad97686cb65eca64991179cee2f8a64736f6c634300081c0033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000077359400000000000000000000000000e87a29c11a494f03d36fe8f6b7a558fe2851491f00000000000000000000000000000000000000000000000000000000000000074d6f6f6e7261790000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074d6f6f6e72617900000000000000000000000000000000000000000000000000