{
  "_format": "hh-sol-artifact-1",
  "contractName": "RankingHandler",
  "sourceName": "contracts/V3/handler/RankingHandler.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "claimer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "lotteryId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint16",
          "name": "index",
          "type": "uint16"
        }
      ],
      "name": "RankingClaim",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "participator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "rankingId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "RankingInput",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "rankingId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "creator",
          "type": "address"
        }
      ],
      "name": "RankingNew",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "participator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "lotteryId",
          "type": "uint256"
        }
      ],
      "name": "RankingRefund",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "lotteryId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "participator",
          "type": "address"
        }
      ],
      "name": "RankingTrigger",
      "type": "event"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "engine",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "clusterArea",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "stateCounter",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "clusterId",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "taskId",
              "type": "uint32"
            },
            {
              "internalType": "address",
              "name": "claimer",
              "type": "address"
            },
            {
              "internalType": "uint8",
              "name": "io",
              "type": "uint8"
            },
            {
              "internalType": "uint16",
              "name": "round",
              "type": "uint16"
            },
            {
              "internalType": "uint8",
              "name": "branch",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "tokenSlotIndex",
              "type": "uint8"
            }
          ],
          "internalType": "struct IHandlerOld.Claim",
          "name": "claim",
          "type": "tuple"
        }
      ],
      "name": "claimIOAddressBranchToken",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "cname",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "engine",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "clusterArea",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "stateCounter",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "clusterId",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "taskId",
              "type": "uint32"
            },
            {
              "internalType": "address",
              "name": "claimer",
              "type": "address"
            },
            {
              "internalType": "uint8",
              "name": "io",
              "type": "uint8"
            },
            {
              "internalType": "uint16",
              "name": "round",
              "type": "uint16"
            },
            {
              "internalType": "uint8",
              "name": "branch",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "tokenSlotIndex",
              "type": "uint8"
            }
          ],
          "internalType": "struct IHandlerOld.Claim",
          "name": "claim",
          "type": "tuple"
        }
      ],
      "name": "getClaimIOAddressBranchToken",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getIOBranches",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint8[]",
              "name": "inBranch",
              "type": "uint8[]"
            },
            {
              "internalType": "uint8[]",
              "name": "outBranch",
              "type": "uint8[]"
            }
          ],
          "internalType": "struct IHandlerOld.IOBranch[]",
          "name": "branches",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "engine",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "clusterArea",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        },
        {
          "internalType": "address",
          "name": "stateCounter",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "taskId",
          "type": "uint32"
        },
        {
          "internalType": "uint16",
          "name": "round",
          "type": "uint16"
        }
      ],
      "name": "getInputAddressRound",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "engine",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "clusterArea",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        },
        {
          "internalType": "address",
          "name": "stateCounter",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "taskId",
          "type": "uint32"
        },
        {
          "internalType": "uint16",
          "name": "round",
          "type": "uint16"
        }
      ],
      "name": "getOutputAddressRound",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "lotteryId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        },
        {
          "internalType": "uint16",
          "name": "ruleSlotIndex",
          "type": "uint16"
        },
        {
          "internalType": "uint8",
          "name": "branch",
          "type": "uint8"
        }
      ],
      "name": "getRuleGroupSlotArgs",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "engine",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "clusterArea",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "clusterId",
              "type": "uint32"
            },
            {
              "internalType": "uint16",
              "name": "ruleSlotIndexInput",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "ruleSlotIndexOutput",
              "type": "uint16"
            },
            {
              "internalType": "uint8",
              "name": "branch",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "stateCounter",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "taskId",
              "type": "uint32"
            },
            {
              "internalType": "address",
              "name": "caller",
              "type": "address"
            },
            {
              "internalType": "uint8",
              "name": "cmd",
              "type": "uint8"
            },
            {
              "internalType": "bytes",
              "name": "args",
              "type": "bytes"
            }
          ],
          "internalType": "struct Handler.StateParams",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "getState",
      "outputs": [
        {
          "internalType": "bytes[]",
          "name": "",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "engine",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "outAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "clusterArea",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        },
        {
          "internalType": "address",
          "name": "stateCounter",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "taskId",
          "type": "uint32"
        },
        {
          "internalType": "bytes",
          "name": "args",
          "type": "bytes"
        },
        {
          "internalType": "uint16",
          "name": "round",
          "type": "uint16"
        }
      ],
      "name": "getTokenBranch",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256[]",
              "name": "valueList",
              "type": "uint256[]"
            }
          ],
          "internalType": "struct TokenHandler.TokenBranch",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "randomGenerator_",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "caller",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "stateCounter",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "poolFee",
              "type": "address"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "caller",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "clusterArea",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "lastHandler",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "snippet",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "valueTime",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "taskId",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "parentTaskId",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "clusterId",
                  "type": "uint32"
                },
                {
                  "internalType": "uint8",
                  "name": "state",
                  "type": "uint8"
                },
                {
                  "components": [
                    {
                      "internalType": "uint8",
                      "name": "erc",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "id",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    },
                    {
                      "components": [
                        {
                          "internalType": "uint32",
                          "name": "attrId",
                          "type": "uint32"
                        },
                        {
                          "internalType": "int40",
                          "name": "attrAmount",
                          "type": "int40"
                        }
                      ],
                      "internalType": "struct Attribute.AttributeIn[]",
                      "name": "attrInList",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct Token.Token[]",
                  "name": "inTokenList",
                  "type": "tuple[]"
                },
                {
                  "internalType": "bytes",
                  "name": "args",
                  "type": "bytes"
                }
              ],
              "internalType": "struct Task.Task",
              "name": "task",
              "type": "tuple"
            },
            {
              "internalType": "uint8",
              "name": "state",
              "type": "uint8"
            }
          ],
          "internalType": "struct Handler.Process",
          "name": "param",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "handler",
              "type": "address"
            },
            {
              "internalType": "uint8",
              "name": "code",
              "type": "uint8"
            },
            {
              "internalType": "string",
              "name": "msg",
              "type": "string"
            },
            {
              "internalType": "bytes",
              "name": "args",
              "type": "bytes"
            }
          ],
          "internalType": "struct Handler.Result",
          "name": "preResult",
          "type": "tuple"
        }
      ],
      "name": "process",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "handler",
              "type": "address"
            },
            {
              "internalType": "uint8",
              "name": "code",
              "type": "uint8"
            },
            {
              "internalType": "string",
              "name": "msg",
              "type": "string"
            },
            {
              "internalType": "bytes",
              "name": "args",
              "type": "bytes"
            }
          ],
          "internalType": "struct Handler.Result",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "randomGenerator",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        },
        {
          "components": [
            {
              "components": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "uint8",
                          "name": "erc",
                          "type": "uint8"
                        },
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "uint256[]",
                          "name": "valueList",
                          "type": "uint256[]"
                        }
                      ],
                      "internalType": "struct Token.TokenTemplate",
                      "name": "tokenTemplate",
                      "type": "tuple"
                    },
                    {
                      "internalType": "uint8",
                      "name": "rule",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address[]",
                      "name": "ioAddressList",
                      "type": "address[]"
                    },
                    {
                      "internalType": "uint256[]",
                      "name": "valueList",
                      "type": "uint256[]"
                    }
                  ],
                  "internalType": "struct Rule.TokenSlot[]",
                  "name": "tokenSlotList",
                  "type": "tuple[]"
                },
                {
                  "internalType": "uint8",
                  "name": "branch",
                  "type": "uint8"
                },
                {
                  "internalType": "address",
                  "name": "poolToken",
                  "type": "address"
                },
                {
                  "internalType": "address[]",
                  "name": "handlerList",
                  "type": "address[]"
                },
                {
                  "internalType": "bytes[]",
                  "name": "argsList",
                  "type": "bytes[]"
                }
              ],
              "internalType": "struct Rule.GroupSlot[]",
              "name": "groupSlotList",
              "type": "tuple[]"
            },
            {
              "internalType": "uint8[]",
              "name": "ruleSlotBound",
              "type": "uint8[]"
            },
            {
              "components": [
                {
                  "internalType": "uint16",
                  "name": "ruleSlotIndexInput",
                  "type": "uint16"
                },
                {
                  "internalType": "uint16",
                  "name": "ruleSlotIndexOutput",
                  "type": "uint16"
                },
                {
                  "internalType": "uint8",
                  "name": "state",
                  "type": "uint8"
                },
                {
                  "internalType": "uint32",
                  "name": "totalCount",
                  "type": "uint32"
                },
                {
                  "internalType": "uint8",
                  "name": "durationType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint32",
                  "name": "delayTimestamp",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "delayBlockNumber",
                  "type": "uint32"
                },
                {
                  "internalType": "uint64",
                  "name": "handlerCount",
                  "type": "uint64"
                },
                {
                  "internalType": "address[]",
                  "name": "handlerList",
                  "type": "address[]"
                },
                {
                  "internalType": "bytes[]",
                  "name": "handlerArgsList",
                  "type": "bytes[]"
                },
                {
                  "internalType": "address",
                  "name": "snippet",
                  "type": "address"
                }
              ],
              "internalType": "struct Rule.Rule[]",
              "name": "ruleList",
              "type": "tuple[]"
            },
            {
              "components": [
                {
                  "internalType": "uint32",
                  "name": "attrId",
                  "type": "uint32"
                },
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "symbol",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "uri",
                  "type": "string"
                },
                {
                  "internalType": "uint8",
                  "name": "level",
                  "type": "uint8"
                }
              ],
              "internalType": "struct Attribute.Attribute[]",
              "name": "attrList",
              "type": "tuple[]"
            },
            {
              "internalType": "uint8[]",
              "name": "attrStateList",
              "type": "uint8[]"
            },
            {
              "internalType": "address[]",
              "name": "deployerList",
              "type": "address[]"
            },
            {
              "internalType": "address[]",
              "name": "adminList",
              "type": "address[]"
            },
            {
              "internalType": "uint32",
              "name": "delayTimestamp",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "delayBlockNumber",
              "type": "uint32"
            },
            {
              "internalType": "uint8",
              "name": "state",
              "type": "uint8"
            },
            {
              "internalType": "string",
              "name": "description",
              "type": "string"
            }
          ],
          "internalType": "struct Cluster.Cluster",
          "name": "cluster",
          "type": "tuple"
        }
      ],
      "name": "regRule",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        },
        {
          "internalType": "uint16",
          "name": "ruleSlotIndex",
          "type": "uint16"
        },
        {
          "internalType": "uint8",
          "name": "branch",
          "type": "uint8"
        },
        {
          "internalType": "bytes",
          "name": "args",
          "type": "bytes"
        }
      ],
      "name": "regRuleGroupSlotArgs",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "ruleGroupSlotArgs",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        },
        {
          "internalType": "uint16",
          "name": "ruleSlotIndexInput",
          "type": "uint16"
        },
        {
          "internalType": "uint16",
          "name": "ruleSlotIndexOutput",
          "type": "uint16"
        },
        {
          "internalType": "uint8",
          "name": "cmd",
          "type": "uint8"
        },
        {
          "internalType": "bytes",
          "name": "args",
          "type": "bytes"
        }
      ],
      "name": "updateArgs",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b506160e580620000216000396000f3fe608060405234801561001057600080fd5b50600436106100f65760003560e01c8063971f699911610092578063971f6999146101e0578063a903620c146101f3578063af84b51f14610205578063b4b70352146100fb578063c4d66de814610225578063d0d35b5514610238578063d7f8a18d1461025c578063dcbad90d14610287578063f2fe4fa5146102a057600080fd5b80631cc4f041146100fb5780631eda6e4f1461012457806334c76b25146101445780634b2dbcb8146101615780634b2e9b411461016157806354fd4d50146101815780635790c294146101925780636dabaf04146101a757806395edcb08146101c0575b600080fd5b61010f6101093660046141a9565b50600090565b60405190151581526020015b60405180910390f35b6101376101323660046142ee565b6102af565b60405161011b91906143a7565b6040805160208101909152600081525b60405161011b9190614447565b61017461016f36600461445a565b610349565b60405161011b91906144e1565b60005b60405190815260200161011b565b6101a56101a036600461452e565b610379565b005b61010f6101b536600461459e565b600095945050505050565b6101d36101ce366004614858565b610579565b60405161011b9190614a28565b6101846101ee366004614a89565b610e85565b6101a56102013660046151a7565b5050565b61021861021336600461535a565b610eb6565b60405161011b9190615477565b6101a56102333660046154d9565b611181565b6101546102463660046154f6565b6040805160208101909152600081529392505050565b61026f61026a366004614a89565b611210565b6040516001600160a01b03909116815260200161011b565b60005461026f906201000090046001600160a01b031681565b606060405161011b919061557b565b60408051602081019091526060815260006102d08a898989898e600061124f565b60008181526004602090815260408083208151815480850282018401845293810184815295965093949092849284919084018282801561032f57602002820191906000526020600020905b81548152602001906001019080831161031b575b5050509190925250919d9c50505050505050505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505098975050505050505050565b8051156105735760011960ff83160161044c576000338561039b866001615616565b6040516020016103ad93929190615631565b60408051601f198184030181529190528051602090910120905060006103d383826112be565b905061271081106104175760405162461bcd60e51b81526020600482015260096024820152683332b29032b93937b960b91b60448201526064015b60405180910390fd5b600091825260016020818152604084208054808401825581865291909420908101839055835491820190935590910155610573565b606860ff83161061057357600033858560405160200161046e93929190615631565b60408051601f198184030181529190528051602090910120905060006104958360016112be565b905060006104a384826112be565b60008481526001602081905260409091208054929350918491839181106104cc576104cc61565c565b9060005260206000200160008282546104e59190615672565b92505081905550612710816001815481106105025761050261565c565b906000526020600020015411156105535760405162461bcd60e51b81526020600482015260156024820152743832b931b2b73a30b3b2aa37ba30b61032b93937b960591b604482015260640161040e565b80546001810182556000918252602090912060809390931b909117910155505b50505050565b604080516080810182526000808252602082015260609181018290528181019190915230825260608301516000906105b09061131b565b905060008460600151602001516001600160a01b031663fe8c4aa36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061e9190615690565b60608601516101008101519061063390611327565b6106408860600151611346565b604080516001600160a01b03909516602086015263ffffffff9093169284019290925261ffff908116606084015216608082015260a00160405160208183030381529060405280519060200120905060006106b36106ae846000896060015161136b9092919063ffffffff16565b6113b8565b9050600060ff82166008146106f957606087015160e0015163ffffffff16156106e457866060015160e001516106ee565b866060015160c001515b63ffffffff1661070e565b606087015161070e906106ae9086600161136b565b9050600061073b338960600151602001518a6060015161010001518b60200151868d60000151600061124f565b60008381526003602052604090209091506107568985611405565b60ff84166001148061076b575060ff84166003145b156108b85761077b818a88611466565b88516040517f4d4b454f1762d5ca43a7b8f88366b30b52f65d817b9c48efdef94f8f84c53106916107ae918691906156ad565b60405180910390a160021960ff8516016108b35760008381526002602090815260408083208c516001600160a01b031684529091528120805460ff191660019081179091556004830180549192909161080e90849063ffffffff166156c4565b82546101009290920a63ffffffff81810219909316919092169190910217905550604080516060810182528a516001600160a01b0390811682526000602080840182815294840182815260018781018054918201815584529190922093519301805494519151939092166001600160d01b031990941693909317600160a01b65ffffffffffff94851602176001600160d01b0316600160d01b93909216929092021790555b610dd8565b60011960ff851601610b145760028101541561090b5760405162461bcd60e51b81526020600482015260126024820152711a5b9c1d5d081a185cc8199a5b9a5cda195960721b604482015260640161040e565b8054600160201b900463ffffffff164211156109395760405162461bcd60e51b815260040161040e906156e1565b60008381526002602090815260408083208c516001600160a01b0316845290915290205460ff16156109a05760405162461bcd60e51b815260206004820152601060248201526f18d85b1b195c881a185cc81a5b9c1d5d60821b604482015260640161040e565b60008381526002602090815260408083208c516001600160a01b031684529091528120805460ff19166001908117909155600483018054919290916109ec90849063ffffffff166156c4565b82546101009290920a63ffffffff81810219909316919092169190910217905550604080516060810182528a516001600160a01b0390811682526000602080840182815294840182815260018781018054808301825581865293909420955195909201805496519151959094166001600160d01b031990961695909517600160a01b65ffffffffffff96871602176001600160d01b0316600160d01b95909416949094029290921790558a5190547fc9cf1748030a3031db5c621e9b435f390e847f8e0e420fdb6505a5b67e64fecf928691610ac8919061570f565b604080516001600160a01b03909416845260208401929092529082015260600160405180910390a18054600482015463ffffffff9182169116036108b3576108b389838584600261155c565b60061960ff851601610b5b578054600160201b900463ffffffff16421115610b4e5760405162461bcd60e51b815260040161040e906156e1565b6108b3898385848861155c565b60071960ff851601610b95578054600160201b900463ffffffff16421115610b4e5760405162461bcd60e51b815260040161040e906156e1565b60041960ff851601610c4a57610bc983610bc26106ae8960018e6060015161136b9092919063ffffffff16565b8b51611af8565b6108b38982600301610bee6106ae8a60018f6060015161136b9092919063ffffffff16565b61ffff1681548110610c0257610c0261565c565b60009182526020909120015460608c0151600160a81b90910460ff1690610c2f906106ae908b600161136b565b8454869060ff600160701b8204169063ffffffff1689611be5565b60051960ff851601610dd8578054600160201b900463ffffffff164211610cae5760405162461bcd60e51b815260206004820152601860248201527719195859131a5b99481a185cc81b9bdd081c995858da195960421b604482015260640161040e565b600281015415610cf75760405162461bcd60e51b81526020600482015260146024820152731c985b9ada5b99c81a185cc8199a5b9a5cda195960621b604482015260640161040e565b60008381526002602090815260408083208c516001600160a01b0316845290915290205460ff16610d5d5760405162461bcd60e51b815260206004820152601060248201526f0c0c081a185cc81b9bdd081a5b9c1d5d60821b604482015260640161040e565b60008381526002602090815260408083208c516001600160a01b031684529091529020805460ff19169055610d92898361217a565b8851604080516001600160a01b039092168252602082018590527f9dc9089e81c7579358adc15f29ff7b4d18cac0169d94f7d1a388a2d7d9a05eaf910160405180910390a15b60ff8416600714610deb57606460208901525b60ff8416600414801590610e03575060ff8416600514155b8015610e13575060ff8416600614155b8015610e23575060ff8416600814155b15610e755760ff84166002148015610e3e5750600281015415155b8015610e535750600054600160b01b900460ff165b15610e6a576000805460ff60b01b19169055610e75565b610e75898386612187565b8796505050505050505b92915050565b60016020528160005260406000208181548110610ea157600080fd5b90600052602060002001600091509150505481565b60e081015163ffffffff1660009081526003602090815260408083208451828601516060878101519451909693959394610ef294909101615631565b60408051808303601f1901815282825280516020918201206101e084018352855463ffffffff80821660e08701908152600160201b83048216610100880152600160401b8304909116610120870152600160601b820460ff9081161515610140880152600160681b83048116610160880152600160701b83048116610180880152600160781b8304166101a0870152600160801b90910461ffff166101c0860152845260018601805484518185028101850190955280855291955086938386019390929060009084015b8282101561101857600084815260209081902060408051606081018252918501546001600160a01b038116835265ffffffffffff600160a01b8204811684860152600160d01b9091041690820152825260019092019101610fbc565b5050505081526020016002820154815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156110a857600084815260209081902060408051606081018252918501546001600160a01b038116835260ff600160a01b82048116151584860152600160a81b909104169082015282526001909201910161104f565b5050509082525060049182015463ffffffff808216602080850191909152600160201b8304909116604080850191909152600160401b90920460ff161515606090930192909252600085815260019092529081902090516312593de760e01b815273__$a830146f373201f25d1e4dbe214c913d5e$__936312593de7936111349391928a9291016158f2565b600060405180830381865af4158015611151573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111799190810190615ad0565b949350505050565b600061118d60016121f0565b905080156111a5576000805461ff0019166101001790555b6000805462010000600160b01b031916620100006001600160a01b038516021790558015610201576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60008281526003602081905260408220018054839081106112335761123361565c565b6000918252602090912001546001600160a01b03169392505050565b604080516001600160a01b039889166020808301919091529789168183015263ffffffff968716606082015294881660808601529290941660a084015290941660c082015261ffff90911660e08083019190915283518083039091018152610100909101909252815191012090565b6000806112d26112cd8561227d565b6122a3565b90506111796112fc828560ff16815181106112ef576112ef61565c565b60200260200101516122a3565b60028151811061130e5761130e61565c565b60200260200101516113b8565b6060610e7f82306123ac565b6000610e7f8260a001516010600060086113419190615672565b61245e565b6000610e7f8260a001516010600060086113609190615672565b611341906010615672565b611373613f09565b61139583611382846001615b04565b60ff16815181106112ef576112ef61565c565b6002815181106113a7576113a761565c565b602002602001015190509392505050565b8051600090158015906113cd57508151602110155b6113d657600080fd5b6000806113e28461247d565b8151919350915060208210156111795760208290036101000a9004949350505050565b600061141483606001516124c4565b90508060ff168260ff16146114615760405162461bcd60e51b81526020600482015260136024820152720c6dac840c4e4c2dcc6d040dad2e6dac2e8c6d606b1b604482015260640161040e565b505050565b606082015161147b906106ae9083600161136b565b835463ffffffff191663ffffffff91821617845560608301516114a8916106ae9190849060029061136b16565b835460ff91909116600160701b0260ff60701b1990911617835560608201516114d7906106ae9083600361136b565b835460ff91909116600160681b0260ff60681b199091161783556060820151611506906106ae9083600461136b565b835467ffffffff000000001916600160201b63ffffffff92831602178455606083015161153d916106ae9190849060059061136b16565b835460ff91909116600160781b0260ff60781b19909116179092555050565b8154600483015463ffffffff908116911614801561157c57506002820154155b6115c35760405162461bcd60e51b81526020600482015260186024820152771c985b991bdb481a185cc81899595b8818dbdb5c1d5d195960421b604482015260640161040e565b6000600160008760600151602001516001600160a01b0316631424e30c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561160f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116339190615690565b60608901516101008101519061164890611346565b60405160200161165a93929190615631565b60408051601f198184030181529181528151602092830120835290820192909252016000208354909150600160781b900460ff166118015760005460608701516020810151610100820151620100009093046001600160a01b03169263f41fdf58926116c590611327565b6116d28b60600151611346565b60208c015160608d015160c001518d516040516001600160e01b031960e08a901b1681526117099796959493929190600401615b1d565b6020604051808303816000875af1158015611728573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174c9190615b85565b600284018190558354600160681b900460ff169061176c90606490615bb4565b611777906001615672565b111561178c5761178784876124e9565b6117a2565b60048301805460ff60401b1916600160401b1790555b6000816000815481106117b7576117b761565c565b906000526020600020015411156117fc57825481546117fc918891889163ffffffff169085906000906117ec576117ec61565c565b9060005260206000200154612899565b611af0565b8254600160781b900460ff16600114801561181f575060ff82166007145b156119205760005460608701516020810151610100820151620100009093046001600160a01b03169263063738cb9261185790611327565b6118648b60600151611346565b60208c015160608d015160e0908101518e516040519289901b6001600160e01b03191683526001600160a01b03978816600484015263ffffffff968716602484015261ffff958616604484015293909416606482015290851660848201529290911660a48301529190911660c482015260e4016020604051808303816000875af11580156118f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191a9190615bd8565b50611af0565b8254600160781b900460ff16600114801561193e575060ff82166008145b15611af05760005460608701516020810151610100820151620100009093046001600160a01b03169263524562279261197690611327565b6119838b60600151611346565b8b602001518c6060015160e001518d600001516040518863ffffffff1660e01b81526004016119b89796959493929190615b1d565b6020604051808303816000875af11580156119d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fb9190615b85565b60028401819055600a10611a515760405162461bcd60e51b815260206004820152601c60248201527f72616e646f6d20626c6f636b20686173206e6f74207265616368656400000000604482015260640161040e565b82546002840154600160681b90910460ff1690611a7090606490615bb4565b611a7b906001615672565b1115611a9057611a8b84876124e9565b611aa6565b60048301805460ff60401b1916600160401b1790555b600081600081548110611abb57611abb61565c565b90600052602060002001541115611af05782548154611af0918891889163ffffffff169085906000906117ec576117ec61565c565b505050505050565b6000838152600360208190526040822001805461ffff8516908110611b1f57611b1f61565c565b600091825260209091200180549091506001600160a01b03838116911614611b815760405162461bcd60e51b815260206004820152601560248201527431b630b4b6b2b91034b9903737ba103bb4b73732b960591b604482015260640161040e565b8054600160a01b900460ff1615611bcf5760405162461bcd60e51b81526020600482015260126024820152711dda5b9b995c881a185cc818db185a5b595960721b604482015260640161040e565b805460ff60a01b1916600160a01b179055505050565b6000611bef6128b8565b9050611c076040518060200160405280606081525090565b611c12886068615b04565b60ff166040808401919091526001606080850191909152600584528a0151602090810151825163050938c360e21b815292516000936001600160a01b0390921692631424e30c92600480820193918290030181865afa158015611c79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9d9190615690565b6001600160a01b0316632c34025e8b606001516101000151611cc28d60600151611346565b86604001516040518463ffffffff1660e01b8152600401611ce593929190615bf3565b600060405180830381865afa158015611d02573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2a9190810190615e4c565b9150508060000151516001600160401b03811115611d4a57611d4a61400c565b604051908082528060200260200182016040528015611d73578160200160208202803683370190505b506101408401528051516001600160401b03811115611d9457611d9461400c565b604051908082528060200260200182016040528015611dbd578160200160208202803683370190505b5061016084015280515160ff1661012084015260608a01516020908101516040805163050938c360e21b8152905160009360019385936001600160a01b0390911692631424e30c926004808401939192918290030181865afa158015611e27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4b9190615690565b60608e015161010081015190611e6090611346565b604051602001611e7293929190615631565b604051602081830303815290604052805190602001208152602001908152602001600020905060005b8251518110156120ea576000611ed184600001518381518110611ec057611ec061565c565b6020026020010151600001516128ff565b8451805191925060039184908110611eeb57611eeb61565c565b6020026020010151600001516000015160ff1603611f71576000611f2f85600001518481518110611f1e57611f1e61565c565b602002602001015160000151612b1c565b905080600081518110611f4457611f4461565c565b60200260200101518761014001518481518110611f6357611f6361565c565b602002602001018181525050505b60001960ff8a1601611ffd5782611f898d6002615b04565b60ff1681548110611f9c57611f9c61565c565b90600052602060002001546001600160801b031681600081518110611fc357611fc361565c565b6020026020010151611fd59190615f35565b8661016001518381518110611fec57611fec61565c565b6020026020010181815250506120d7565b60ff89166120d757826120118d6002615b04565b60ff16815481106120245761202461565c565b90600052602060002001546001600160801b03166127106120459190615f49565b6080846120538f6002615b04565b60ff16815481106120665761206661565c565b9060005260206000200154901c8963ffffffff168360008151811061208d5761208d61565c565b602002602001015161209f9190615f49565b6120a99190615f49565b6120b39190615f35565b86610160015183815181106120ca576120ca61565c565b6020026020010181815250505b50806120e281615f60565b915050611e9b565b506120f58385612c8b565b600088815260046020908152604090912084518051869361211a928492910190613f23565b50508b51604080516001600160a01b0390921682526020820188905261ffff8c16908201527fa8c0837becaef86715415cfc0851260b161d2635cd6170ea311798b172a7026c915060600160405180910390a15050505050505050505050565b610201828260008061328a565b60006121916128b8565b90506121a96040518060200160405280606081525090565b60646040830152600160208301526121c18183612c8b565b60008481526004602090815260409091208251805184936121e6928492910190613f23565b5050505050505050565b60008054610100900460ff1615612237578160ff1660011480156122135750303b155b61222f5760405162461bcd60e51b815260040161040e90615f79565b506000919050565b60005460ff80841691161061225e5760405162461bcd60e51b815260040161040e90615f79565b506000805460ff191660ff92909216919091179055600190565b919050565b612285613f09565b50604080518082019091528151815260209182019181019190915290565b60606122ae826137d2565b6122b757600080fd5b60006122c28361380d565b90506000816001600160401b038111156122de576122de61400c565b60405190808252806020026020018201604052801561231757816020015b612304613f09565b8152602001906001900390816122fc5790505b50905060006123298560200151613892565b85602001516123389190615672565b90506000805b848110156123a15761234f83613914565b91506040518060400160405280838152602001848152508482815181106123785761237861565c565b602090810291909101015261238d8284615672565b92508061239981615f60565b91505061233e565b509195945050505050565b606060006123c16112cd85610160015161227d565b905060005b81518110156124535760006124086123e98484815181106112ef576112ef61565c565b6000815181106123fb576123fb61565c565b60200260200101516139b8565b9050846001600160a01b0316816001600160a01b031603612442576124388383815181106112ef576112ef61565c565b9350505050610e7f565b5061244c81615f60565b90506123c6565b506060949350505050565b91821c91600080612472600180861b61570f565b909416949350505050565b600080600061248f8460200151613892565b905060008185602001516124a39190615672565b905060008286600001516124b7919061570f565b9196919550909350505050565b6000610e7f8260a001516008600060086124de9190615672565b611360906010615672565b60008281526003602052604090206004810154600160401b900460ff16156125405760405162461bcd60e51b815260206004820152600a60248201526937379037b732903bb4b760b11b604482015260640161040e565b6002810154600081900361258f5760405162461bcd60e51b81526020600482015260166024820152751a5b9c1d5d081a185cc81b9bdd08199a5b9a5cda195960521b604482015260640161040e565b60008360600151602001516001600160a01b0316631424e30c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125fb9190615690565b60608501516101008101519061261090611346565b60405160200161262293929190615631565b60408051601f19818403018152918152815160209283012060008181526001909352912090915060025b81548110156128555760005b82828154811061266a5761266a61565c565b90600052602060002001546001600160801b03168110156128425760018601546000906126979087615bb4565b90508660030160405180606001604052808960010184815481106126bd576126bd61565c565b60009182526020808320909101546001600160a01b031683528201526040016126e760028761570f565b60ff9081169091528254600180820185556000948552602094859020845192018054958501516040909501516001600160a01b039093166001600160a81b031990961695909517600160a01b941515949094029390931760ff60a81b1916600160a81b919092160217909155878101805490916127639161570f565b815481106127735761277361565c565b906000526020600020018760010182815481106127925761279261565c565b600091825260209091208254910180546001600160a01b039092166001600160a01b031983168117825583546001600160d01b031990931617600160a01b9283900465ffffffffffff9081169093021780825592546001600160d01b03909316600160d01b938490049092169092021790556001870180548061281757612817615fc7565b600082815260208120820160001990810191909155019055508061283a81615f60565b915050612658565b508061284d81615f60565b91505061264c565b5084516040517f8f3155e4fe9fb4a120cf0d56a17e2fcac9d3a61f960760e13290d2c19e48134391612889918991906156ad565b60405180910390a1505050505050565b6000805460ff60b01b1916600160b01b1790556105738484838561328a565b6128c0613f6e565b6128c8613f6e565b6000808252604082018190526127106080830181905260a0830181905260c083019190915260e08201819052610100820152919050565b60408051600280825260608083018452926000929190602083019080368337505084519192505060ff1615806129395750825160ff166001145b156129bf5782604001516001815181106129555761295561565c565b6020026020010151816000815181106129705761297061565c565b60200260200101818152505082604001516002815181106129935761299361565c565b6020026020010151816001815181106129ae576129ae61565c565b602002602001018181525050610e7f565b825160ff1660021901612a215782604001516002815181106129e3576129e361565c565b6020026020010151816000815181106129fe576129fe61565c565b60200260200101818152505082604001516003815181106129935761299361565c565b825160ff1660011901610e7f576000612a39846139d2565b90508060ff16600203612b15576000612a5185613a57565b90506000612a5e86613aab565b604087015190915060ff8216612a75846002615616565b612a7f9190615616565b61ffff1681518110612a9357612a9361565c565b602002602001015184600081518110612aae57612aae61565c565b6020908102919091010152604086015160ff8216612acd846003615616565b612ad79190615616565b61ffff1681518110612aeb57612aeb61565c565b602002602001015184600181518110612b0657612b0661565c565b60200260200101818152505050505b5092915050565b60408051600280825260608083018452926000929190602083019080368337505084519192505060ff1660011901612be6576000612b5984613b15565b905060ff8116612be0578360400151600281518110612b7a57612b7a61565c565b602002602001015182600081518110612b9557612b9561565c565b6020026020010181815250508360400151600381518110612bb857612bb861565c565b602002602001015182600181518110612bd357612bd361565c565b6020026020010181815250505b50610e7f565b825160ff1660021901610e7f576000612bfe84613b15565b905060ff8116612b15578360400151600481518110612c1f57612c1f61565c565b602002602001015182600081518110612c3a57612c3a61565c565b6020026020010181815250508360400151600581518110612c5d57612c5d61565c565b602002602001015182600181518110612c7857612c7861565c565b6020026020010181815250505092915050565b60c081015160019015612ca65780612ca281615f60565b9150505b8160e0015161271014612cc15780612cbd81615f60565b9150505b81610100015161271014612cdd5780612cd981615f60565b9150505b61014082015151151580612cf657506101608201515115155b80612d0657506101a08201515115155b15612d78576000826101600151518361014001515111612d4b57826101a00151518361016001515111612d3f57826101a0015151612d53565b82610160015151612d53565b826101400151515b9050612d60816004615f49565b612d6a9083615672565b60ff90911661012084015290505b612da26040518060600160405280602e8152602001616019602e913983610120015160ff16613b48565b806001600160401b03811115612dba57612dba61400c565b604051908082528060200260200182016040528015612de3578160200160208202803683370190505b5083528151612df3908490613b8d565b612e01838360200151613be5565b612e0f838360600151613c26565b612e1d838360400151613c75565b612e2c83836101200151613cb9565b612e4d60405180606001604052806025815260200161604760259139613d4a565b60008060019050836080015162ffffff1661271014612e8257612e74858560800151613d90565b612e7f600183615616565b91505b8360a0015163ffffffff1661271014612eb157612ea3858560a00151613df7565b612eae600283615616565b91505b60c084015115612ef75760c0840151855182612ecc81615f60565b935081518110612ede57612ede61565c565b6020908102919091010152612ef4600483615616565b91505b8360e0015161271014612f405760e0840151855182612f1581615f60565b935081518110612f2757612f2761565c565b6020908102919091010152612f3d600883615616565b91505b83610100015161271014612f8b57610100840151855182612f6081615f60565b935081518110612f7257612f7261565c565b6020908102919091010152612f88601083615616565b91505b61012084015160ff16156132795760005b84610120015160ff1681101561324757600085610140015151118015612fc757508461014001515181105b1561301e578461014001518181518110612fe357612fe361565c565b602002602001015186600001518380612ffb90615f60565b94508151811061300d5761300d61565c565b60200260200101818152505061304c565b85516000908361302d81615f60565b94508151811061303f5761303f61565c565b6020026020010181815250505b60008561016001515111801561306757508461016001515181105b156130be5784610160015181815181106130835761308361565c565b60200260200101518660000151838061309b90615f60565b9450815181106130ad576130ad61565c565b6020026020010181815250506130ec565b8551600090836130cd81615f60565b9450815181106130df576130df61565c565b6020026020010181815250505b60008561018001515111801561310757508461018001515181105b156131615784610180015181815181106131235761312361565c565b602002602001015160ff168660000151838061313e90615f60565b9450815181106131505761315061565c565b60200260200101818152505061318e565b855181908361316f81615f60565b9450815181106131815761318161565c565b6020026020010181815250505b6000856101a00151511180156131a95750846101a001515181105b1561320957846101a0015181815181106131c5576131c561565c565b60200260200101516001600160a01b0316866000015183806131e690615f60565b9450815181106131f8576131f861565c565b602002602001018181525050613237565b85516000908361321881615f60565b94508151811061322a5761322a61565c565b6020026020010181815250505b61324081615f60565b9050612f9c565b50613253602083615616565b915061327960405180608001604052806044815260200161606c60449139865151613b48565b6132838583613e6a565b5050505050565b60006132946128b8565b90506132ac6040518060200160405280606081525090565b600160608301819052602083015283156132d05760676040830152600282526132dc565b60656040830152600682525b6000808760600151602001516001600160a01b0316631424e30c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613325573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133499190615690565b6001600160a01b0316632c34025e8960600151610100015161336e8b60600151611346565b87604001516040518463ffffffff1660e01b815260040161339193929190615bf3565b600060405180830381865afa1580156133ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526133d69190810190615e4c565b915091508161341d5760405162461bcd60e51b815260206004820152601360248201527219dc9bdd5c14db1bdd081b9bdd08199bdd5b99606a1b604482015260640161040e565b8051516001600160401b038111156134375761343761400c565b604051908082528060200260200182016040528015613460578160200160208202803683370190505b506101408501528051516001600160401b038111156134815761348161400c565b6040519080825280602002602001820160405280156134aa578160200160208202803683370190505b5061016085015280515160ff1661012085015260608801516020908101516040805163050938c360e21b8152905160009360019385936001600160a01b0390911692631424e30c926004808401939192918290030181865afa158015613514573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135389190615690565b60608c01516101008101519061354d90611346565b60405160200161355f93929190615631565b60405160208183030381529060405280519060200120815260200190815260200160002090506000805b82548110156135d25760808382815481106135a6576135a661565c565b9060005260206000200154901c826135be9190615672565b9150806135ca81615f60565b915050613589565b5060005b8351518110156137935760006135fb85600001518381518110611ec057611ec061565c565b85518051919250600391849081106136155761361561565c565b6020026020010151600001516000015160ff160361368a57600061364886600001518481518110611f1e57611f1e61565c565b90508060008151811061365d5761365d61565c565b6020026020010151896101400151848151811061367c5761367c61565c565b602002602001018181525050505b89156137415761369b600283615bb4565b600003613708576127108a8a836000815181106136ba576136ba61565c565b60200260200101516136cc9190615f49565b6136d69190615f49565b6136e09190615f35565b88610160015183815181106136f7576136f761565c565b602002602001018181525050613780565b6127108a613717856064615f49565b6137239061271061570f565b61372d919061570f565b8a836000815181106136ba576136ba61565c565b806000815181106137545761375461565c565b602002602001015188610160015183815181106137735761377361565c565b6020026020010181815250505b508061378b81615f60565b9150506135d6565b5061379e8587612c8b565b60008981526004602090815260409091208651805188936137c3928492910190613f23565b50505050505050505050505050565b805160009081036137e557506000919050565b6020820151805160001a9060c0821015613803575060009392505050565b5060019392505050565b8051600090810361382057506000919050565b6000806138308460200151613892565b846020015161383f9190615672565b90506000846000015185602001516138579190615672565b90505b808210156138895761386b82613914565b6138759083615672565b91508261388181615f60565b93505061385a565b50909392505050565b8051600090811a60808110156138ab5750600092915050565b60b88110806138c6575060c081108015906138c6575060f881105b156138d45750600192915050565b60c0811015613908576138e9600160b8615fdd565b6138f69060ff168261570f565b613901906001615672565b9392505050565b6138e9600160f8615fdd565b80516000908190811a608081101561392f5760019150612b15565b60b88110156139555761394360808261570f565b61394e906001615672565b9150612b15565b60c08110156139825760b78103600185019450806020036101000a85510460018201810193505050612b15565b60f88110156139965761394360c08261570f565b60019390930151602084900360f7016101000a900490920160f5190192915050565b80516000906015146139c957600080fd5b610e7f826113b8565b6000600260ff16826000015160ff1603613a4f57610e7f8260400151600081518110613a0057613a0061565c565b6020026020010151600260ff1660006004613a1b9190615b04565b613a26906004615b04565b613a31906010615b04565b613a3c906002615b04565b613a47906004615b04565b60ff1661245e565b506002919050565b805160009060ff1660021480613a715750815160ff166003145b1561222f57610e7f8260400151600081518110613a9057613a9061565c565b6020026020010151601060ff1660006004613a3c9190615b04565b805160009060ff1660021480613ac55750815160ff166003145b1561222f57610e7f8260400151600081518110613ae457613ae461565c565b6020026020010151600260ff1660006004613aff9190615b04565b613b0a906004615b04565b613a47906010615b04565b6000610e7f8260400151600081518110613b3157613b3161565c565b6020026020010151600460ff16600060ff1661245e565b6102018282604051602401613b5e929190615ff6565b60408051601f198184030181529190526020810180516001600160e01b0316632d839cb360e21b179052613eba565b613bc28260000151600081518110613ba757613ba761565c565b60200260200101518260ff16600860ff16600060ff16613ec3565b82518051600090613bd557613bd561565c565b6020026020010181815250505050565b613bc28260000151600081518110613bff57613bff61565c565b60200260200101518260ff16600460ff1660006008613c1e9190615b04565b60ff16613ec3565b613bc28260000151600081518110613c4057613c4061565c565b60200260200101518260ff16600460ff1660006008613c5f9190615b04565b613c6a906004615b04565b613c1e906008615b04565b613bc28260000151600081518110613c8f57613c8f61565c565b60200260200101518260ff16600860ff1660006008613cae9190615b04565b613c1e906004615b04565b613bc28260000151600081518110613cd357613cd361565c565b60200260200101518260ff16600860ff1660006008613cf29190615b04565b613cfd906004615b04565b613d08906008615b04565b613d13906004615b04565b613d1e906010615b04565b613d29906018615b04565b613d34906020615b04565b613d3f906020615b04565b613c1e906020615b04565b613d8d81604051602401613d5e9190614447565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b179052613eba565b50565b613bc28260000151600081518110613daa57613daa61565c565b60200260200101518262ffffff16601860ff1660006008613dcb9190615b04565b613dd6906004615b04565b613de1906008615b04565b613dec906004615b04565b613c1e906010615b04565b613bc28260000151600081518110613e1157613e1161565c565b60200260200101518263ffffffff16602060ff1660006008613e339190615b04565b613e3e906004615b04565b613e49906008615b04565b613e54906004615b04565b613e5f906010615b04565b613c1e906018615b04565b613bc28260000151600081518110613e8457613e8461565c565b60200260200101518261ffff16601060ff1660006008613ea49190615b04565b613eaf906004615b04565b613cae906008615b04565b613d8d81613ee8565b600083821b8183613ed7600180881b61570f565b901b19969096161795945050505050565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b604051806040016040528060008152602001600081525090565b828054828255906000526020600020908101928215613f5e579160200282015b82811115613f5e578251825591602001919060010190613f43565b50613f6a929150613ff7565b5090565b604051806101c00160405280600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600062ffffff168152602001600063ffffffff168152602001600081526020016000815260200160008152602001600060ff168152602001606081526020016060815260200160608152602001606081525090565b5b80821115613f6a5760008155600101613ff8565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b03811182821017156140455761404561400c565b60405290565b60405160a081016001600160401b03811182821017156140455761404561400c565b604080519081016001600160401b03811182821017156140455761404561400c565b604051608081016001600160401b03811182821017156140455761404561400c565b60405161018081016001600160401b03811182821017156140455761404561400c565b604051606081016001600160401b03811182821017156140455761404561400c565b60405161016081016001600160401b03811182821017156140455761404561400c565b604051601f8201601f191681016001600160401b03811182821017156141415761414161400c565b604052919050565b6001600160a01b0381168114613d8d57600080fd5b803561227881614149565b803563ffffffff8116811461227857600080fd5b60ff81168114613d8d57600080fd5b80356122788161417d565b803561ffff8116811461227857600080fd5b600061014082840312156141bc57600080fd5b6141c4614022565b6141cd8361415e565b81526141db6020840161415e565b60208201526141ec6040840161415e565b60408201526141fd60608401614169565b606082015261420e60808401614169565b608082015261421f60a0840161415e565b60a082015261423060c0840161418c565b60c082015261424160e08401614197565b60e082015261010061425481850161418c565b9082015261012061426684820161418c565b908201529392505050565b60006001600160401b0382111561428a5761428a61400c565b50601f01601f191660200190565b600082601f8301126142a957600080fd5b81356142bc6142b782614271565b614119565b8181528460208386010111156142d157600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080610100898b03121561430b57600080fd5b883561431681614149565b9750602089013561432681614149565b9650604089013561433681614149565b955061434460608a01614169565b9450608089013561435481614149565b935061436260a08a01614169565b925060c08901356001600160401b0381111561437d57600080fd5b6143898b828c01614298565b92505061439860e08a01614197565b90509295985092959890939650565b6020808252825182820182905280516040840181905260009291820190839060608601905b808310156143ec57835182529284019260019290920191908401906143cc565b509695505050505050565b60005b838110156144125781810151838201526020016143fa565b50506000910152565b600081518084526144338160208601602086016143f7565b601f01601f19169290920160200192915050565b602081526000613901602083018461441b565b60008060008060008060c0878903121561447357600080fd5b863561447e81614149565b9550602087013561448e81614149565b945061449c60408801614169565b935060608701356144ac81614149565b92506144ba60808801614169565b91506144c860a08801614197565b90509295509295509295565b6001600160a01b03169052565b6020808252825182820181905260009190848201906040850190845b818110156145225783516001600160a01b0316835292840192918401916001016144fd565b50909695505050505050565b6000806000806080858703121561454457600080fd5b61454d85614169565b935061455b60208601614197565b9250604085013561456b8161417d565b915060608501356001600160401b0381111561458657600080fd5b61459287828801614298565b91505092959194509250565b600080600080600060a086880312156145b657600080fd5b6145bf86614169565b94506145cd60208701614197565b93506145db60408701614197565b925060608601356145eb8161417d565b915060808601356001600160401b0381111561460657600080fd5b61461288828901614298565b9150509295509295909350565b60006001600160401b038211156146385761463861400c565b5060051b60200190565b600082601f83011261465357600080fd5b813560206146636142b78361461f565b82815260059290921b8401810191818101908684111561468257600080fd5b8286015b848110156143ec5780356001600160401b03808211156146a557600080fd5b9088019060a0828b03601f190112156146bd57600080fd5b6146c561404b565b868301356146d28161417d565b81526040838101356146e381614149565b828901526060848101358284015260808501359083015260a08401358381111561470d5760008081fd5b8085019450508b603f85011261472557600092508283fd5b8784013592506147376142b78461461f565b83815260069390931b8401810192888101908d8511156147575760008081fd5b948201945b848610156147ae5782868f0312156147745760008081fd5b61477c61406d565b61478587614169565b81528a8701358060040b811461479b5760008081fd5b818c01528252948201949089019061475c565b6080840152505085525050918301918301614686565b6000608082840312156147d657600080fd5b6147de61408f565b905081356147eb81614149565b815260208201356147fb8161417d565b602082015260408201356001600160401b038082111561481a57600080fd5b61482685838601614298565b6040840152606084013591508082111561483f57600080fd5b5061484c84828501614298565b60608301525092915050565b6000806040838503121561486b57600080fd5b82356001600160401b038082111561488257600080fd5b9084019060a0828703121561489657600080fd5b61489e61404b565b82356148a981614149565b815260208301356148b981614149565b602082015260408301356148cc81614149565b60408201526060830135828111156148e357600080fd5b830161018081890312156148f657600080fd5b6148fe6140b1565b6149078261415e565b81526149156020830161415e565b60208201526149266040830161415e565b60408201526149376060830161415e565b60608201526080820135608082015260a082013560a082015261495c60c08301614169565b60c082015261496d60e08301614169565b60e0820152610100614980818401614169565b9082015261012061499283820161418c565b9082015261014082810135858111156149aa57600080fd5b6149b68b828601614642565b82840152505061016080830135858111156149d057600080fd5b6149dc8b828601614298565b82840152505080606084015250506149f66080840161418c565b608082015293506020850135915080821115614a1157600080fd5b50614a1e858286016147c4565b9150509250929050565b6020815260018060a01b03825116602082015260ff60208301511660408201526000604083015160806060840152614a6360a084018261441b565b90506060840151601f19848303016080850152614a80828261441b565b95945050505050565b60008060408385031215614a9c57600080fd5b50508035926020909101359150565b600082601f830112614abc57600080fd5b81356020614acc6142b78361461f565b82815260059290921b84018101918181019086841115614aeb57600080fd5b8286015b848110156143ec5780358352918301918301614aef565b600082601f830112614b1757600080fd5b81356020614b276142b78361461f565b82815260059290921b84018101918181019086841115614b4657600080fd5b8286015b848110156143ec578035614b5d81614149565b8352918301918301614b4a565b600082601f830112614b7b57600080fd5b81356020614b8b6142b78361461f565b82815260059290921b84018101918181019086841115614baa57600080fd5b8286015b848110156143ec5780356001600160401b0380821115614bcd57600080fd5b90880190601f196080838c0382011215614be657600080fd5b614bee61408f565b8784013583811115614bff57600080fd5b84016060818e0384011215614c1357600080fd5b614c1b6140d4565b925088810135614c2a8161417d565b8352604081810135614c3b81614149565b848b0152606082013585811115614c5157600080fd5b614c5f8f8c83860101614aab565b8286015250838352614c7281870161418c565b8a8401526060860135935084841115614c8a57600080fd5b614c988e8b86890101614b06565b90830152506080840135915082821115614cb157600080fd5b614cbf8c8984870101614aab565b60608201528652505050918301918301614bae565b600082601f830112614ce557600080fd5b81356020614cf56142b78361461f565b82815260059290921b84018101918181019086841115614d1457600080fd5b8286015b848110156143ec5780356001600160401b03811115614d375760008081fd5b614d458986838b0101614298565b845250918301918301614d18565b600082601f830112614d6457600080fd5b81356020614d746142b78361461f565b82815260059290921b84018101918181019086841115614d9357600080fd5b8286015b848110156143ec5780356001600160401b0380821115614db75760008081fd5b9088019060a0828b03601f1901811315614dd15760008081fd5b614dd961404b565b8784013583811115614deb5760008081fd5b614df98d8a83880101614b6a565b8252506040614e0981860161418c565b898301526060614e1a81870161415e565b82840152608091508186013585811115614e345760008081fd5b614e428f8c838a0101614b06565b82850152505082850135925083831115614e5c5760008081fd5b614e6a8d8a85880101614cd4565b908201528652505050918301918301614d97565b600082601f830112614e8f57600080fd5b81356020614e9f6142b78361461f565b82815260059290921b84018101918181019086841115614ebe57600080fd5b8286015b848110156143ec578035614ed58161417d565b8352918301918301614ec2565b80356001600160401b038116811461227857600080fd5b600082601f830112614f0a57600080fd5b81356020614f1a6142b78361461f565b82815260059290921b84018101918181019086841115614f3957600080fd5b8286015b848110156143ec5780356001600160401b0380821115614f5d5760008081fd5b90880190610160828b03601f1901811315614f785760008081fd5b614f806140f6565b614f8b888501614197565b81526040614f9a818601614197565b898301526060614fab81870161418c565b8284015260809150614fbe828701614169565b9083015260a0614fcf86820161418c565b8284015260c09150614fe2828701614169565b9083015260e0614ff3868201614169565b828401526101009150615007828701614ee2565b9083015261012085810135858111156150205760008081fd5b61502e8f8c838a0101614b06565b83850152506101409150818601358581111561504a5760008081fd5b6150588f8c838a0101614cd4565b82850152505061506983860161415e565b908201528652505050918301918301614f3d565b600082601f83011261508e57600080fd5b8135602061509e6142b78361461f565b82815260059290921b840181019181810190868411156150bd57600080fd5b8286015b848110156143ec5780356001600160401b03808211156150e15760008081fd5b9088019060a0828b03601f19018113156150fb5760008081fd5b61510361404b565b61510e888501614169565b8152604080850135848111156151245760008081fd5b6151328e8b83890101614298565b8a840152506060808601358581111561514b5760008081fd5b6151598f8c838a0101614298565b83850152506080915081860135858111156151745760008081fd5b6151828f8c838a0101614298565b82850152505061519383860161418c565b9082015286525050509183019183016150c1565b600080604083850312156151ba57600080fd5b6151c383614169565b915060208301356001600160401b03808211156151df57600080fd5b9084019061016082870312156151f457600080fd5b6151fc6140f6565b82358281111561520b57600080fd5b61521788828601614d53565b82525060208301358281111561522c57600080fd5b61523888828601614e7e565b60208301525060408301358281111561525057600080fd5b61525c88828601614ef9565b60408301525060608301358281111561527457600080fd5b6152808882860161507d565b60608301525060808301358281111561529857600080fd5b6152a488828601614e7e565b60808301525060a0830135828111156152bc57600080fd5b6152c888828601614b06565b60a08301525060c0830135828111156152e057600080fd5b6152ec88828601614b06565b60c0830152506152fe60e08401614169565b60e0820152610100615311818501614169565b9082015261012061532384820161418c565b90820152610140838101358381111561533b57600080fd5b61534789828701614298565b8284015250508093505050509250929050565b60006020828403121561536c57600080fd5b81356001600160401b038082111561538357600080fd5b90830190610160828603121561539857600080fd5b6153a06140f6565b6153a98361415e565b81526153b76020840161415e565b60208201526153c860408401614169565b60408201526153d960608401614197565b60608201526153ea60808401614197565b60808201526153fb60a0840161418c565b60a082015261540c60c0840161415e565b60c082015261541d60e08401614169565b60e082015261010061543081850161415e565b9082015261012061544284820161418c565b90820152610140838101358381111561545a57600080fd5b61546688828701614298565b918301919091525095945050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156154cc57603f198886030184526154ba85835161441b565b9450928501929085019060010161549e565b5092979650505050505050565b6000602082840312156154eb57600080fd5b813561390181614149565b60008060006060848603121561550b57600080fd5b61551484614169565b925061552260208501614197565b915060408401356155328161417d565b809150509250925092565b600081518084526020808501945080840160005b8381101561557057815160ff1687529582019590820190600101615551565b509495945050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b838110156155f257888303603f19018552815180518785526155c68886018261553d565b91890151858303868b01529190506155de818361553d565b9689019694505050908601906001016155a2565b509098975050505050505050565b634e487b7160e01b600052601160045260246000fd5b61ffff818116838216019080821115612b1557612b15615600565b6001600160a01b0393909316835263ffffffff91909116602083015261ffff16604082015260600190565b634e487b7160e01b600052603260045260246000fd5b80820180821115610e7f57610e7f615600565b805161227881614149565b6000602082840312156156a257600080fd5b815161390181614149565b9182526001600160a01b0316602082015260400190565b63ffffffff818116838216019080821115612b1557612b15615600565b60208082526014908201527319195859131a5b99481a185cc81c995858da195960621b604082015260600190565b81810381811115610e7f57610e7f615600565b600081518084526020808501945080840160005b8381101561557057815180516001600160a01b031688528381015165ffffffffffff908116858a0152604091820151169088015260609096019590820190600101615736565b600081518084526020808501945080840160005b8381101561557057815180516001600160a01b031688528381015115158489015260409081015160ff169088015260609096019590820190600101615790565b60006101606157e08484516144d4565b60208301516157f260208601826144d4565b50604083015161580a604086018263ffffffff169052565b506060830151615820606086018261ffff169052565b506080830151615836608086018261ffff169052565b5060a083015161584b60a086018260ff169052565b5060c083015161585e60c08601826144d4565b5060e083015161587660e086018263ffffffff169052565b506101008084015161588a828701826144d4565b50506101208381015160ff1690850152610140808401518186018390526158b38387018261441b565b9695505050505050565b6000815480845260208085019450836000528060002060005b83811015615570578154875295820195600191820191016158d6565b606081526000845163ffffffff8082511660608501528060208301511660808501528060408301511660a085015250606081015161593460c085018215159052565b50608081015160ff90811660e08581019190915260a0830151821661010086015260c0830151909116610120850152015161ffff1661014083015260208501516101c0610160840181905261598d610220850183615722565b915060408701516101808501526060870151605f19858403016101a08601526159b6838261577c565b92505060808701516159cf8286018263ffffffff169052565b505060a086015163ffffffff166101e084015260c086015115156102008401528281036020840152615a0181866157d0565b905082810360408401526158b381856158bd565b600082601f830112615a2657600080fd5b81516020615a366142b78361461f565b82815260059290921b84018101918181019086841115615a5557600080fd5b8286015b848110156143ec5780516001600160401b03811115615a785760008081fd5b8701603f81018913615a8a5760008081fd5b848101516040615a9c6142b783614271565b8281528b82848601011115615ab15760008081fd5b615ac0838983018487016143f7565b8652505050918301918301615a59565b600060208284031215615ae257600080fd5b81516001600160401b03811115615af857600080fd5b61117984828501615a15565b60ff8181168382160190811115610e7f57610e7f615600565b61010080825260029082015261060f60f31b6101208201526001600160a01b03978816602082015263ffffffff968716604082015261ffff958616606082015293909416608084015290851660a083015290921660c083015290911660e08201526101400190565b600060208284031215615b9757600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b600082615bc357615bc3615b9e565b500690565b8051801515811461227857600080fd5b600060208284031215615bea57600080fd5b61390182615bc8565b63ffffffff93909316835261ffff91909116602083015260ff16604082015260600190565b80516122788161417d565b600082601f830112615c3457600080fd5b81516020615c446142b78361461f565b82815260059290921b84018101918181019086841115615c6357600080fd5b8286015b848110156143ec5780518352918301918301615c67565b600082601f830112615c8f57600080fd5b81516020615c9f6142b78361461f565b82815260059290921b84018101918181019086841115615cbe57600080fd5b8286015b848110156143ec578051615cd581614149565b8352918301918301615cc2565b600082601f830112615cf357600080fd5b81516020615d036142b78361461f565b82815260059290921b84018101918181019086841115615d2257600080fd5b8286015b848110156143ec5780516001600160401b0380821115615d4557600080fd5b90880190601f196080838c0382011215615d5e57600080fd5b615d6661408f565b8784015183811115615d7757600080fd5b84016060818e0384011215615d8b57600080fd5b615d936140d4565b925088810151615da28161417d565b8352604081810151615db381614149565b848b0152606082015185811115615dc957600080fd5b615dd78f8c83860101615c23565b8286015250838352615dea818701615c18565b8a8401526060860151935084841115615e0257600080fd5b615e108e8b86890101615c7e565b90830152506080840151915082821115615e2957600080fd5b615e378c8984870101615c23565b60608201528652505050918301918301615d26565b60008060408385031215615e5f57600080fd5b615e6883615bc8565b915060208301516001600160401b0380821115615e8457600080fd5b9084019060a08287031215615e9857600080fd5b615ea061404b565b825182811115615eaf57600080fd5b615ebb88828601615ce2565b825250615eca60208401615c18565b6020820152615edb60408401615685565b6040820152606083015182811115615ef257600080fd5b615efe88828601615c7e565b606083015250608083015182811115615f1657600080fd5b615f2288828601615a15565b6080830152508093505050509250929050565b600082615f4457615f44615b9e565b500490565b8082028115828204841417610e7f57610e7f615600565b600060018201615f7257615f72615600565b5060010190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b634e487b7160e01b600052603160045260246000fd5b60ff8281168282160390811115610e7f57610e7f615600565b604081526000616009604083018561441b565b9050826020830152939250505056fe2d2d2d2d2d2d2d2d2d2d2d2d20746f6b656e48616e646c657220736574506172616d7320746f6b656e436f756e742d2d2d2d2d2d2d2d2d2d2d2d20746f6b656e48616e646c657220736574506172616d7320312d2d2d2d2d2d2d2d2d2d2d2d20746f6b656e48616e646c657220736574506172616d7320746f6b656e436f756e742073656c662e76616c75654c6973742e6c656e677468a2646970667358221220bcde8cc2bf4852c7ac34da62b27a7f6f333c98b2b45c8b25849a0eec77c9bfc664736f6c63430008110033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f65760003560e01c8063971f699911610092578063971f6999146101e0578063a903620c146101f3578063af84b51f14610205578063b4b70352146100fb578063c4d66de814610225578063d0d35b5514610238578063d7f8a18d1461025c578063dcbad90d14610287578063f2fe4fa5146102a057600080fd5b80631cc4f041146100fb5780631eda6e4f1461012457806334c76b25146101445780634b2dbcb8146101615780634b2e9b411461016157806354fd4d50146101815780635790c294146101925780636dabaf04146101a757806395edcb08146101c0575b600080fd5b61010f6101093660046141a9565b50600090565b60405190151581526020015b60405180910390f35b6101376101323660046142ee565b6102af565b60405161011b91906143a7565b6040805160208101909152600081525b60405161011b9190614447565b61017461016f36600461445a565b610349565b60405161011b91906144e1565b60005b60405190815260200161011b565b6101a56101a036600461452e565b610379565b005b61010f6101b536600461459e565b600095945050505050565b6101d36101ce366004614858565b610579565b60405161011b9190614a28565b6101846101ee366004614a89565b610e85565b6101a56102013660046151a7565b5050565b61021861021336600461535a565b610eb6565b60405161011b9190615477565b6101a56102333660046154d9565b611181565b6101546102463660046154f6565b6040805160208101909152600081529392505050565b61026f61026a366004614a89565b611210565b6040516001600160a01b03909116815260200161011b565b60005461026f906201000090046001600160a01b031681565b606060405161011b919061557b565b60408051602081019091526060815260006102d08a898989898e600061124f565b60008181526004602090815260408083208151815480850282018401845293810184815295965093949092849284919084018282801561032f57602002820191906000526020600020905b81548152602001906001019080831161031b575b5050509190925250919d9c50505050505050505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505098975050505050505050565b8051156105735760011960ff83160161044c576000338561039b866001615616565b6040516020016103ad93929190615631565b60408051601f198184030181529190528051602090910120905060006103d383826112be565b905061271081106104175760405162461bcd60e51b81526020600482015260096024820152683332b29032b93937b960b91b60448201526064015b60405180910390fd5b600091825260016020818152604084208054808401825581865291909420908101839055835491820190935590910155610573565b606860ff83161061057357600033858560405160200161046e93929190615631565b60408051601f198184030181529190528051602090910120905060006104958360016112be565b905060006104a384826112be565b60008481526001602081905260409091208054929350918491839181106104cc576104cc61565c565b9060005260206000200160008282546104e59190615672565b92505081905550612710816001815481106105025761050261565c565b906000526020600020015411156105535760405162461bcd60e51b81526020600482015260156024820152743832b931b2b73a30b3b2aa37ba30b61032b93937b960591b604482015260640161040e565b80546001810182556000918252602090912060809390931b909117910155505b50505050565b604080516080810182526000808252602082015260609181018290528181019190915230825260608301516000906105b09061131b565b905060008460600151602001516001600160a01b031663fe8c4aa36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061e9190615690565b60608601516101008101519061063390611327565b6106408860600151611346565b604080516001600160a01b03909516602086015263ffffffff9093169284019290925261ffff908116606084015216608082015260a00160405160208183030381529060405280519060200120905060006106b36106ae846000896060015161136b9092919063ffffffff16565b6113b8565b9050600060ff82166008146106f957606087015160e0015163ffffffff16156106e457866060015160e001516106ee565b866060015160c001515b63ffffffff1661070e565b606087015161070e906106ae9086600161136b565b9050600061073b338960600151602001518a6060015161010001518b60200151868d60000151600061124f565b60008381526003602052604090209091506107568985611405565b60ff84166001148061076b575060ff84166003145b156108b85761077b818a88611466565b88516040517f4d4b454f1762d5ca43a7b8f88366b30b52f65d817b9c48efdef94f8f84c53106916107ae918691906156ad565b60405180910390a160021960ff8516016108b35760008381526002602090815260408083208c516001600160a01b031684529091528120805460ff191660019081179091556004830180549192909161080e90849063ffffffff166156c4565b82546101009290920a63ffffffff81810219909316919092169190910217905550604080516060810182528a516001600160a01b0390811682526000602080840182815294840182815260018781018054918201815584529190922093519301805494519151939092166001600160d01b031990941693909317600160a01b65ffffffffffff94851602176001600160d01b0316600160d01b93909216929092021790555b610dd8565b60011960ff851601610b145760028101541561090b5760405162461bcd60e51b81526020600482015260126024820152711a5b9c1d5d081a185cc8199a5b9a5cda195960721b604482015260640161040e565b8054600160201b900463ffffffff164211156109395760405162461bcd60e51b815260040161040e906156e1565b60008381526002602090815260408083208c516001600160a01b0316845290915290205460ff16156109a05760405162461bcd60e51b815260206004820152601060248201526f18d85b1b195c881a185cc81a5b9c1d5d60821b604482015260640161040e565b60008381526002602090815260408083208c516001600160a01b031684529091528120805460ff19166001908117909155600483018054919290916109ec90849063ffffffff166156c4565b82546101009290920a63ffffffff81810219909316919092169190910217905550604080516060810182528a516001600160a01b0390811682526000602080840182815294840182815260018781018054808301825581865293909420955195909201805496519151959094166001600160d01b031990961695909517600160a01b65ffffffffffff96871602176001600160d01b0316600160d01b95909416949094029290921790558a5190547fc9cf1748030a3031db5c621e9b435f390e847f8e0e420fdb6505a5b67e64fecf928691610ac8919061570f565b604080516001600160a01b03909416845260208401929092529082015260600160405180910390a18054600482015463ffffffff9182169116036108b3576108b389838584600261155c565b60061960ff851601610b5b578054600160201b900463ffffffff16421115610b4e5760405162461bcd60e51b815260040161040e906156e1565b6108b3898385848861155c565b60071960ff851601610b95578054600160201b900463ffffffff16421115610b4e5760405162461bcd60e51b815260040161040e906156e1565b60041960ff851601610c4a57610bc983610bc26106ae8960018e6060015161136b9092919063ffffffff16565b8b51611af8565b6108b38982600301610bee6106ae8a60018f6060015161136b9092919063ffffffff16565b61ffff1681548110610c0257610c0261565c565b60009182526020909120015460608c0151600160a81b90910460ff1690610c2f906106ae908b600161136b565b8454869060ff600160701b8204169063ffffffff1689611be5565b60051960ff851601610dd8578054600160201b900463ffffffff164211610cae5760405162461bcd60e51b815260206004820152601860248201527719195859131a5b99481a185cc81b9bdd081c995858da195960421b604482015260640161040e565b600281015415610cf75760405162461bcd60e51b81526020600482015260146024820152731c985b9ada5b99c81a185cc8199a5b9a5cda195960621b604482015260640161040e565b60008381526002602090815260408083208c516001600160a01b0316845290915290205460ff16610d5d5760405162461bcd60e51b815260206004820152601060248201526f0c0c081a185cc81b9bdd081a5b9c1d5d60821b604482015260640161040e565b60008381526002602090815260408083208c516001600160a01b031684529091529020805460ff19169055610d92898361217a565b8851604080516001600160a01b039092168252602082018590527f9dc9089e81c7579358adc15f29ff7b4d18cac0169d94f7d1a388a2d7d9a05eaf910160405180910390a15b60ff8416600714610deb57606460208901525b60ff8416600414801590610e03575060ff8416600514155b8015610e13575060ff8416600614155b8015610e23575060ff8416600814155b15610e755760ff84166002148015610e3e5750600281015415155b8015610e535750600054600160b01b900460ff165b15610e6a576000805460ff60b01b19169055610e75565b610e75898386612187565b8796505050505050505b92915050565b60016020528160005260406000208181548110610ea157600080fd5b90600052602060002001600091509150505481565b60e081015163ffffffff1660009081526003602090815260408083208451828601516060878101519451909693959394610ef294909101615631565b60408051808303601f1901815282825280516020918201206101e084018352855463ffffffff80821660e08701908152600160201b83048216610100880152600160401b8304909116610120870152600160601b820460ff9081161515610140880152600160681b83048116610160880152600160701b83048116610180880152600160781b8304166101a0870152600160801b90910461ffff166101c0860152845260018601805484518185028101850190955280855291955086938386019390929060009084015b8282101561101857600084815260209081902060408051606081018252918501546001600160a01b038116835265ffffffffffff600160a01b8204811684860152600160d01b9091041690820152825260019092019101610fbc565b5050505081526020016002820154815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156110a857600084815260209081902060408051606081018252918501546001600160a01b038116835260ff600160a01b82048116151584860152600160a81b909104169082015282526001909201910161104f565b5050509082525060049182015463ffffffff808216602080850191909152600160201b8304909116604080850191909152600160401b90920460ff161515606090930192909252600085815260019092529081902090516312593de760e01b815273__$a830146f373201f25d1e4dbe214c913d5e$__936312593de7936111349391928a9291016158f2565b600060405180830381865af4158015611151573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111799190810190615ad0565b949350505050565b600061118d60016121f0565b905080156111a5576000805461ff0019166101001790555b6000805462010000600160b01b031916620100006001600160a01b038516021790558015610201576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60008281526003602081905260408220018054839081106112335761123361565c565b6000918252602090912001546001600160a01b03169392505050565b604080516001600160a01b039889166020808301919091529789168183015263ffffffff968716606082015294881660808601529290941660a084015290941660c082015261ffff90911660e08083019190915283518083039091018152610100909101909252815191012090565b6000806112d26112cd8561227d565b6122a3565b90506111796112fc828560ff16815181106112ef576112ef61565c565b60200260200101516122a3565b60028151811061130e5761130e61565c565b60200260200101516113b8565b6060610e7f82306123ac565b6000610e7f8260a001516010600060086113419190615672565b61245e565b6000610e7f8260a001516010600060086113609190615672565b611341906010615672565b611373613f09565b61139583611382846001615b04565b60ff16815181106112ef576112ef61565c565b6002815181106113a7576113a761565c565b602002602001015190509392505050565b8051600090158015906113cd57508151602110155b6113d657600080fd5b6000806113e28461247d565b8151919350915060208210156111795760208290036101000a9004949350505050565b600061141483606001516124c4565b90508060ff168260ff16146114615760405162461bcd60e51b81526020600482015260136024820152720c6dac840c4e4c2dcc6d040dad2e6dac2e8c6d606b1b604482015260640161040e565b505050565b606082015161147b906106ae9083600161136b565b835463ffffffff191663ffffffff91821617845560608301516114a8916106ae9190849060029061136b16565b835460ff91909116600160701b0260ff60701b1990911617835560608201516114d7906106ae9083600361136b565b835460ff91909116600160681b0260ff60681b199091161783556060820151611506906106ae9083600461136b565b835467ffffffff000000001916600160201b63ffffffff92831602178455606083015161153d916106ae9190849060059061136b16565b835460ff91909116600160781b0260ff60781b19909116179092555050565b8154600483015463ffffffff908116911614801561157c57506002820154155b6115c35760405162461bcd60e51b81526020600482015260186024820152771c985b991bdb481a185cc81899595b8818dbdb5c1d5d195960421b604482015260640161040e565b6000600160008760600151602001516001600160a01b0316631424e30c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561160f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116339190615690565b60608901516101008101519061164890611346565b60405160200161165a93929190615631565b60408051601f198184030181529181528151602092830120835290820192909252016000208354909150600160781b900460ff166118015760005460608701516020810151610100820151620100009093046001600160a01b03169263f41fdf58926116c590611327565b6116d28b60600151611346565b60208c015160608d015160c001518d516040516001600160e01b031960e08a901b1681526117099796959493929190600401615b1d565b6020604051808303816000875af1158015611728573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174c9190615b85565b600284018190558354600160681b900460ff169061176c90606490615bb4565b611777906001615672565b111561178c5761178784876124e9565b6117a2565b60048301805460ff60401b1916600160401b1790555b6000816000815481106117b7576117b761565c565b906000526020600020015411156117fc57825481546117fc918891889163ffffffff169085906000906117ec576117ec61565c565b9060005260206000200154612899565b611af0565b8254600160781b900460ff16600114801561181f575060ff82166007145b156119205760005460608701516020810151610100820151620100009093046001600160a01b03169263063738cb9261185790611327565b6118648b60600151611346565b60208c015160608d015160e0908101518e516040519289901b6001600160e01b03191683526001600160a01b03978816600484015263ffffffff968716602484015261ffff958616604484015293909416606482015290851660848201529290911660a48301529190911660c482015260e4016020604051808303816000875af11580156118f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191a9190615bd8565b50611af0565b8254600160781b900460ff16600114801561193e575060ff82166008145b15611af05760005460608701516020810151610100820151620100009093046001600160a01b03169263524562279261197690611327565b6119838b60600151611346565b8b602001518c6060015160e001518d600001516040518863ffffffff1660e01b81526004016119b89796959493929190615b1d565b6020604051808303816000875af11580156119d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fb9190615b85565b60028401819055600a10611a515760405162461bcd60e51b815260206004820152601c60248201527f72616e646f6d20626c6f636b20686173206e6f74207265616368656400000000604482015260640161040e565b82546002840154600160681b90910460ff1690611a7090606490615bb4565b611a7b906001615672565b1115611a9057611a8b84876124e9565b611aa6565b60048301805460ff60401b1916600160401b1790555b600081600081548110611abb57611abb61565c565b90600052602060002001541115611af05782548154611af0918891889163ffffffff169085906000906117ec576117ec61565c565b505050505050565b6000838152600360208190526040822001805461ffff8516908110611b1f57611b1f61565c565b600091825260209091200180549091506001600160a01b03838116911614611b815760405162461bcd60e51b815260206004820152601560248201527431b630b4b6b2b91034b9903737ba103bb4b73732b960591b604482015260640161040e565b8054600160a01b900460ff1615611bcf5760405162461bcd60e51b81526020600482015260126024820152711dda5b9b995c881a185cc818db185a5b595960721b604482015260640161040e565b805460ff60a01b1916600160a01b179055505050565b6000611bef6128b8565b9050611c076040518060200160405280606081525090565b611c12886068615b04565b60ff166040808401919091526001606080850191909152600584528a0151602090810151825163050938c360e21b815292516000936001600160a01b0390921692631424e30c92600480820193918290030181865afa158015611c79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9d9190615690565b6001600160a01b0316632c34025e8b606001516101000151611cc28d60600151611346565b86604001516040518463ffffffff1660e01b8152600401611ce593929190615bf3565b600060405180830381865afa158015611d02573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2a9190810190615e4c565b9150508060000151516001600160401b03811115611d4a57611d4a61400c565b604051908082528060200260200182016040528015611d73578160200160208202803683370190505b506101408401528051516001600160401b03811115611d9457611d9461400c565b604051908082528060200260200182016040528015611dbd578160200160208202803683370190505b5061016084015280515160ff1661012084015260608a01516020908101516040805163050938c360e21b8152905160009360019385936001600160a01b0390911692631424e30c926004808401939192918290030181865afa158015611e27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4b9190615690565b60608e015161010081015190611e6090611346565b604051602001611e7293929190615631565b604051602081830303815290604052805190602001208152602001908152602001600020905060005b8251518110156120ea576000611ed184600001518381518110611ec057611ec061565c565b6020026020010151600001516128ff565b8451805191925060039184908110611eeb57611eeb61565c565b6020026020010151600001516000015160ff1603611f71576000611f2f85600001518481518110611f1e57611f1e61565c565b602002602001015160000151612b1c565b905080600081518110611f4457611f4461565c565b60200260200101518761014001518481518110611f6357611f6361565c565b602002602001018181525050505b60001960ff8a1601611ffd5782611f898d6002615b04565b60ff1681548110611f9c57611f9c61565c565b90600052602060002001546001600160801b031681600081518110611fc357611fc361565c565b6020026020010151611fd59190615f35565b8661016001518381518110611fec57611fec61565c565b6020026020010181815250506120d7565b60ff89166120d757826120118d6002615b04565b60ff16815481106120245761202461565c565b90600052602060002001546001600160801b03166127106120459190615f49565b6080846120538f6002615b04565b60ff16815481106120665761206661565c565b9060005260206000200154901c8963ffffffff168360008151811061208d5761208d61565c565b602002602001015161209f9190615f49565b6120a99190615f49565b6120b39190615f35565b86610160015183815181106120ca576120ca61565c565b6020026020010181815250505b50806120e281615f60565b915050611e9b565b506120f58385612c8b565b600088815260046020908152604090912084518051869361211a928492910190613f23565b50508b51604080516001600160a01b0390921682526020820188905261ffff8c16908201527fa8c0837becaef86715415cfc0851260b161d2635cd6170ea311798b172a7026c915060600160405180910390a15050505050505050505050565b610201828260008061328a565b60006121916128b8565b90506121a96040518060200160405280606081525090565b60646040830152600160208301526121c18183612c8b565b60008481526004602090815260409091208251805184936121e6928492910190613f23565b5050505050505050565b60008054610100900460ff1615612237578160ff1660011480156122135750303b155b61222f5760405162461bcd60e51b815260040161040e90615f79565b506000919050565b60005460ff80841691161061225e5760405162461bcd60e51b815260040161040e90615f79565b506000805460ff191660ff92909216919091179055600190565b919050565b612285613f09565b50604080518082019091528151815260209182019181019190915290565b60606122ae826137d2565b6122b757600080fd5b60006122c28361380d565b90506000816001600160401b038111156122de576122de61400c565b60405190808252806020026020018201604052801561231757816020015b612304613f09565b8152602001906001900390816122fc5790505b50905060006123298560200151613892565b85602001516123389190615672565b90506000805b848110156123a15761234f83613914565b91506040518060400160405280838152602001848152508482815181106123785761237861565c565b602090810291909101015261238d8284615672565b92508061239981615f60565b91505061233e565b509195945050505050565b606060006123c16112cd85610160015161227d565b905060005b81518110156124535760006124086123e98484815181106112ef576112ef61565c565b6000815181106123fb576123fb61565c565b60200260200101516139b8565b9050846001600160a01b0316816001600160a01b031603612442576124388383815181106112ef576112ef61565c565b9350505050610e7f565b5061244c81615f60565b90506123c6565b506060949350505050565b91821c91600080612472600180861b61570f565b909416949350505050565b600080600061248f8460200151613892565b905060008185602001516124a39190615672565b905060008286600001516124b7919061570f565b9196919550909350505050565b6000610e7f8260a001516008600060086124de9190615672565b611360906010615672565b60008281526003602052604090206004810154600160401b900460ff16156125405760405162461bcd60e51b815260206004820152600a60248201526937379037b732903bb4b760b11b604482015260640161040e565b6002810154600081900361258f5760405162461bcd60e51b81526020600482015260166024820152751a5b9c1d5d081a185cc81b9bdd08199a5b9a5cda195960521b604482015260640161040e565b60008360600151602001516001600160a01b0316631424e30c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125fb9190615690565b60608501516101008101519061261090611346565b60405160200161262293929190615631565b60408051601f19818403018152918152815160209283012060008181526001909352912090915060025b81548110156128555760005b82828154811061266a5761266a61565c565b90600052602060002001546001600160801b03168110156128425760018601546000906126979087615bb4565b90508660030160405180606001604052808960010184815481106126bd576126bd61565c565b60009182526020808320909101546001600160a01b031683528201526040016126e760028761570f565b60ff9081169091528254600180820185556000948552602094859020845192018054958501516040909501516001600160a01b039093166001600160a81b031990961695909517600160a01b941515949094029390931760ff60a81b1916600160a81b919092160217909155878101805490916127639161570f565b815481106127735761277361565c565b906000526020600020018760010182815481106127925761279261565c565b600091825260209091208254910180546001600160a01b039092166001600160a01b031983168117825583546001600160d01b031990931617600160a01b9283900465ffffffffffff9081169093021780825592546001600160d01b03909316600160d01b938490049092169092021790556001870180548061281757612817615fc7565b600082815260208120820160001990810191909155019055508061283a81615f60565b915050612658565b508061284d81615f60565b91505061264c565b5084516040517f8f3155e4fe9fb4a120cf0d56a17e2fcac9d3a61f960760e13290d2c19e48134391612889918991906156ad565b60405180910390a1505050505050565b6000805460ff60b01b1916600160b01b1790556105738484838561328a565b6128c0613f6e565b6128c8613f6e565b6000808252604082018190526127106080830181905260a0830181905260c083019190915260e08201819052610100820152919050565b60408051600280825260608083018452926000929190602083019080368337505084519192505060ff1615806129395750825160ff166001145b156129bf5782604001516001815181106129555761295561565c565b6020026020010151816000815181106129705761297061565c565b60200260200101818152505082604001516002815181106129935761299361565c565b6020026020010151816001815181106129ae576129ae61565c565b602002602001018181525050610e7f565b825160ff1660021901612a215782604001516002815181106129e3576129e361565c565b6020026020010151816000815181106129fe576129fe61565c565b60200260200101818152505082604001516003815181106129935761299361565c565b825160ff1660011901610e7f576000612a39846139d2565b90508060ff16600203612b15576000612a5185613a57565b90506000612a5e86613aab565b604087015190915060ff8216612a75846002615616565b612a7f9190615616565b61ffff1681518110612a9357612a9361565c565b602002602001015184600081518110612aae57612aae61565c565b6020908102919091010152604086015160ff8216612acd846003615616565b612ad79190615616565b61ffff1681518110612aeb57612aeb61565c565b602002602001015184600181518110612b0657612b0661565c565b60200260200101818152505050505b5092915050565b60408051600280825260608083018452926000929190602083019080368337505084519192505060ff1660011901612be6576000612b5984613b15565b905060ff8116612be0578360400151600281518110612b7a57612b7a61565c565b602002602001015182600081518110612b9557612b9561565c565b6020026020010181815250508360400151600381518110612bb857612bb861565c565b602002602001015182600181518110612bd357612bd361565c565b6020026020010181815250505b50610e7f565b825160ff1660021901610e7f576000612bfe84613b15565b905060ff8116612b15578360400151600481518110612c1f57612c1f61565c565b602002602001015182600081518110612c3a57612c3a61565c565b6020026020010181815250508360400151600581518110612c5d57612c5d61565c565b602002602001015182600181518110612c7857612c7861565c565b6020026020010181815250505092915050565b60c081015160019015612ca65780612ca281615f60565b9150505b8160e0015161271014612cc15780612cbd81615f60565b9150505b81610100015161271014612cdd5780612cd981615f60565b9150505b61014082015151151580612cf657506101608201515115155b80612d0657506101a08201515115155b15612d78576000826101600151518361014001515111612d4b57826101a00151518361016001515111612d3f57826101a0015151612d53565b82610160015151612d53565b826101400151515b9050612d60816004615f49565b612d6a9083615672565b60ff90911661012084015290505b612da26040518060600160405280602e8152602001616019602e913983610120015160ff16613b48565b806001600160401b03811115612dba57612dba61400c565b604051908082528060200260200182016040528015612de3578160200160208202803683370190505b5083528151612df3908490613b8d565b612e01838360200151613be5565b612e0f838360600151613c26565b612e1d838360400151613c75565b612e2c83836101200151613cb9565b612e4d60405180606001604052806025815260200161604760259139613d4a565b60008060019050836080015162ffffff1661271014612e8257612e74858560800151613d90565b612e7f600183615616565b91505b8360a0015163ffffffff1661271014612eb157612ea3858560a00151613df7565b612eae600283615616565b91505b60c084015115612ef75760c0840151855182612ecc81615f60565b935081518110612ede57612ede61565c565b6020908102919091010152612ef4600483615616565b91505b8360e0015161271014612f405760e0840151855182612f1581615f60565b935081518110612f2757612f2761565c565b6020908102919091010152612f3d600883615616565b91505b83610100015161271014612f8b57610100840151855182612f6081615f60565b935081518110612f7257612f7261565c565b6020908102919091010152612f88601083615616565b91505b61012084015160ff16156132795760005b84610120015160ff1681101561324757600085610140015151118015612fc757508461014001515181105b1561301e578461014001518181518110612fe357612fe361565c565b602002602001015186600001518380612ffb90615f60565b94508151811061300d5761300d61565c565b60200260200101818152505061304c565b85516000908361302d81615f60565b94508151811061303f5761303f61565c565b6020026020010181815250505b60008561016001515111801561306757508461016001515181105b156130be5784610160015181815181106130835761308361565c565b60200260200101518660000151838061309b90615f60565b9450815181106130ad576130ad61565c565b6020026020010181815250506130ec565b8551600090836130cd81615f60565b9450815181106130df576130df61565c565b6020026020010181815250505b60008561018001515111801561310757508461018001515181105b156131615784610180015181815181106131235761312361565c565b602002602001015160ff168660000151838061313e90615f60565b9450815181106131505761315061565c565b60200260200101818152505061318e565b855181908361316f81615f60565b9450815181106131815761318161565c565b6020026020010181815250505b6000856101a00151511180156131a95750846101a001515181105b1561320957846101a0015181815181106131c5576131c561565c565b60200260200101516001600160a01b0316866000015183806131e690615f60565b9450815181106131f8576131f861565c565b602002602001018181525050613237565b85516000908361321881615f60565b94508151811061322a5761322a61565c565b6020026020010181815250505b61324081615f60565b9050612f9c565b50613253602083615616565b915061327960405180608001604052806044815260200161606c60449139865151613b48565b6132838583613e6a565b5050505050565b60006132946128b8565b90506132ac6040518060200160405280606081525090565b600160608301819052602083015283156132d05760676040830152600282526132dc565b60656040830152600682525b6000808760600151602001516001600160a01b0316631424e30c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613325573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133499190615690565b6001600160a01b0316632c34025e8960600151610100015161336e8b60600151611346565b87604001516040518463ffffffff1660e01b815260040161339193929190615bf3565b600060405180830381865afa1580156133ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526133d69190810190615e4c565b915091508161341d5760405162461bcd60e51b815260206004820152601360248201527219dc9bdd5c14db1bdd081b9bdd08199bdd5b99606a1b604482015260640161040e565b8051516001600160401b038111156134375761343761400c565b604051908082528060200260200182016040528015613460578160200160208202803683370190505b506101408501528051516001600160401b038111156134815761348161400c565b6040519080825280602002602001820160405280156134aa578160200160208202803683370190505b5061016085015280515160ff1661012085015260608801516020908101516040805163050938c360e21b8152905160009360019385936001600160a01b0390911692631424e30c926004808401939192918290030181865afa158015613514573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135389190615690565b60608c01516101008101519061354d90611346565b60405160200161355f93929190615631565b60405160208183030381529060405280519060200120815260200190815260200160002090506000805b82548110156135d25760808382815481106135a6576135a661565c565b9060005260206000200154901c826135be9190615672565b9150806135ca81615f60565b915050613589565b5060005b8351518110156137935760006135fb85600001518381518110611ec057611ec061565c565b85518051919250600391849081106136155761361561565c565b6020026020010151600001516000015160ff160361368a57600061364886600001518481518110611f1e57611f1e61565c565b90508060008151811061365d5761365d61565c565b6020026020010151896101400151848151811061367c5761367c61565c565b602002602001018181525050505b89156137415761369b600283615bb4565b600003613708576127108a8a836000815181106136ba576136ba61565c565b60200260200101516136cc9190615f49565b6136d69190615f49565b6136e09190615f35565b88610160015183815181106136f7576136f761565c565b602002602001018181525050613780565b6127108a613717856064615f49565b6137239061271061570f565b61372d919061570f565b8a836000815181106136ba576136ba61565c565b806000815181106137545761375461565c565b602002602001015188610160015183815181106137735761377361565c565b6020026020010181815250505b508061378b81615f60565b9150506135d6565b5061379e8587612c8b565b60008981526004602090815260409091208651805188936137c3928492910190613f23565b50505050505050505050505050565b805160009081036137e557506000919050565b6020820151805160001a9060c0821015613803575060009392505050565b5060019392505050565b8051600090810361382057506000919050565b6000806138308460200151613892565b846020015161383f9190615672565b90506000846000015185602001516138579190615672565b90505b808210156138895761386b82613914565b6138759083615672565b91508261388181615f60565b93505061385a565b50909392505050565b8051600090811a60808110156138ab5750600092915050565b60b88110806138c6575060c081108015906138c6575060f881105b156138d45750600192915050565b60c0811015613908576138e9600160b8615fdd565b6138f69060ff168261570f565b613901906001615672565b9392505050565b6138e9600160f8615fdd565b80516000908190811a608081101561392f5760019150612b15565b60b88110156139555761394360808261570f565b61394e906001615672565b9150612b15565b60c08110156139825760b78103600185019450806020036101000a85510460018201810193505050612b15565b60f88110156139965761394360c08261570f565b60019390930151602084900360f7016101000a900490920160f5190192915050565b80516000906015146139c957600080fd5b610e7f826113b8565b6000600260ff16826000015160ff1603613a4f57610e7f8260400151600081518110613a0057613a0061565c565b6020026020010151600260ff1660006004613a1b9190615b04565b613a26906004615b04565b613a31906010615b04565b613a3c906002615b04565b613a47906004615b04565b60ff1661245e565b506002919050565b805160009060ff1660021480613a715750815160ff166003145b1561222f57610e7f8260400151600081518110613a9057613a9061565c565b6020026020010151601060ff1660006004613a3c9190615b04565b805160009060ff1660021480613ac55750815160ff166003145b1561222f57610e7f8260400151600081518110613ae457613ae461565c565b6020026020010151600260ff1660006004613aff9190615b04565b613b0a906004615b04565b613a47906010615b04565b6000610e7f8260400151600081518110613b3157613b3161565c565b6020026020010151600460ff16600060ff1661245e565b6102018282604051602401613b5e929190615ff6565b60408051601f198184030181529190526020810180516001600160e01b0316632d839cb360e21b179052613eba565b613bc28260000151600081518110613ba757613ba761565c565b60200260200101518260ff16600860ff16600060ff16613ec3565b82518051600090613bd557613bd561565c565b6020026020010181815250505050565b613bc28260000151600081518110613bff57613bff61565c565b60200260200101518260ff16600460ff1660006008613c1e9190615b04565b60ff16613ec3565b613bc28260000151600081518110613c4057613c4061565c565b60200260200101518260ff16600460ff1660006008613c5f9190615b04565b613c6a906004615b04565b613c1e906008615b04565b613bc28260000151600081518110613c8f57613c8f61565c565b60200260200101518260ff16600860ff1660006008613cae9190615b04565b613c1e906004615b04565b613bc28260000151600081518110613cd357613cd361565c565b60200260200101518260ff16600860ff1660006008613cf29190615b04565b613cfd906004615b04565b613d08906008615b04565b613d13906004615b04565b613d1e906010615b04565b613d29906018615b04565b613d34906020615b04565b613d3f906020615b04565b613c1e906020615b04565b613d8d81604051602401613d5e9190614447565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b179052613eba565b50565b613bc28260000151600081518110613daa57613daa61565c565b60200260200101518262ffffff16601860ff1660006008613dcb9190615b04565b613dd6906004615b04565b613de1906008615b04565b613dec906004615b04565b613c1e906010615b04565b613bc28260000151600081518110613e1157613e1161565c565b60200260200101518263ffffffff16602060ff1660006008613e339190615b04565b613e3e906004615b04565b613e49906008615b04565b613e54906004615b04565b613e5f906010615b04565b613c1e906018615b04565b613bc28260000151600081518110613e8457613e8461565c565b60200260200101518261ffff16601060ff1660006008613ea49190615b04565b613eaf906004615b04565b613cae906008615b04565b613d8d81613ee8565b600083821b8183613ed7600180881b61570f565b901b19969096161795945050505050565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b604051806040016040528060008152602001600081525090565b828054828255906000526020600020908101928215613f5e579160200282015b82811115613f5e578251825591602001919060010190613f43565b50613f6a929150613ff7565b5090565b604051806101c00160405280600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600062ffffff168152602001600063ffffffff168152602001600081526020016000815260200160008152602001600060ff168152602001606081526020016060815260200160608152602001606081525090565b5b80821115613f6a5760008155600101613ff8565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b03811182821017156140455761404561400c565b60405290565b60405160a081016001600160401b03811182821017156140455761404561400c565b604080519081016001600160401b03811182821017156140455761404561400c565b604051608081016001600160401b03811182821017156140455761404561400c565b60405161018081016001600160401b03811182821017156140455761404561400c565b604051606081016001600160401b03811182821017156140455761404561400c565b60405161016081016001600160401b03811182821017156140455761404561400c565b604051601f8201601f191681016001600160401b03811182821017156141415761414161400c565b604052919050565b6001600160a01b0381168114613d8d57600080fd5b803561227881614149565b803563ffffffff8116811461227857600080fd5b60ff81168114613d8d57600080fd5b80356122788161417d565b803561ffff8116811461227857600080fd5b600061014082840312156141bc57600080fd5b6141c4614022565b6141cd8361415e565b81526141db6020840161415e565b60208201526141ec6040840161415e565b60408201526141fd60608401614169565b606082015261420e60808401614169565b608082015261421f60a0840161415e565b60a082015261423060c0840161418c565b60c082015261424160e08401614197565b60e082015261010061425481850161418c565b9082015261012061426684820161418c565b908201529392505050565b60006001600160401b0382111561428a5761428a61400c565b50601f01601f191660200190565b600082601f8301126142a957600080fd5b81356142bc6142b782614271565b614119565b8181528460208386010111156142d157600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080610100898b03121561430b57600080fd5b883561431681614149565b9750602089013561432681614149565b9650604089013561433681614149565b955061434460608a01614169565b9450608089013561435481614149565b935061436260a08a01614169565b925060c08901356001600160401b0381111561437d57600080fd5b6143898b828c01614298565b92505061439860e08a01614197565b90509295985092959890939650565b6020808252825182820182905280516040840181905260009291820190839060608601905b808310156143ec57835182529284019260019290920191908401906143cc565b509695505050505050565b60005b838110156144125781810151838201526020016143fa565b50506000910152565b600081518084526144338160208601602086016143f7565b601f01601f19169290920160200192915050565b602081526000613901602083018461441b565b60008060008060008060c0878903121561447357600080fd5b863561447e81614149565b9550602087013561448e81614149565b945061449c60408801614169565b935060608701356144ac81614149565b92506144ba60808801614169565b91506144c860a08801614197565b90509295509295509295565b6001600160a01b03169052565b6020808252825182820181905260009190848201906040850190845b818110156145225783516001600160a01b0316835292840192918401916001016144fd565b50909695505050505050565b6000806000806080858703121561454457600080fd5b61454d85614169565b935061455b60208601614197565b9250604085013561456b8161417d565b915060608501356001600160401b0381111561458657600080fd5b61459287828801614298565b91505092959194509250565b600080600080600060a086880312156145b657600080fd5b6145bf86614169565b94506145cd60208701614197565b93506145db60408701614197565b925060608601356145eb8161417d565b915060808601356001600160401b0381111561460657600080fd5b61461288828901614298565b9150509295509295909350565b60006001600160401b038211156146385761463861400c565b5060051b60200190565b600082601f83011261465357600080fd5b813560206146636142b78361461f565b82815260059290921b8401810191818101908684111561468257600080fd5b8286015b848110156143ec5780356001600160401b03808211156146a557600080fd5b9088019060a0828b03601f190112156146bd57600080fd5b6146c561404b565b868301356146d28161417d565b81526040838101356146e381614149565b828901526060848101358284015260808501359083015260a08401358381111561470d5760008081fd5b8085019450508b603f85011261472557600092508283fd5b8784013592506147376142b78461461f565b83815260069390931b8401810192888101908d8511156147575760008081fd5b948201945b848610156147ae5782868f0312156147745760008081fd5b61477c61406d565b61478587614169565b81528a8701358060040b811461479b5760008081fd5b818c01528252948201949089019061475c565b6080840152505085525050918301918301614686565b6000608082840312156147d657600080fd5b6147de61408f565b905081356147eb81614149565b815260208201356147fb8161417d565b602082015260408201356001600160401b038082111561481a57600080fd5b61482685838601614298565b6040840152606084013591508082111561483f57600080fd5b5061484c84828501614298565b60608301525092915050565b6000806040838503121561486b57600080fd5b82356001600160401b038082111561488257600080fd5b9084019060a0828703121561489657600080fd5b61489e61404b565b82356148a981614149565b815260208301356148b981614149565b602082015260408301356148cc81614149565b60408201526060830135828111156148e357600080fd5b830161018081890312156148f657600080fd5b6148fe6140b1565b6149078261415e565b81526149156020830161415e565b60208201526149266040830161415e565b60408201526149376060830161415e565b60608201526080820135608082015260a082013560a082015261495c60c08301614169565b60c082015261496d60e08301614169565b60e0820152610100614980818401614169565b9082015261012061499283820161418c565b9082015261014082810135858111156149aa57600080fd5b6149b68b828601614642565b82840152505061016080830135858111156149d057600080fd5b6149dc8b828601614298565b82840152505080606084015250506149f66080840161418c565b608082015293506020850135915080821115614a1157600080fd5b50614a1e858286016147c4565b9150509250929050565b6020815260018060a01b03825116602082015260ff60208301511660408201526000604083015160806060840152614a6360a084018261441b565b90506060840151601f19848303016080850152614a80828261441b565b95945050505050565b60008060408385031215614a9c57600080fd5b50508035926020909101359150565b600082601f830112614abc57600080fd5b81356020614acc6142b78361461f565b82815260059290921b84018101918181019086841115614aeb57600080fd5b8286015b848110156143ec5780358352918301918301614aef565b600082601f830112614b1757600080fd5b81356020614b276142b78361461f565b82815260059290921b84018101918181019086841115614b4657600080fd5b8286015b848110156143ec578035614b5d81614149565b8352918301918301614b4a565b600082601f830112614b7b57600080fd5b81356020614b8b6142b78361461f565b82815260059290921b84018101918181019086841115614baa57600080fd5b8286015b848110156143ec5780356001600160401b0380821115614bcd57600080fd5b90880190601f196080838c0382011215614be657600080fd5b614bee61408f565b8784013583811115614bff57600080fd5b84016060818e0384011215614c1357600080fd5b614c1b6140d4565b925088810135614c2a8161417d565b8352604081810135614c3b81614149565b848b0152606082013585811115614c5157600080fd5b614c5f8f8c83860101614aab565b8286015250838352614c7281870161418c565b8a8401526060860135935084841115614c8a57600080fd5b614c988e8b86890101614b06565b90830152506080840135915082821115614cb157600080fd5b614cbf8c8984870101614aab565b60608201528652505050918301918301614bae565b600082601f830112614ce557600080fd5b81356020614cf56142b78361461f565b82815260059290921b84018101918181019086841115614d1457600080fd5b8286015b848110156143ec5780356001600160401b03811115614d375760008081fd5b614d458986838b0101614298565b845250918301918301614d18565b600082601f830112614d6457600080fd5b81356020614d746142b78361461f565b82815260059290921b84018101918181019086841115614d9357600080fd5b8286015b848110156143ec5780356001600160401b0380821115614db75760008081fd5b9088019060a0828b03601f1901811315614dd15760008081fd5b614dd961404b565b8784013583811115614deb5760008081fd5b614df98d8a83880101614b6a565b8252506040614e0981860161418c565b898301526060614e1a81870161415e565b82840152608091508186013585811115614e345760008081fd5b614e428f8c838a0101614b06565b82850152505082850135925083831115614e5c5760008081fd5b614e6a8d8a85880101614cd4565b908201528652505050918301918301614d97565b600082601f830112614e8f57600080fd5b81356020614e9f6142b78361461f565b82815260059290921b84018101918181019086841115614ebe57600080fd5b8286015b848110156143ec578035614ed58161417d565b8352918301918301614ec2565b80356001600160401b038116811461227857600080fd5b600082601f830112614f0a57600080fd5b81356020614f1a6142b78361461f565b82815260059290921b84018101918181019086841115614f3957600080fd5b8286015b848110156143ec5780356001600160401b0380821115614f5d5760008081fd5b90880190610160828b03601f1901811315614f785760008081fd5b614f806140f6565b614f8b888501614197565b81526040614f9a818601614197565b898301526060614fab81870161418c565b8284015260809150614fbe828701614169565b9083015260a0614fcf86820161418c565b8284015260c09150614fe2828701614169565b9083015260e0614ff3868201614169565b828401526101009150615007828701614ee2565b9083015261012085810135858111156150205760008081fd5b61502e8f8c838a0101614b06565b83850152506101409150818601358581111561504a5760008081fd5b6150588f8c838a0101614cd4565b82850152505061506983860161415e565b908201528652505050918301918301614f3d565b600082601f83011261508e57600080fd5b8135602061509e6142b78361461f565b82815260059290921b840181019181810190868411156150bd57600080fd5b8286015b848110156143ec5780356001600160401b03808211156150e15760008081fd5b9088019060a0828b03601f19018113156150fb5760008081fd5b61510361404b565b61510e888501614169565b8152604080850135848111156151245760008081fd5b6151328e8b83890101614298565b8a840152506060808601358581111561514b5760008081fd5b6151598f8c838a0101614298565b83850152506080915081860135858111156151745760008081fd5b6151828f8c838a0101614298565b82850152505061519383860161418c565b9082015286525050509183019183016150c1565b600080604083850312156151ba57600080fd5b6151c383614169565b915060208301356001600160401b03808211156151df57600080fd5b9084019061016082870312156151f457600080fd5b6151fc6140f6565b82358281111561520b57600080fd5b61521788828601614d53565b82525060208301358281111561522c57600080fd5b61523888828601614e7e565b60208301525060408301358281111561525057600080fd5b61525c88828601614ef9565b60408301525060608301358281111561527457600080fd5b6152808882860161507d565b60608301525060808301358281111561529857600080fd5b6152a488828601614e7e565b60808301525060a0830135828111156152bc57600080fd5b6152c888828601614b06565b60a08301525060c0830135828111156152e057600080fd5b6152ec88828601614b06565b60c0830152506152fe60e08401614169565b60e0820152610100615311818501614169565b9082015261012061532384820161418c565b90820152610140838101358381111561533b57600080fd5b61534789828701614298565b8284015250508093505050509250929050565b60006020828403121561536c57600080fd5b81356001600160401b038082111561538357600080fd5b90830190610160828603121561539857600080fd5b6153a06140f6565b6153a98361415e565b81526153b76020840161415e565b60208201526153c860408401614169565b60408201526153d960608401614197565b60608201526153ea60808401614197565b60808201526153fb60a0840161418c565b60a082015261540c60c0840161415e565b60c082015261541d60e08401614169565b60e082015261010061543081850161415e565b9082015261012061544284820161418c565b90820152610140838101358381111561545a57600080fd5b61546688828701614298565b918301919091525095945050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156154cc57603f198886030184526154ba85835161441b565b9450928501929085019060010161549e565b5092979650505050505050565b6000602082840312156154eb57600080fd5b813561390181614149565b60008060006060848603121561550b57600080fd5b61551484614169565b925061552260208501614197565b915060408401356155328161417d565b809150509250925092565b600081518084526020808501945080840160005b8381101561557057815160ff1687529582019590820190600101615551565b509495945050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b838110156155f257888303603f19018552815180518785526155c68886018261553d565b91890151858303868b01529190506155de818361553d565b9689019694505050908601906001016155a2565b509098975050505050505050565b634e487b7160e01b600052601160045260246000fd5b61ffff818116838216019080821115612b1557612b15615600565b6001600160a01b0393909316835263ffffffff91909116602083015261ffff16604082015260600190565b634e487b7160e01b600052603260045260246000fd5b80820180821115610e7f57610e7f615600565b805161227881614149565b6000602082840312156156a257600080fd5b815161390181614149565b9182526001600160a01b0316602082015260400190565b63ffffffff818116838216019080821115612b1557612b15615600565b60208082526014908201527319195859131a5b99481a185cc81c995858da195960621b604082015260600190565b81810381811115610e7f57610e7f615600565b600081518084526020808501945080840160005b8381101561557057815180516001600160a01b031688528381015165ffffffffffff908116858a0152604091820151169088015260609096019590820190600101615736565b600081518084526020808501945080840160005b8381101561557057815180516001600160a01b031688528381015115158489015260409081015160ff169088015260609096019590820190600101615790565b60006101606157e08484516144d4565b60208301516157f260208601826144d4565b50604083015161580a604086018263ffffffff169052565b506060830151615820606086018261ffff169052565b506080830151615836608086018261ffff169052565b5060a083015161584b60a086018260ff169052565b5060c083015161585e60c08601826144d4565b5060e083015161587660e086018263ffffffff169052565b506101008084015161588a828701826144d4565b50506101208381015160ff1690850152610140808401518186018390526158b38387018261441b565b9695505050505050565b6000815480845260208085019450836000528060002060005b83811015615570578154875295820195600191820191016158d6565b606081526000845163ffffffff8082511660608501528060208301511660808501528060408301511660a085015250606081015161593460c085018215159052565b50608081015160ff90811660e08581019190915260a0830151821661010086015260c0830151909116610120850152015161ffff1661014083015260208501516101c0610160840181905261598d610220850183615722565b915060408701516101808501526060870151605f19858403016101a08601526159b6838261577c565b92505060808701516159cf8286018263ffffffff169052565b505060a086015163ffffffff166101e084015260c086015115156102008401528281036020840152615a0181866157d0565b905082810360408401526158b381856158bd565b600082601f830112615a2657600080fd5b81516020615a366142b78361461f565b82815260059290921b84018101918181019086841115615a5557600080fd5b8286015b848110156143ec5780516001600160401b03811115615a785760008081fd5b8701603f81018913615a8a5760008081fd5b848101516040615a9c6142b783614271565b8281528b82848601011115615ab15760008081fd5b615ac0838983018487016143f7565b8652505050918301918301615a59565b600060208284031215615ae257600080fd5b81516001600160401b03811115615af857600080fd5b61117984828501615a15565b60ff8181168382160190811115610e7f57610e7f615600565b61010080825260029082015261060f60f31b6101208201526001600160a01b03978816602082015263ffffffff968716604082015261ffff958616606082015293909416608084015290851660a083015290921660c083015290911660e08201526101400190565b600060208284031215615b9757600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b600082615bc357615bc3615b9e565b500690565b8051801515811461227857600080fd5b600060208284031215615bea57600080fd5b61390182615bc8565b63ffffffff93909316835261ffff91909116602083015260ff16604082015260600190565b80516122788161417d565b600082601f830112615c3457600080fd5b81516020615c446142b78361461f565b82815260059290921b84018101918181019086841115615c6357600080fd5b8286015b848110156143ec5780518352918301918301615c67565b600082601f830112615c8f57600080fd5b81516020615c9f6142b78361461f565b82815260059290921b84018101918181019086841115615cbe57600080fd5b8286015b848110156143ec578051615cd581614149565b8352918301918301615cc2565b600082601f830112615cf357600080fd5b81516020615d036142b78361461f565b82815260059290921b84018101918181019086841115615d2257600080fd5b8286015b848110156143ec5780516001600160401b0380821115615d4557600080fd5b90880190601f196080838c0382011215615d5e57600080fd5b615d6661408f565b8784015183811115615d7757600080fd5b84016060818e0384011215615d8b57600080fd5b615d936140d4565b925088810151615da28161417d565b8352604081810151615db381614149565b848b0152606082015185811115615dc957600080fd5b615dd78f8c83860101615c23565b8286015250838352615dea818701615c18565b8a8401526060860151935084841115615e0257600080fd5b615e108e8b86890101615c7e565b90830152506080840151915082821115615e2957600080fd5b615e378c8984870101615c23565b60608201528652505050918301918301615d26565b60008060408385031215615e5f57600080fd5b615e6883615bc8565b915060208301516001600160401b0380821115615e8457600080fd5b9084019060a08287031215615e9857600080fd5b615ea061404b565b825182811115615eaf57600080fd5b615ebb88828601615ce2565b825250615eca60208401615c18565b6020820152615edb60408401615685565b6040820152606083015182811115615ef257600080fd5b615efe88828601615c7e565b606083015250608083015182811115615f1657600080fd5b615f2288828601615a15565b6080830152508093505050509250929050565b600082615f4457615f44615b9e565b500490565b8082028115828204841417610e7f57610e7f615600565b600060018201615f7257615f72615600565b5060010190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b634e487b7160e01b600052603160045260246000fd5b60ff8281168282160390811115610e7f57610e7f615600565b604081526000616009604083018561441b565b9050826020830152939250505056fe2d2d2d2d2d2d2d2d2d2d2d2d20746f6b656e48616e646c657220736574506172616d7320746f6b656e436f756e742d2d2d2d2d2d2d2d2d2d2d2d20746f6b656e48616e646c657220736574506172616d7320312d2d2d2d2d2d2d2d2d2d2d2d20746f6b656e48616e646c657220736574506172616d7320746f6b656e436f756e742073656c662e76616c75654c6973742e6c656e677468a2646970667358221220bcde8cc2bf4852c7ac34da62b27a7f6f333c98b2b45c8b25849a0eec77c9bfc664736f6c63430008110033",
  "linkReferences": {
    "contracts/V3/handler/RankingHandlerLib.sol": {
      "RankingHandlerLib": [
        {
          "length": 20,
          "start": 4396
        }
      ]
    }
  },
  "deployedLinkReferences": {
    "contracts/V3/handler/RankingHandlerLib.sol": {
      "RankingHandlerLib": [
        {
          "length": 20,
          "start": 4363
        }
      ]
    }
  }
}
