{
  "_format": "hh-sol-artifact-1",
  "contractName": "WitnetRequestBoardTrustableDefault",
  "sourceName": "witnet-solidity-bridge/contracts/impls/trustable/WitnetRequestBoardTrustableDefault.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "_upgradable",
          "type": "bool"
        },
        {
          "internalType": "bytes32",
          "name": "_versionTag",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "_reportResultGasLimit",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "queryId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "reason",
          "type": "string"
        }
      ],
      "name": "BatchReportError",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "queryId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "from",
          "type": "address"
        }
      ],
      "name": "DeletedQuery",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "queryId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "from",
          "type": "address"
        }
      ],
      "name": "PostedRequest",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "queryId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "from",
          "type": "address"
        }
      ],
      "name": "PostedResult",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Received",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "reporters",
          "type": "address[]"
        }
      ],
      "name": "ReportersSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "reporters",
          "type": "address[]"
        }
      ],
      "name": "ReportersUnset",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "baseAddr",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "baseCodehash",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "versionTag",
          "type": "bytes32"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "stateMutability": "payable",
      "type": "fallback"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "success",
              "type": "bool"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    },
                    {
                      "internalType": "uint32",
                      "name": "cursor",
                      "type": "uint32"
                    }
                  ],
                  "internalType": "struct Witnet.Buffer",
                  "name": "buffer",
                  "type": "tuple"
                },
                {
                  "internalType": "uint8",
                  "name": "initialByte",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "majorType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "additionalInformation",
                  "type": "uint8"
                },
                {
                  "internalType": "uint64",
                  "name": "len",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "tag",
                  "type": "uint64"
                }
              ],
              "internalType": "struct Witnet.CBOR",
              "name": "value",
              "type": "tuple"
            }
          ],
          "internalType": "struct Witnet.Result",
          "name": "_result",
          "type": "tuple"
        }
      ],
      "name": "asBool",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "success",
              "type": "bool"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    },
                    {
                      "internalType": "uint32",
                      "name": "cursor",
                      "type": "uint32"
                    }
                  ],
                  "internalType": "struct Witnet.Buffer",
                  "name": "buffer",
                  "type": "tuple"
                },
                {
                  "internalType": "uint8",
                  "name": "initialByte",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "majorType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "additionalInformation",
                  "type": "uint8"
                },
                {
                  "internalType": "uint64",
                  "name": "len",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "tag",
                  "type": "uint64"
                }
              ],
              "internalType": "struct Witnet.CBOR",
              "name": "value",
              "type": "tuple"
            }
          ],
          "internalType": "struct Witnet.Result",
          "name": "_result",
          "type": "tuple"
        }
      ],
      "name": "asBytes",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "success",
              "type": "bool"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    },
                    {
                      "internalType": "uint32",
                      "name": "cursor",
                      "type": "uint32"
                    }
                  ],
                  "internalType": "struct Witnet.Buffer",
                  "name": "buffer",
                  "type": "tuple"
                },
                {
                  "internalType": "uint8",
                  "name": "initialByte",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "majorType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "additionalInformation",
                  "type": "uint8"
                },
                {
                  "internalType": "uint64",
                  "name": "len",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "tag",
                  "type": "uint64"
                }
              ],
              "internalType": "struct Witnet.CBOR",
              "name": "value",
              "type": "tuple"
            }
          ],
          "internalType": "struct Witnet.Result",
          "name": "_result",
          "type": "tuple"
        }
      ],
      "name": "asBytes32",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "success",
              "type": "bool"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    },
                    {
                      "internalType": "uint32",
                      "name": "cursor",
                      "type": "uint32"
                    }
                  ],
                  "internalType": "struct Witnet.Buffer",
                  "name": "buffer",
                  "type": "tuple"
                },
                {
                  "internalType": "uint8",
                  "name": "initialByte",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "majorType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "additionalInformation",
                  "type": "uint8"
                },
                {
                  "internalType": "uint64",
                  "name": "len",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "tag",
                  "type": "uint64"
                }
              ],
              "internalType": "struct Witnet.CBOR",
              "name": "value",
              "type": "tuple"
            }
          ],
          "internalType": "struct Witnet.Result",
          "name": "_result",
          "type": "tuple"
        }
      ],
      "name": "asErrorCode",
      "outputs": [
        {
          "internalType": "enum Witnet.ErrorCodes",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "success",
              "type": "bool"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    },
                    {
                      "internalType": "uint32",
                      "name": "cursor",
                      "type": "uint32"
                    }
                  ],
                  "internalType": "struct Witnet.Buffer",
                  "name": "buffer",
                  "type": "tuple"
                },
                {
                  "internalType": "uint8",
                  "name": "initialByte",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "majorType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "additionalInformation",
                  "type": "uint8"
                },
                {
                  "internalType": "uint64",
                  "name": "len",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "tag",
                  "type": "uint64"
                }
              ],
              "internalType": "struct Witnet.CBOR",
              "name": "value",
              "type": "tuple"
            }
          ],
          "internalType": "struct Witnet.Result",
          "name": "_result",
          "type": "tuple"
        }
      ],
      "name": "asErrorMessage",
      "outputs": [
        {
          "internalType": "enum Witnet.ErrorCodes",
          "name": "",
          "type": "uint8"
        },
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "success",
              "type": "bool"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    },
                    {
                      "internalType": "uint32",
                      "name": "cursor",
                      "type": "uint32"
                    }
                  ],
                  "internalType": "struct Witnet.Buffer",
                  "name": "buffer",
                  "type": "tuple"
                },
                {
                  "internalType": "uint8",
                  "name": "initialByte",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "majorType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "additionalInformation",
                  "type": "uint8"
                },
                {
                  "internalType": "uint64",
                  "name": "len",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "tag",
                  "type": "uint64"
                }
              ],
              "internalType": "struct Witnet.CBOR",
              "name": "value",
              "type": "tuple"
            }
          ],
          "internalType": "struct Witnet.Result",
          "name": "_result",
          "type": "tuple"
        }
      ],
      "name": "asFixed16",
      "outputs": [
        {
          "internalType": "int32",
          "name": "",
          "type": "int32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "success",
              "type": "bool"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    },
                    {
                      "internalType": "uint32",
                      "name": "cursor",
                      "type": "uint32"
                    }
                  ],
                  "internalType": "struct Witnet.Buffer",
                  "name": "buffer",
                  "type": "tuple"
                },
                {
                  "internalType": "uint8",
                  "name": "initialByte",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "majorType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "additionalInformation",
                  "type": "uint8"
                },
                {
                  "internalType": "uint64",
                  "name": "len",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "tag",
                  "type": "uint64"
                }
              ],
              "internalType": "struct Witnet.CBOR",
              "name": "value",
              "type": "tuple"
            }
          ],
          "internalType": "struct Witnet.Result",
          "name": "_result",
          "type": "tuple"
        }
      ],
      "name": "asFixed16Array",
      "outputs": [
        {
          "internalType": "int32[]",
          "name": "",
          "type": "int32[]"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "success",
              "type": "bool"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    },
                    {
                      "internalType": "uint32",
                      "name": "cursor",
                      "type": "uint32"
                    }
                  ],
                  "internalType": "struct Witnet.Buffer",
                  "name": "buffer",
                  "type": "tuple"
                },
                {
                  "internalType": "uint8",
                  "name": "initialByte",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "majorType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "additionalInformation",
                  "type": "uint8"
                },
                {
                  "internalType": "uint64",
                  "name": "len",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "tag",
                  "type": "uint64"
                }
              ],
              "internalType": "struct Witnet.CBOR",
              "name": "value",
              "type": "tuple"
            }
          ],
          "internalType": "struct Witnet.Result",
          "name": "_result",
          "type": "tuple"
        }
      ],
      "name": "asInt128",
      "outputs": [
        {
          "internalType": "int128",
          "name": "",
          "type": "int128"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "success",
              "type": "bool"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    },
                    {
                      "internalType": "uint32",
                      "name": "cursor",
                      "type": "uint32"
                    }
                  ],
                  "internalType": "struct Witnet.Buffer",
                  "name": "buffer",
                  "type": "tuple"
                },
                {
                  "internalType": "uint8",
                  "name": "initialByte",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "majorType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "additionalInformation",
                  "type": "uint8"
                },
                {
                  "internalType": "uint64",
                  "name": "len",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "tag",
                  "type": "uint64"
                }
              ],
              "internalType": "struct Witnet.CBOR",
              "name": "value",
              "type": "tuple"
            }
          ],
          "internalType": "struct Witnet.Result",
          "name": "_result",
          "type": "tuple"
        }
      ],
      "name": "asInt128Array",
      "outputs": [
        {
          "internalType": "int128[]",
          "name": "",
          "type": "int128[]"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "success",
              "type": "bool"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    },
                    {
                      "internalType": "uint32",
                      "name": "cursor",
                      "type": "uint32"
                    }
                  ],
                  "internalType": "struct Witnet.Buffer",
                  "name": "buffer",
                  "type": "tuple"
                },
                {
                  "internalType": "uint8",
                  "name": "initialByte",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "majorType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "additionalInformation",
                  "type": "uint8"
                },
                {
                  "internalType": "uint64",
                  "name": "len",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "tag",
                  "type": "uint64"
                }
              ],
              "internalType": "struct Witnet.CBOR",
              "name": "value",
              "type": "tuple"
            }
          ],
          "internalType": "struct Witnet.Result",
          "name": "_result",
          "type": "tuple"
        }
      ],
      "name": "asRawError",
      "outputs": [
        {
          "internalType": "uint64[]",
          "name": "",
          "type": "uint64[]"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "success",
              "type": "bool"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    },
                    {
                      "internalType": "uint32",
                      "name": "cursor",
                      "type": "uint32"
                    }
                  ],
                  "internalType": "struct Witnet.Buffer",
                  "name": "buffer",
                  "type": "tuple"
                },
                {
                  "internalType": "uint8",
                  "name": "initialByte",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "majorType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "additionalInformation",
                  "type": "uint8"
                },
                {
                  "internalType": "uint64",
                  "name": "len",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "tag",
                  "type": "uint64"
                }
              ],
              "internalType": "struct Witnet.CBOR",
              "name": "value",
              "type": "tuple"
            }
          ],
          "internalType": "struct Witnet.Result",
          "name": "_result",
          "type": "tuple"
        }
      ],
      "name": "asString",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "success",
              "type": "bool"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    },
                    {
                      "internalType": "uint32",
                      "name": "cursor",
                      "type": "uint32"
                    }
                  ],
                  "internalType": "struct Witnet.Buffer",
                  "name": "buffer",
                  "type": "tuple"
                },
                {
                  "internalType": "uint8",
                  "name": "initialByte",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "majorType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "additionalInformation",
                  "type": "uint8"
                },
                {
                  "internalType": "uint64",
                  "name": "len",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "tag",
                  "type": "uint64"
                }
              ],
              "internalType": "struct Witnet.CBOR",
              "name": "value",
              "type": "tuple"
            }
          ],
          "internalType": "struct Witnet.Result",
          "name": "_result",
          "type": "tuple"
        }
      ],
      "name": "asStringArray",
      "outputs": [
        {
          "internalType": "string[]",
          "name": "",
          "type": "string[]"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "success",
              "type": "bool"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    },
                    {
                      "internalType": "uint32",
                      "name": "cursor",
                      "type": "uint32"
                    }
                  ],
                  "internalType": "struct Witnet.Buffer",
                  "name": "buffer",
                  "type": "tuple"
                },
                {
                  "internalType": "uint8",
                  "name": "initialByte",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "majorType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "additionalInformation",
                  "type": "uint8"
                },
                {
                  "internalType": "uint64",
                  "name": "len",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "tag",
                  "type": "uint64"
                }
              ],
              "internalType": "struct Witnet.CBOR",
              "name": "value",
              "type": "tuple"
            }
          ],
          "internalType": "struct Witnet.Result",
          "name": "_result",
          "type": "tuple"
        }
      ],
      "name": "asUint64",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "success",
              "type": "bool"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    },
                    {
                      "internalType": "uint32",
                      "name": "cursor",
                      "type": "uint32"
                    }
                  ],
                  "internalType": "struct Witnet.Buffer",
                  "name": "buffer",
                  "type": "tuple"
                },
                {
                  "internalType": "uint8",
                  "name": "initialByte",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "majorType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "additionalInformation",
                  "type": "uint8"
                },
                {
                  "internalType": "uint64",
                  "name": "len",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "tag",
                  "type": "uint64"
                }
              ],
              "internalType": "struct Witnet.CBOR",
              "name": "value",
              "type": "tuple"
            }
          ],
          "internalType": "struct Witnet.Result",
          "name": "_result",
          "type": "tuple"
        }
      ],
      "name": "asUint64Array",
      "outputs": [
        {
          "internalType": "uint64[]",
          "name": "",
          "type": "uint64[]"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "base",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "codehash",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "_codehash",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "currency",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "deleteQuery",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "reporter",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "timestamp",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "drTxHash",
              "type": "bytes32"
            },
            {
              "internalType": "bytes",
              "name": "cborBytes",
              "type": "bytes"
            }
          ],
          "internalType": "struct Witnet.Response",
          "name": "_response",
          "type": "tuple"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "destruct",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_gasPrice",
          "type": "uint256"
        }
      ],
      "name": "estimateReward",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getNextQueryId",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryData",
      "outputs": [
        {
          "components": [
            {
              "components": [
                {
                  "internalType": "contract IWitnetRequest",
                  "name": "addr",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "requester",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "hash",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "gasprice",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "reward",
                  "type": "uint256"
                }
              ],
              "internalType": "struct Witnet.Request",
              "name": "request",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "reporter",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "timestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes32",
                  "name": "drTxHash",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes",
                  "name": "cborBytes",
                  "type": "bytes"
                }
              ],
              "internalType": "struct Witnet.Response",
              "name": "response",
              "type": "tuple"
            },
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            }
          ],
          "internalType": "struct Witnet.Query",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryStatus",
      "outputs": [
        {
          "internalType": "enum Witnet.QueryStatus",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_initData",
          "type": "bytes"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "success",
              "type": "bool"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    },
                    {
                      "internalType": "uint32",
                      "name": "cursor",
                      "type": "uint32"
                    }
                  ],
                  "internalType": "struct Witnet.Buffer",
                  "name": "buffer",
                  "type": "tuple"
                },
                {
                  "internalType": "uint8",
                  "name": "initialByte",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "majorType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "additionalInformation",
                  "type": "uint8"
                },
                {
                  "internalType": "uint64",
                  "name": "len",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "tag",
                  "type": "uint64"
                }
              ],
              "internalType": "struct Witnet.CBOR",
              "name": "value",
              "type": "tuple"
            }
          ],
          "internalType": "struct Witnet.Result",
          "name": "_result",
          "type": "tuple"
        }
      ],
      "name": "isError",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "success",
              "type": "bool"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    },
                    {
                      "internalType": "uint32",
                      "name": "cursor",
                      "type": "uint32"
                    }
                  ],
                  "internalType": "struct Witnet.Buffer",
                  "name": "buffer",
                  "type": "tuple"
                },
                {
                  "internalType": "uint8",
                  "name": "initialByte",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "majorType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "additionalInformation",
                  "type": "uint8"
                },
                {
                  "internalType": "uint64",
                  "name": "len",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "tag",
                  "type": "uint64"
                }
              ],
              "internalType": "struct Witnet.CBOR",
              "name": "value",
              "type": "tuple"
            }
          ],
          "internalType": "struct Witnet.Result",
          "name": "_result",
          "type": "tuple"
        }
      ],
      "name": "isOk",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_reporter",
          "type": "address"
        }
      ],
      "name": "isReporter",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isUpgradable",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        }
      ],
      "name": "isUpgradableFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IWitnetRequest",
          "name": "_addr",
          "type": "address"
        }
      ],
      "name": "postRequest",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxiableUUID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "readRequest",
      "outputs": [
        {
          "components": [
            {
              "internalType": "contract IWitnetRequest",
              "name": "addr",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "requester",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "hash",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "gasprice",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reward",
              "type": "uint256"
            }
          ],
          "internalType": "struct Witnet.Request",
          "name": "_request",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "readRequestBytecode",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "_bytecode",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "readRequestGasPrice",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "readRequestReward",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "readResponse",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "reporter",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "timestamp",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "drTxHash",
              "type": "bytes32"
            },
            {
              "internalType": "bytes",
              "name": "cborBytes",
              "type": "bytes"
            }
          ],
          "internalType": "struct Witnet.Response",
          "name": "_response",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "readResponseDrTxHash",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "readResponseReporter",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "readResponseResult",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "success",
              "type": "bool"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    },
                    {
                      "internalType": "uint32",
                      "name": "cursor",
                      "type": "uint32"
                    }
                  ],
                  "internalType": "struct Witnet.Buffer",
                  "name": "buffer",
                  "type": "tuple"
                },
                {
                  "internalType": "uint8",
                  "name": "initialByte",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "majorType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "additionalInformation",
                  "type": "uint8"
                },
                {
                  "internalType": "uint64",
                  "name": "len",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "tag",
                  "type": "uint64"
                }
              ],
              "internalType": "struct Witnet.CBOR",
              "name": "value",
              "type": "tuple"
            }
          ],
          "internalType": "struct Witnet.Result",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "readResponseTimestamp",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "_drTxHash",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "_cborBytes",
          "type": "bytes"
        }
      ],
      "name": "reportResult",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "_drTxHash",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "_cborBytes",
          "type": "bytes"
        }
      ],
      "name": "reportResult",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "queryId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "timestamp",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "drTxHash",
              "type": "bytes32"
            },
            {
              "internalType": "bytes",
              "name": "cborBytes",
              "type": "bytes"
            }
          ],
          "internalType": "struct IWitnetRequestBoardReporter.BatchResult[]",
          "name": "_batchResults",
          "type": "tuple[]"
        },
        {
          "internalType": "bool",
          "name": "_verbose",
          "type": "bool"
        }
      ],
      "name": "reportResultBatch",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_cborBytes",
          "type": "bytes"
        }
      ],
      "name": "resultFromCborBytes",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "success",
              "type": "bool"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    },
                    {
                      "internalType": "uint32",
                      "name": "cursor",
                      "type": "uint32"
                    }
                  ],
                  "internalType": "struct Witnet.Buffer",
                  "name": "buffer",
                  "type": "tuple"
                },
                {
                  "internalType": "uint8",
                  "name": "initialByte",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "majorType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "additionalInformation",
                  "type": "uint8"
                },
                {
                  "internalType": "uint64",
                  "name": "len",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "tag",
                  "type": "uint64"
                }
              ],
              "internalType": "struct Witnet.CBOR",
              "name": "value",
              "type": "tuple"
            }
          ],
          "internalType": "struct Witnet.Result",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "components": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "uint32",
                  "name": "cursor",
                  "type": "uint32"
                }
              ],
              "internalType": "struct Witnet.Buffer",
              "name": "buffer",
              "type": "tuple"
            },
            {
              "internalType": "uint8",
              "name": "initialByte",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "majorType",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "additionalInformation",
              "type": "uint8"
            },
            {
              "internalType": "uint64",
              "name": "len",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "tag",
              "type": "uint64"
            }
          ],
          "internalType": "struct Witnet.CBOR",
          "name": "_cborValue",
          "type": "tuple"
        }
      ],
      "name": "resultFromCborValue",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "success",
              "type": "bool"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    },
                    {
                      "internalType": "uint32",
                      "name": "cursor",
                      "type": "uint32"
                    }
                  ],
                  "internalType": "struct Witnet.Buffer",
                  "name": "buffer",
                  "type": "tuple"
                },
                {
                  "internalType": "uint8",
                  "name": "initialByte",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "majorType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "additionalInformation",
                  "type": "uint8"
                },
                {
                  "internalType": "uint64",
                  "name": "len",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "tag",
                  "type": "uint64"
                }
              ],
              "internalType": "struct Witnet.CBOR",
              "name": "value",
              "type": "tuple"
            }
          ],
          "internalType": "struct Witnet.Result",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_reporters",
          "type": "address[]"
        }
      ],
      "name": "setReporters",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_exReporters",
          "type": "address[]"
        }
      ],
      "name": "unsetReporters",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "upgradeReward",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x6101406040523480156200001257600080fd5b5060405162007eae38038062007eae833981810160405281019062000038919062000244565b82826000828281838073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050503362000089620001af60201b60201c565b60010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001620000dc620001d760201b60201c565b60000160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060003090506000813f90508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508060c0818152505082151560e081151560f81b81525050505050806101008181525050505050505080610120818152505050505062000313565b60007ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e183905090565b60007fa6db7263983f337bae2c9fb315730227961d1c1153ae1e10a56b5791465dd6fd905090565b6000815190506200021081620002c5565b92915050565b6000815190506200022781620002df565b92915050565b6000815190506200023e81620002f9565b92915050565b60008060006060848603121562000260576200025f620002c0565b5b60006200027086828701620001ff565b9350506020620002838682870162000216565b925050604062000296868287016200022d565b9150509250925092565b60008115159050919050565b6000819050919050565b6000819050919050565b600080fd5b620002d081620002a0565b8114620002dc57600080fd5b50565b620002ea81620002ac565b8114620002f657600080fd5b50565b6200030481620002b6565b81146200031057600080fd5b50565b60805160601c60a05160601c60c05160e05160f81c6101005161012051617b426200036c60003960006138fd01526000611d8101526000611d5901526000612dff01526000611d0601526000613d3f0152617b426000f3fe6080604052600436106102e85760003560e01c80637780cde111610190578063c805dd0f116100dc578063d4da69ac11610095578063dc3c71cd1161006f578063dc3c71cd14610d4d578063e5a6b10f14610d8a578063e99e47f314610db5578063f2fde38b14610df257610328565b8063d4da69ac14610c95578063d74803be14610cd2578063db04f16d14610d1057610328565b8063c805dd0f14610b4d578063c87d969e14610b78578063c8f5cdd514610bb5578063cf62d11514610bde578063d2e8756114610c1b578063d4ced13214610c5857610328565b8063a8604c1a11610149578063b281a7bd11610123578063b281a7bd14610a66578063bc7e25ff14610a96578063c2485ebd14610ad3578063c683b46514610b1057610328565b8063a8604c1a146109c1578063a9e954b9146109fe578063b076832814610a2957610328565b80637780cde1146108795780637c1fbda3146108b657806381a398b5146108f35780638da5cb5b1461091c57806399f65804146109475780639d96fced1461098457610328565b80633b885f2a1161024f5780635479d9401161020857806366bfdc75116101e257806366bfdc75146107a65780636b58960a146107c25780636f07abcc146107ff578063754e5bea1461083c57610328565b80635479d9401461072757806354fd4d50146107525780636280bce81461077d57610328565b80633b885f2a14610605578063439fab91146106425780634c9f72e31461066b5780634dcffaf3146106945780635001f3b5146106d157806352d1902d146106fc57610328565b80632241f2db116102a15780632241f2db146104d15780632565082b1461050e57806328a78d9b1461054b5780632b68b9c6146105745780632b905fbb1461058b5780633ae97295146105c857610328565b8063044ad7be1461036357806307e66852146103a05780630f572d2c146103dd578063109a0e3c1461041a5780631dd27daf1461045757806320f9241e1461049457610328565b36610328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031f906167c2565b60405180910390fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035a90616962565b60405180910390fd5b34801561036f57600080fd5b5061038a600480360381019061038591906151be565b610e1b565b604051610397919061662d565b60405180910390f35b3480156103ac57600080fd5b506103c760048036038101906103c2919061568b565b610e7a565b6040516103d491906165a5565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff919061568b565b610f11565b60405161041191906165c7565b60405180910390f35b34801561042657600080fd5b50610441600480360381019061043c919061568b565b610fa8565b60405161044e9190616780565b60405180910390f35b34801561046357600080fd5b5061047e6004803603810190610479919061571d565b61103f565b60405161048b9190616a47565b60405180910390f35b3480156104a057600080fd5b506104bb60048036038101906104b6919061571d565b6110ea565b6040516104c89190616a47565b60405180910390f35b3480156104dd57600080fd5b506104f860048036038101906104f3919061568b565b61117f565b6040516105059190616765565b60405180910390f35b34801561051a57600080fd5b5061053560048036038101906105309190615642565b611211565b6040516105429190616a25565b60405180910390f35b34801561055757600080fd5b50610572600480360381019061056d91906151eb565b6112ac565b005b34801561058057600080fd5b50610589611420565b005b34801561059757600080fd5b506105b260048036038101906105ad919061568b565b6114d2565b6040516105bf919061674a565b60405180910390f35b3480156105d457600080fd5b506105ef60048036038101906105ea919061571d565b611564565b6040516105fc9190616a47565b60405180910390f35b34801561061157600080fd5b5061062c6004803603810190610627919061571d565b61160f565b6040516106399190616685565b60405180910390f35b34801561064e57600080fd5b5061066960048036038101906106649190615457565b6117e4565b005b34801561067757600080fd5b50610692600480360381019061068d91906151eb565b611af7565b005b3480156106a057600080fd5b506106bb60048036038101906106b6919061568b565b611c6b565b6040516106c8919061660b565b60405180910390f35b3480156106dd57600080fd5b506106e6611d02565b6040516106f39190616568565b60405180910390f35b34801561070857600080fd5b50610711611d2a565b60405161071e9190616648565b60405180910390f35b34801561073357600080fd5b5061073c611d55565b604051610749919061662d565b60405180910390f35b34801561075e57600080fd5b50610767611d7d565b6040516107749190616648565b60405180910390f35b34801561078957600080fd5b506107a4600480360381019061079f919061574a565b611da5565b005b6107c060048036038101906107bb919061571d565b611fdd565b005b3480156107ce57600080fd5b506107e960048036038101906107e491906151be565b612106565b6040516107f6919061662d565b60405180910390f35b34801561080b57600080fd5b506108266004803603810190610821919061571d565b61217e565b604051610833919061672f565b60405180910390f35b34801561084857600080fd5b50610863600480360381019061085e919061571d565b612190565b60405161087091906169e1565b60405180910390f35b34801561088557600080fd5b506108a0600480360381019061089b919061568b565b61232e565b6040516108ad919061662d565b60405180910390f35b3480156108c257600080fd5b506108dd60048036038101906108d8919061571d565b6123c0565b6040516108ea91906169e1565b60405180910390f35b3480156108ff57600080fd5b5061091a60048036038101906109159190615358565b612746565b005b34801561092857600080fd5b50610931612a44565b60405161093e9190616568565b60405180910390f35b34801561095357600080fd5b5061096e6004803603810190610969919061571d565b612a77565b60405161097b91906169c6565b60405180910390f35b34801561099057600080fd5b506109ab60048036038101906109a6919061571d565b612cb4565b6040516109b89190616568565b60405180910390f35b3480156109cd57600080fd5b506109e860048036038101906109e3919061568b565b612d69565b6040516109f5919061662d565b60405180910390f35b348015610a0a57600080fd5b50610a13612dfb565b604051610a209190616648565b60405180910390f35b348015610a3557600080fd5b50610a506004803603810190610a4b919061568b565b612e23565b604051610a5d919061660b565b60405180910390f35b610a806004803603810190610a7b91906154e9565b612eba565b604051610a8d9190616a47565b60405180910390f35b348015610aa257600080fd5b50610abd6004803603810190610ab8919061568b565b613192565b604051610aca9190616b43565b60405180910390f35b348015610adf57600080fd5b50610afa6004803603810190610af5919061571d565b613224565b604051610b0791906169a4565b60405180910390f35b348015610b1c57600080fd5b50610b376004803603810190610b32919061568b565b61349e565b604051610b449190616685565b60405180910390f35b348015610b5957600080fd5b50610b62613535565b604051610b6f9190616a47565b60405180910390f35b348015610b8457600080fd5b50610b9f6004803603810190610b9a919061568b565b613554565b604051610bac91906165e9565b60405180910390f35b348015610bc157600080fd5b50610bdc6004803603810190610bd791906157be565b6135eb565b005b348015610bea57600080fd5b50610c056004803603810190610c00919061568b565b613867565b604051610c129190616648565b60405180910390f35b348015610c2757600080fd5b50610c426004803603810190610c3d919061571d565b6138f9565b604051610c4f9190616a47565b60405180910390f35b348015610c6457600080fd5b50610c7f6004803603810190610c7a919061568b565b61392e565b604051610c8c919061662d565b60405180910390f35b348015610ca157600080fd5b50610cbc6004803603810190610cb7919061571d565b6139c0565b604051610cc99190616a25565b60405180910390f35b348015610cde57600080fd5b50610cf96004803603810190610cf4919061568b565b613aeb565b604051610d079291906166ff565b60405180910390f35b348015610d1c57600080fd5b50610d376004803603810190610d32919061568b565b613c16565b604051610d4491906166e4565b60405180910390f35b348015610d5957600080fd5b50610d746004803603810190610d6f919061571d565b613ca8565b604051610d819190616648565b60405180910390f35b348015610d9657600080fd5b50610d9f613d3d565b604051610dac91906166c9565b60405180910390f35b348015610dc157600080fd5b50610ddc6004803603810190610dd79190615457565b613d61565b604051610de99190616a25565b60405180910390f35b348015610dfe57600080fd5b50610e196004803603810190610e1491906151be565b613dfc565b005b6000610e25613fa1565b60000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60608173__$2872872f739c245a20da3eaa995328fa91$__63fc853c3790916040518263ffffffff1660e01b8152600401610eb59190616a03565b60006040518083038186803b158015610ecd57600080fd5b505af4158015610ee1573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610f0a919061527d565b9050919050565b60608173__$2872872f739c245a20da3eaa995328fa91$__6308efc09790916040518263ffffffff1660e01b8152600401610f4c9190616a03565b60006040518083038186803b158015610f6457600080fd5b505af4158015610f78573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610fa191906152c6565b9050919050565b60608173__$2872872f739c245a20da3eaa995328fa91$__63f417daf590916040518263ffffffff1660e01b8152600401610fe39190616a03565b60006040518083038186803b158015610ffb57600080fd5b505af415801561100f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061103891906155f9565b9050919050565b6000816001806003811115611057576110566171b4565b5b61106083613fc9565b6003811115611072576110716171b4565b5b1461107c82614099565b906110bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b49190616780565b60405180910390fd5b506110c66141bf565b60030160008581526020019081526020016000206000016004015492505050919050565b6000816002806003811115611102576111016171b4565b5b61110b83613fc9565b600381111561111d5761111c6171b4565b5b1461112782614099565b90611168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115f9190616780565b60405180910390fd5b50611172846141e7565b6001015492505050919050565b60008173__$2872872f739c245a20da3eaa995328fa91$__63d8868db690916040518263ffffffff1660e01b81526004016111ba9190616a03565b60206040518083038186803b1580156111d257600080fd5b505af41580156111e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120a91906155cc565b9050919050565b611219614409565b73__$2872872f739c245a20da3eaa995328fa91$__63130283ee836040518263ffffffff1660e01b81526004016112509190616982565b60006040518083038186803b15801561126857600080fd5b505af415801561127c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906112a591906156d4565b9050919050565b6112b46141bf565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611345576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133c906167e2565b60405180910390fd5b60005b81518110156113e557600082828151811061136657611365617212565b5b60200260200101519050600061137a613fa1565b60000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505080806113dd9061713c565b915050611348565b507f646436560d9757cb3c0f01da0f62642c6040b00c9a80685f94ef1a7725cad5f1816040516114159190616583565b60405180910390a150565b6114286141bf565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b0906167e2565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16ff5b60008173__$2872872f739c245a20da3eaa995328fa91$__63c71db52190916040518263ffffffff1660e01b815260040161150d9190616a03565b60206040518083038186803b15801561152557600080fd5b505af4158015611539573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155d919061559f565b9050919050565b600081600180600381111561157c5761157b6171b4565b5b61158583613fc9565b6003811115611597576115966171b4565b5b146115a182614099565b906115e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d99190616780565b60405180910390fd5b506115eb6141bf565b60030160008581526020019081526020016000206000016003015492505050919050565b606060006003811115611625576116246171b4565b5b61162e83613fc9565b60038111156116405761163f6171b4565b5b1415611681576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167890616942565b60405180910390fd5b600061168c8361420f565b9050600073ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117de578060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f09400026040518163ffffffff1660e01b815260040160006040518083038186803b15801561175057600080fd5b505afa158015611764573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061178d91906154a0565b9150806002015461179d83614237565b146117dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d490616882565b60405180910390fd5b5b50919050565b60006117ee6141bf565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561189b57339050806118556141bf565b60010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061190a565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190090616922565b60405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff1661192a6141bf565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a0b57611971611d02565b73ffffffffffffffffffffffffffffffffffffffff1661198f6141bf565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0190616902565b60405180910390fd5b5b611a13611d02565b611a1b6141bf565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611a64612dfb565b611a6c611d02565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f72d4b00d8e35b3717e384aef5f900256a106d6a423d88935a11579981333ba20611ac2611d7d565b604051611acf9190616648565b60405180910390a4611af382806020019051810190611aee9190615234565b611af7565b5050565b611aff6141bf565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b87906167e2565b60405180910390fd5b60005b8151811015611c30576000828281518110611bb157611bb0617212565b5b602002602001015190506001611bc5613fa1565b60000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550508080611c289061713c565b915050611b93565b507f4d570ee36dec878006609360d34ac8d6a0b68d521871ae15a407b6340877ca0181604051611c609190616583565b60405180910390a150565b60608173__$2872872f739c245a20da3eaa995328fa91$__63147e5c8f90916040518263ffffffff1660e01b8152600401611ca69190616a03565b60006040518083038186803b158015611cbe57600080fd5b505af4158015611cd2573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611cfb91906153b4565b9050919050565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b60007f9969c6aff411c5e5f0807500693e8f819ce88529615cfa6cab569b24788a101860001b905090565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b611dad613fa1565b60000160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611e3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e31906168c2565b60405180910390fd5b836001806003811115611e5057611e4f6171b4565b5b611e5983613fc9565b6003811115611e6b57611e6a6171b4565b5b14611e7582614099565b90611eb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ead9190616780565b60405180910390fd5b506000801b851415611efd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef4906168a2565b60405180910390fd5b6000848490501415611f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3b906168e2565b60405180910390fd5b611f9d33611f9888428989898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050614290565b6143ae565b7ee9413c6321ec446a267b7ebf5bb108663f2ef58b35c4f6e18905ac8f205cb28633604051611fcd929190616a62565b60405180910390a1505050505050565b806001806003811115611ff357611ff26171b4565b5b611ffc83613fc9565b600381111561200e5761200d6171b4565b5b1461201882614099565b90612059576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120509190616780565b60405180910390fd5b5060006120658461420f565b905060006120716143f9565b82600401546120809190616ea6565b9050600061208c614401565b905082600301548111156120f55760006120a5826138f9565b9050808310156120ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e190616862565b60405180910390fd5b818460030181905550505b818360040181905550505050505050565b6000806121116141bf565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061213f611d55565b801561217657508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b915050919050565b600061218982613fc9565b9050919050565b61219861442b565b8160028060038111156121ae576121ad6171b4565b5b6121b783613fc9565b60038111156121c9576121c86171b4565b5b146121d382614099565b90612214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220b9190616780565b60405180910390fd5b5061221e846141e7565b6040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282015481526020016003820180546122a3906170d9565b80601f01602080910402602001604051908101604052809291908181526020018280546122cf906170d9565b801561231c5780601f106122f15761010080835404028352916020019161231c565b820191906000526020600020905b8154815290600101906020018083116122ff57829003601f168201915b50505050508152505092505050919050565b60008173__$2872872f739c245a20da3eaa995328fa91$__63a1d45d5690916040518263ffffffff1660e01b81526004016123699190616a03565b60206040518083038186803b15801561238157600080fd5b505af4158015612395573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b991906153fd565b9050919050565b6123c861442b565b8160028060038111156123de576123dd6171b4565b5b6123e783613fc9565b60038111156123f9576123f86171b4565b5b1461240382614099565b90612444576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243b9190616780565b60405180910390fd5b50600061244f6141bf565b600301600086815260200190815260200160002090508060090160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146124f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ee90616842565b60405180910390fd5b806005016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152602001600382018054612580906170d9565b80601f01602080910402602001604051908101604052809291908181526020018280546125ac906170d9565b80156125f95780601f106125ce576101008083540402835291602001916125f9565b820191906000526020600020905b8154815290600101906020018083116125dc57829003601f168201915b505050505081525050935061260c6141bf565b60030160008681526020019081526020016000206000808201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600282016000905560038201600090556004820160009055505060058201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182016000905560028201600090556003820160006126da919061446c565b50506009820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550507fdec847db058c9c012e0f3dbe2b99e05cfa4c693f61a7d8bc64652a68913cbfff8533604051612736929190616a62565b60405180910390a1505050919050565b61274e613fa1565b60000160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166127db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d2906168c2565b60405180910390fd5b6000808351905060005b81811015612a2957600085828151811061280257612801617212565b5b60200260200101519050600160038111156128205761281f6171b4565b5b61282d8260000151613fc9565b600381111561283f5761283e6171b4565b5b1461288b578415612886577f4df64445edc775fba59db44b8001852fb1b777eea88fd54f04572dd114e3ff7f816000015160405161287d9190616ab9565b60405180910390a15b612a15565b6000801b816040015114156128e15784156128dc577f4df64445edc775fba59db44b8001852fb1b777eea88fd54f04572dd114e3ff7f81600001516040516128d39190616ae7565b60405180910390a15b612a14565b60008160600151511415612936578415612931577f4df64445edc775fba59db44b8001852fb1b777eea88fd54f04572dd114e3ff7f81600001516040516129289190616b15565b60405180910390a15b612a13565b6000816020015111801561294d5750428160200151115b15612999578415612994577f4df64445edc775fba59db44b8001852fb1b777eea88fd54f04572dd114e3ff7f816000015160405161298b9190616a8b565b60405180910390a15b612a12565b6129c8816000015160008360200151146129b75782602001516129b9565b425b83604001518460600151614290565b846129d39190616ea6565b93507ee9413c6321ec446a267b7ebf5bb108663f2ef58b35c4f6e18905ac8f205cb2816000015133604051612a09929190616a62565b60405180910390a15b5b5b5b508080612a219061713c565b9150506127e5565b506000821115612a3e57612a3d33836143ae565b5b50505050565b6000612a4e6141bf565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612a7f6144ac565b816001806003811115612a9557612a946171b4565b5b612a9e83613fc9565b6003811115612ab057612aaf6171b4565b5b14612aba82614099565b90612afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af29190616780565b60405180910390fd5b506000612b066141bf565b60030160008681526020019081526020016000209050806000016040518060a00160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015481526020016004820154815250509350600073ffffffffffffffffffffffffffffffffffffffff168160090160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612cac578060090160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b505050919050565b6000816002806003811115612ccc57612ccb6171b4565b5b612cd583613fc9565b6003811115612ce757612ce66171b4565b5b14612cf182614099565b90612d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d299190616780565b60405180910390fd5b50612d3c846141e7565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1692505050919050565b60008173__$2872872f739c245a20da3eaa995328fa91$__636646c11990916040518263ffffffff1660e01b8152600401612da49190616a03565b60206040518083038186803b158015612dbc57600080fd5b505af4158015612dd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612df491906153fd565b9050919050565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b60608173__$2872872f739c245a20da3eaa995328fa91$__630879730d90916040518263ffffffff1660e01b8152600401612e5e9190616a03565b60006040518083038186803b158015612e7657600080fd5b505af4158015612e8a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190612eb391906153b4565b9050919050565b600080612ec56143f9565b90506000612ed1614401565b90506000612ede826138f9565b905080831015612f23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1a90616862565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415612f93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f8a906167a2565b60405180910390fd5b60008573ffffffffffffffffffffffffffffffffffffffff1663f09400026040518163ffffffff1660e01b815260040160006040518083038186803b158015612fdb57600080fd5b505afa158015612fef573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061301891906154a0565b9050600081511161305e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305590616822565b60405180910390fd5b6130666141bf565b600201600081546130769061713c565b9190508190559450336130876141bf565b600301600087815260200190815260200160002060090160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006130e78661420f565b9050868160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061313582614237565b81600201819055508381600301819055508481600401819055507fcabaf9c102f83746b27ae932f638eebfaf5ea7d014edd20ab14dec3768a8f55c8633604051613180929190616a62565b60405180910390a15050505050919050565b60008173__$2872872f739c245a20da3eaa995328fa91$__638233f9b390916040518263ffffffff1660e01b81526004016131cd9190616a03565b60206040518083038186803b1580156131e557600080fd5b505af41580156131f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061321d9190615846565b9050919050565b61322c61450a565b6132346141bf565b6003016000838152602001908152602001600020604051806060016040529081600082016040518060a00160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015481526020016004820154815250508152602001600582016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282015481526020016003820180546133bb906170d9565b80601f01602080910402602001604051908101604052809291908181526020018280546133e7906170d9565b80156134345780601f1061340957610100808354040283529160200191613434565b820191906000526020600020905b81548152906001019060200180831161341757829003601f168201915b50505050508152505081526020016009820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250509050919050565b60608173__$2872872f739c245a20da3eaa995328fa91$__63a1b9089190916040518263ffffffff1660e01b81526004016134d99190616a03565b60006040518083038186803b1580156134f157600080fd5b505af4158015613505573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061352e91906154a0565b9050919050565b600060016135416141bf565b6002015461354f9190616ea6565b905090565b60608173__$2872872f739c245a20da3eaa995328fa91$__632d26b9e290916040518263ffffffff1660e01b815260040161358f9190616a03565b60006040518083038186803b1580156135a757600080fd5b505af41580156135bb573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906135e4919061530f565b9050919050565b6135f3613fa1565b60000160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613680576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613677906168c2565b60405180910390fd5b846001806003811115613696576136956171b4565b5b61369f83613fc9565b60038111156136b1576136b06171b4565b5b146136bb82614099565b906136fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136f39190616780565b60405180910390fd5b5042861115613740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161373790616802565b60405180910390fd5b6000801b851415613786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161377d906168a2565b60405180910390fd5b60008484905014156137cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137c4906168e2565b60405180910390fd5b6138263361382189898989898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050614290565b6143ae565b7ee9413c6321ec446a267b7ebf5bb108663f2ef58b35c4f6e18905ac8f205cb28733604051613856929190616a62565b60405180910390a150505050505050565b60008173__$2872872f739c245a20da3eaa995328fa91$__63a2e8765590916040518263ffffffff1660e01b81526004016138a29190616a03565b60206040518083038186803b1580156138ba57600080fd5b505af41580156138ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138f2919061542a565b9050919050565b60007f0000000000000000000000000000000000000000000000000000000000000000826139279190616efc565b9050919050565b60008173__$2872872f739c245a20da3eaa995328fa91$__63abf82f4c90916040518263ffffffff1660e01b81526004016139699190616a03565b60206040518083038186803b15801561398157600080fd5b505af4158015613995573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139b991906153fd565b9050919050565b6139c8614409565b8160028060038111156139de576139dd6171b4565b5b6139e783613fc9565b60038111156139f9576139f86171b4565b5b14613a0382614099565b90613a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a3b9190616780565b60405180910390fd5b506000613a50856141e7565b905073__$2872872f739c245a20da3eaa995328fa91$__63e99e47f3826003016040518263ffffffff1660e01b8152600401613a8c91906166a7565b60006040518083038186803b158015613aa457600080fd5b505af4158015613ab8573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190613ae191906156d4565b9350505050919050565b600060608273__$2872872f739c245a20da3eaa995328fa91$__638cc5eb5490916040518263ffffffff1660e01b8152600401613b289190616a03565b60006040518083038186803b158015613b4057600080fd5b505af4925050508015613b7657506040513d6000823e3d601f19601f82011682018060405250810190613b739190615543565b60015b613c0857613b82617270565b806308c379a01415613baf5750613b976178b5565b80613ba25750613bb1565b6000819250925050613c11565b505b3d8060008114613bdd576040519150601f19603f3d011682016040523d82523d6000602084013e613be2565b606091505b5060ff6040518060600160405280602f8152602001617ade602f91399250925050613c11565b81819350935050505b915091565b60008173__$2872872f739c245a20da3eaa995328fa91$__63d45d097d90916040518263ffffffff1660e01b8152600401613c519190616a03565b60206040518083038186803b158015613c6957600080fd5b505af4158015613c7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ca19190615516565b9050919050565b6000816002806003811115613cc057613cbf6171b4565b5b613cc983613fc9565b6003811115613cdb57613cda6171b4565b5b14613ce582614099565b90613d26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d1d9190616780565b60405180910390fd5b50613d30846141e7565b6002015492505050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b613d69614409565b73__$2872872f739c245a20da3eaa995328fa91$__63e99e47f3836040518263ffffffff1660e01b8152600401613da09190616663565b60006040518083038186803b158015613db857600080fd5b505af4158015613dcc573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190613df591906156d4565b9050919050565b613e046141bf565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613e95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e8c906167e2565b60405180910390fd5b6000613e9f6141bf565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614613f9d5781613f016141bf565b60010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35b5050565b60007fa6db7263983f337bae2c9fb315730227961d1c1153ae1e10a56b5791465dd6fd905090565b600080821480613fe35750613fdc6141bf565b6002015482115b15613ff15760009050614094565b6000613ffb6141bf565b600301600084815260200190815260200160002090506000801b81600501600201541461402c576002915050614094565b600073ffffffffffffffffffffffffffffffffffffffff168160090160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461408e576001915050614094565b60039150505b919050565b6060600160038111156140af576140ae6171b4565b5b8260038111156140c2576140c16171b4565b5b14156140e857604051806060016040528060258152602001617a926025913990506141ba565b600260038111156140fc576140fb6171b4565b5b82600381111561410f5761410e6171b4565b5b141561413557604051806060016040528060278152602001617ab76027913990506141ba565b600380811115614148576141476171b4565b5b82600381111561415b5761415a6171b4565b5b141561418157604051806060016040528060268152602001617a6c6026913990506141ba565b6040518060400160405280601981526020017f5769746e6574426f617264446174613a20626164206d6f6f640000000000000081525090505b919050565b60007ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e183905090565b60006141f16141bf565b60030160008381526020019081526020016000206005019050919050565b60006142196141bf565b60030160008381526020019081526020016000206000019050919050565b60006002826040516142499190616551565b602060405180830381855afa158015614266573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190614289919061542a565b9050919050565b60008061429b6141bf565b6003016000878152602001908152602001600020905060008160000190506000826005019050868160010181905550858160020181905550338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508481600301908051906020019061432e92919061454d565b508160040154935082600001600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160009055600382016000905560048201600090555050505050949350505050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156143f4573d6000803e3d6000fd5b505050565b600034905090565b60003a905090565b60405180604001604052806000151581526020016144256145d3565b81525090565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008019168152602001606081525090565b508054614478906170d9565b6000825580601f1061448a57506144a9565b601f0160209004906000526020600020908101906144a8919061462c565b5b50565b6040518060a00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000801916815260200160008152602001600081525090565b604051806060016040528061451d6144ac565b815260200161452a61442b565b8152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b828054614559906170d9565b90600052602060002090601f01602090048101928261457b57600085556145c2565b82601f1061459457805160ff19168380011785556145c2565b828001600101855582156145c2579182015b828111156145c15782518255916020019190600101906145a6565b5b5090506145cf919061462c565b5090565b6040518060c001604052806145e6614649565b8152602001600060ff168152602001600060ff168152602001600060ff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b8082111561464557600081600090555060010161462d565b5090565b604051806040016040528060608152602001600063ffffffff1681525090565b600061467c61467784616b83565b616b5e565b9050808382526020820190508285602086028201111561469f5761469e6172a6565b5b60005b858110156146cf57816146b58882614a7b565b8452602084019350602083019250506001810190506146a2565b5050509392505050565b60006146ec6146e784616b83565b616b5e565b9050808382526020820190508285602086028201111561470f5761470e6172a6565b5b60005b8581101561473f57816147258882614a90565b845260208401935060208301925050600181019050614712565b5050509392505050565b600061475c61475784616baf565b616b5e565b9050808382526020820190508285602086028201111561477f5761477e6172a6565b5b60005b858110156147af57816147958882614d17565b845260208401935060208301925050600181019050614782565b5050509392505050565b60006147cc6147c784616bdb565b616b5e565b905080838252602082019050828560208602820111156147ef576147ee6172a6565b5b60005b8581101561481f57816148058882614d2c565b8452602084019350602083019250506001810190506147f2565b5050509392505050565b600061483c61483784616c07565b616b5e565b9050808382526020820190508285602086028201111561485f5761485e6172a6565b5b60005b858110156148ad57815167ffffffffffffffff81111561488557614884617297565b5b8086016148928982614d41565b85526020850194506020840193505050600181019050614862565b5050509392505050565b60006148ca6148c584616c33565b616b5e565b905080838252602082019050828560208602820111156148ed576148ec6172a6565b5b60005b8581101561493b57813567ffffffffffffffff81111561491357614912617297565b5b8086016149208982614d6f565b855260208501945060208401935050506001810190506148f0565b5050509392505050565b600061495861495384616c5f565b616b5e565b9050808382526020820190508285602086028201111561497b5761497a6172a6565b5b60005b858110156149ab5781614991888261517f565b84526020840193506020830192505060018101905061497e565b5050509392505050565b60006149c86149c384616c8b565b616b5e565b9050828152602081018484840111156149e4576149e36172ab565b5b6149ef848285617097565b509392505050565b6000614a0a614a0584616c8b565b616b5e565b905082815260208101848484011115614a2657614a256172ab565b5b614a318482856170a6565b509392505050565b6000614a4c614a4784616cbc565b616b5e565b905082815260208101848484011115614a6857614a676172ab565b5b614a738482856170a6565b509392505050565b600081359050614a8a81617974565b92915050565b600081519050614a9f81617974565b92915050565b600082601f830112614aba57614ab9617297565b5b8135614aca848260208601614669565b91505092915050565b600082601f830112614ae857614ae7617297565b5b8151614af88482602086016146d9565b91505092915050565b600082601f830112614b1657614b15617297565b5b8151614b26848260208601614749565b91505092915050565b600082601f830112614b4457614b43617297565b5b8151614b548482602086016147b9565b91505092915050565b600082601f830112614b7257614b71617297565b5b8151614b82848260208601614829565b91505092915050565b600082601f830112614ba057614b9f617297565b5b8135614bb08482602086016148b7565b91505092915050565b600082601f830112614bce57614bcd617297565b5b8151614bde848260208601614945565b91505092915050565b600081359050614bf68161798b565b92915050565b600081519050614c0b8161798b565b92915050565b600081359050614c20816179a2565b92915050565b600081519050614c35816179a2565b92915050565b60008083601f840112614c5157614c50617297565b5b8235905067ffffffffffffffff811115614c6e57614c6d617292565b5b602083019150836001820283011115614c8a57614c896172a6565b5b9250929050565b600082601f830112614ca657614ca5617297565b5b8135614cb68482602086016149b5565b91505092915050565b600082601f830112614cd457614cd3617297565b5b8151614ce48482602086016149f7565b91505092915050565b600081359050614cfc816179b9565b92915050565b600081519050614d11816179d0565b92915050565b600081519050614d26816179e1565b92915050565b600081519050614d3b816179f8565b92915050565b600082601f830112614d5657614d55617297565b5b8151614d66848260208601614a39565b91505092915050565b600060808284031215614d8557614d8461729c565b5b614d8f6080616b5e565b90506000614d9f8482850161512b565b6000830152506020614db38482850161512b565b6020830152506040614dc784828501614c11565b604083015250606082013567ffffffffffffffff811115614deb57614dea6172a1565b5b614df784828501614c91565b60608301525092915050565b600060408284031215614e1957614e1861729c565b5b614e236040616b5e565b9050600082013567ffffffffffffffff811115614e4357614e426172a1565b5b614e4f84828501614c91565b6000830152506020614e6384828501615140565b60208301525092915050565b600060408284031215614e8557614e8461729c565b5b614e8f6040616b5e565b9050600082015167ffffffffffffffff811115614eaf57614eae6172a1565b5b614ebb84828501614cbf565b6000830152506020614ecf84828501615155565b60208301525092915050565b600060c08284031215614ef157614ef061729c565b5b614efb60c0616b5e565b9050600082013567ffffffffffffffff811115614f1b57614f1a6172a1565b5b614f2784828501614e03565b6000830152506020614f3b84828501615194565b6020830152506040614f4f84828501615194565b6040830152506060614f6384828501615194565b6060830152506080614f778482850161516a565b60808301525060a0614f8b8482850161516a565b60a08301525092915050565b600060c08284031215614fad57614fac61729c565b5b614fb760c0616b5e565b9050600082015167ffffffffffffffff811115614fd757614fd66172a1565b5b614fe384828501614e6f565b6000830152506020614ff7848285016151a9565b602083015250604061500b848285016151a9565b604083015250606061501f848285016151a9565b60608301525060806150338482850161517f565b60808301525060a06150478482850161517f565b60a08301525092915050565b6000604082840312156150695761506861729c565b5b6150736040616b5e565b9050600061508384828501614be7565b600083015250602082013567ffffffffffffffff8111156150a7576150a66172a1565b5b6150b384828501614edb565b60208301525092915050565b6000604082840312156150d5576150d461729c565b5b6150df6040616b5e565b905060006150ef84828501614bfc565b600083015250602082015167ffffffffffffffff811115615113576151126172a1565b5b61511f84828501614f97565b60208301525092915050565b60008135905061513a81617a0f565b92915050565b60008135905061514f81617a26565b92915050565b60008151905061516481617a26565b92915050565b60008135905061517981617a3d565b92915050565b60008151905061518e81617a3d565b92915050565b6000813590506151a381617a54565b92915050565b6000815190506151b881617a54565b92915050565b6000602082840312156151d4576151d36172b5565b5b60006151e284828501614a7b565b91505092915050565b600060208284031215615201576152006172b5565b5b600082013567ffffffffffffffff81111561521f5761521e6172b0565b5b61522b84828501614aa5565b91505092915050565b60006020828403121561524a576152496172b5565b5b600082015167ffffffffffffffff811115615268576152676172b0565b5b61527484828501614ad3565b91505092915050565b600060208284031215615293576152926172b5565b5b600082015167ffffffffffffffff8111156152b1576152b06172b0565b5b6152bd84828501614b01565b91505092915050565b6000602082840312156152dc576152db6172b5565b5b600082015167ffffffffffffffff8111156152fa576152f96172b0565b5b61530684828501614b2f565b91505092915050565b600060208284031215615325576153246172b5565b5b600082015167ffffffffffffffff811115615343576153426172b0565b5b61534f84828501614b5d565b91505092915050565b6000806040838503121561536f5761536e6172b5565b5b600083013567ffffffffffffffff81111561538d5761538c6172b0565b5b61539985828601614b8b565b92505060206153aa85828601614be7565b9150509250929050565b6000602082840312156153ca576153c96172b5565b5b600082015167ffffffffffffffff8111156153e8576153e76172b0565b5b6153f484828501614bb9565b91505092915050565b600060208284031215615413576154126172b5565b5b600061542184828501614bfc565b91505092915050565b6000602082840312156154405761543f6172b5565b5b600061544e84828501614c26565b91505092915050565b60006020828403121561546d5761546c6172b5565b5b600082013567ffffffffffffffff81111561548b5761548a6172b0565b5b61549784828501614c91565b91505092915050565b6000602082840312156154b6576154b56172b5565b5b600082015167ffffffffffffffff8111156154d4576154d36172b0565b5b6154e084828501614cbf565b91505092915050565b6000602082840312156154ff576154fe6172b5565b5b600061550d84828501614ced565b91505092915050565b60006020828403121561552c5761552b6172b5565b5b600061553a84828501614d02565b91505092915050565b6000806040838503121561555a576155596172b5565b5b600061556885828601614d02565b925050602083015167ffffffffffffffff811115615589576155886172b0565b5b61559585828601614d41565b9150509250929050565b6000602082840312156155b5576155b46172b5565b5b60006155c384828501614d17565b91505092915050565b6000602082840312156155e2576155e16172b5565b5b60006155f084828501614d2c565b91505092915050565b60006020828403121561560f5761560e6172b5565b5b600082015167ffffffffffffffff81111561562d5761562c6172b0565b5b61563984828501614d41565b91505092915050565b600060208284031215615658576156576172b5565b5b600082013567ffffffffffffffff811115615676576156756172b0565b5b61568284828501614edb565b91505092915050565b6000602082840312156156a1576156a06172b5565b5b600082013567ffffffffffffffff8111156156bf576156be6172b0565b5b6156cb84828501615053565b91505092915050565b6000602082840312156156ea576156e96172b5565b5b600082015167ffffffffffffffff811115615708576157076172b0565b5b615714848285016150bf565b91505092915050565b600060208284031215615733576157326172b5565b5b60006157418482850161512b565b91505092915050565b60008060008060608587031215615764576157636172b5565b5b60006157728782880161512b565b945050602061578387828801614c11565b935050604085013567ffffffffffffffff8111156157a4576157a36172b0565b5b6157b087828801614c3b565b925092505092959194509250565b6000806000806000608086880312156157da576157d96172b5565b5b60006157e88882890161512b565b95505060206157f98882890161512b565b945050604061580a88828901614c11565b935050606086013567ffffffffffffffff81111561582b5761582a6172b0565b5b61583788828901614c3b565b92509250509295509295909350565b60006020828403121561585c5761585b6172b5565b5b600061586a8482850161517f565b91505092915050565b600061587f83836158e7565b60208301905092915050565b60006158978383615d0e565b60208301905092915050565b60006158af8383615d2c565b60208301905092915050565b60006158c78383615d4a565b905092915050565b60006158db8383616506565b60208301905092915050565b6158f081616f56565b82525050565b6158ff81616f56565b82525050565b600061591082616d52565b61591a8185616de0565b935061592583616ced565b8060005b8381101561595657815161593d8882615873565b975061594883616d9f565b925050600181019050615929565b5085935050505092915050565b600061596e82616d5d565b6159788185616df1565b935061598383616cfd565b8060005b838110156159b457815161599b888261588b565b97506159a683616dac565b925050600181019050615987565b5085935050505092915050565b60006159cc82616d68565b6159d68185616e02565b93506159e183616d0d565b8060005b83811015615a125781516159f988826158a3565b9750615a0483616db9565b9250506001810190506159e5565b5085935050505092915050565b6000615a2a82616d73565b615a348185616e13565b935083602082028501615a4685616d1d565b8060005b85811015615a825784840389528151615a6385826158bb565b9450615a6e83616dc6565b925060208a01995050600181019050615a4a565b50829750879550505050505092915050565b6000615a9f82616d7e565b615aa98185616e24565b9350615ab483616d2d565b8060005b83811015615ae5578151615acc88826158cf565b9750615ad783616dd3565b925050600181019050615ab8565b5085935050505092915050565b615afb81616f68565b82525050565b615b0a81616f68565b82525050565b615b1981616f68565b82525050565b615b2881616f74565b82525050565b615b3781616f74565b82525050565b6000615b4882616d89565b615b528185616e35565b9350615b628185602086016170a6565b615b6b816172ba565b840191505092915050565b6000615b8182616d89565b615b8b8185616e46565b9350615b9b8185602086016170a6565b615ba4816172ba565b840191505092915050565b6000615bba82616d89565b615bc48185616e57565b9350615bd48185602086016170a6565b615bdd816172ba565b840191505092915050565b6000615bf382616d89565b615bfd8185616e68565b9350615c0d8185602086016170a6565b615c16816172ba565b840191505092915050565b6000615c2c82616d89565b615c368185616e79565b9350615c468185602086016170a6565b80840191505092915050565b60008154615c5f816170d9565b615c698186616e57565b94506001821660008114615c845760018114615c9657615cc9565b60ff1983168652602086019350615cc9565b615c9f85616d3d565b60005b83811015615cc157815481890152600182019150602081019050615ca2565b808801955050505b50505092915050565b615cdb8161702b565b82525050565b615cea8161703d565b82525050565b615cf98161704f565b82525050565b615d0881617061565b82525050565b615d1781616fb6565b82525050565b615d2681616fb6565b82525050565b615d3581616fc3565b82525050565b615d4481616fc3565b82525050565b6000615d5582616d94565b615d5f8185616e84565b9350615d6f8185602086016170a6565b615d78816172ba565b840191505092915050565b6000615d8e82616d94565b615d988185616e95565b9350615da88185602086016170a6565b615db1816172ba565b840191505092915050565b6000615dc9602c83616e95565b9150615dd4826172d8565b604082019050919050565b6000615dec602983616e95565b9150615df782617327565b604082019050919050565b6000615e0f602e83616e95565b9150615e1a82617376565b604082019050919050565b6000615e32601b83616e95565b9150615e3d826173c5565b602082019050919050565b6000615e55603183616e95565b9150615e60826173ee565b604082019050919050565b6000615e78602c83616e95565b9150615e838261743d565b604082019050919050565b6000615e9b602d83616e95565b9150615ea68261748c565b604082019050919050565b6000615ebe602f83616e95565b9150615ec9826174db565b604082019050919050565b6000615ee1602f83616e95565b9150615eec8261752a565b604082019050919050565b6000615f04603f83616e95565b9150615f0f82617579565b604082019050919050565b6000615f27604283616e95565b9150615f32826175c8565b606082019050919050565b6000615f4a602a83616e95565b9150615f558261763d565b604082019050919050565b6000615f6d602d83616e95565b9150615f788261768c565b604082019050919050565b6000615f90603a83616e95565b9150615f9b826176db565b604082019050919050565b6000615fb3603483616e95565b9150615fbe8261772a565b604082019050919050565b6000615fd6602b83616e95565b9150615fe182617779565b604082019050919050565b6000615ff9602e83616e95565b9150616004826177c8565b604082019050919050565b600061601c602f83616e95565b915061602782617817565b604082019050919050565b600061603f603183616e95565b915061604a82617866565b604082019050919050565b600060408301600083015184820360008601526160728282615b3d565b915050602083015161608760208601826164e8565b508091505092915050565b600060408301600083015184820360008601526160af8282615be8565b91505060208301516160c460208601826164f7565b508091505092915050565b600060c08301600083015184820360008601526160ec8282616055565b91505060208301516161016020860182616533565b5060408301516161146040860182616533565b5060608301516161276060860182616533565b50608083015161613a6080860182616506565b5060a083015161614d60a0860182616506565b508091505092915050565b600060c08301600083015184820360008601526161758282616092565b915050602083015161618a6020860182616542565b50604083015161619d6040860182616542565b5060608301516161b06060860182616542565b5060808301516161c36080860182616524565b5060a08301516161d660a0860182616524565b508091505092915050565b600060c08301600083015184820360008601526161fe8282616092565b91505060208301516162136020860182616542565b5060408301516162266040860182616542565b5060608301516162396060860182616542565b50608083015161624c6080860182616524565b5060a083015161625f60a0860182616524565b508091505092915050565b600060e08301600083015161628260008601826162ba565b50602083015184820360a086015261629a828261638a565b91505060408301516162af60c08601826158e7565b508091505092915050565b60a0820160008201516162d06000850182615ce1565b5060208201516162e360208501826158e7565b5060408201516162f66040850182615b1f565b50606082015161630960608501826164ca565b50608082015161631c60808501826164ca565b50505050565b60a0820160008201516163386000850182615ce1565b50602082015161634b60208501826158e7565b50604082015161635e6040850182615b1f565b50606082015161637160608501826164ca565b50608082015161638460808501826164ca565b50505050565b60006080830160008301516163a260008601826158e7565b5060208301516163b560208601826164ca565b5060408301516163c86040860182615b1f565b50606083015184820360608601526163e08282615b3d565b9150508091505092915050565b600060808301600083015161640560008601826158e7565b50602083015161641860208601826164ca565b50604083015161642b6040860182615b1f565b50606083015184820360608601526164438282615b3d565b9150508091505092915050565b60006040830160008301516164686000860182615af2565b506020830151848203602086015261648082826160cf565b9150508091505092915050565b60006040830160008301516164a56000860182615b10565b50602083015184820360208601526164bd82826161e1565b9150508091505092915050565b6164d381616ff0565b82525050565b6164e281616ff0565b82525050565b6164f181616ffa565b82525050565b61650081616ffa565b82525050565b61650f8161700a565b82525050565b61651e8161700a565b82525050565b61652d8161700a565b82525050565b61653c8161701e565b82525050565b61654b8161701e565b82525050565b600061655d8284615c21565b915081905092915050565b600060208201905061657d60008301846158f6565b92915050565b6000602082019050818103600083015261659d8184615905565b905092915050565b600060208201905081810360008301526165bf8184615963565b905092915050565b600060208201905081810360008301526165e181846159c1565b905092915050565b600060208201905081810360008301526166038184615a1f565b905092915050565b600060208201905081810360008301526166258184615a94565b905092915050565b60006020820190506166426000830184615b01565b92915050565b600060208201905061665d6000830184615b2e565b92915050565b6000602082019050818103600083015261667d8184615baf565b905092915050565b6000602082019050818103600083015261669f8184615b76565b905092915050565b600060208201905081810360008301526166c18184615c52565b905092915050565b60006020820190506166de6000830184615cd2565b92915050565b60006020820190506166f96000830184615cf0565b92915050565b60006040820190506167146000830185615cf0565b81810360208301526167268184615d83565b90509392505050565b60006020820190506167446000830184615cff565b92915050565b600060208201905061675f6000830184615d1d565b92915050565b600060208201905061677a6000830184615d3b565b92915050565b6000602082019050818103600083015261679a8184615d83565b905092915050565b600060208201905081810360008301526167bb81615dbc565b9050919050565b600060208201905081810360008301526167db81615ddf565b9050919050565b600060208201905081810360008301526167fb81615e25565b9050919050565b6000602082019050818103600083015261681b81615e48565b9050919050565b6000602082019050818103600083015261683b81615e8e565b9050919050565b6000602082019050818103600083015261685b81615eb1565b9050919050565b6000602082019050818103600083015261687b81615ed4565b9050919050565b6000602082019050818103600083015261689b81615ef7565b9050919050565b600060208201905081810360008301526168bb81615f1a565b9050919050565b600060208201905081810360008301526168db81615f3d565b9050919050565b600060208201905081810360008301526168fb81615f83565b9050919050565b6000602082019050818103600083015261691b81615fa6565b9050919050565b6000602082019050818103600083015261693b81615fc9565b9050919050565b6000602082019050818103600083015261695b8161600f565b9050919050565b6000602082019050818103600083015261697b81616032565b9050919050565b6000602082019050818103600083015261699c8184616158565b905092915050565b600060208201905081810360008301526169be818461626a565b905092915050565b600060a0820190506169db6000830184616322565b92915050565b600060208201905081810360008301526169fb81846163ed565b905092915050565b60006020820190508181036000830152616a1d818461648d565b905092915050565b60006020820190508181036000830152616a3f8184616450565b905092915050565b6000602082019050616a5c60008301846164d9565b92915050565b6000604082019050616a7760008301856164d9565b616a8460208301846158f6565b9392505050565b6000604082019050616aa060008301846164d9565b8181036020830152616ab181615e02565b905092915050565b6000604082019050616ace60008301846164d9565b8181036020830152616adf81615e6b565b905092915050565b6000604082019050616afc60008301846164d9565b8181036020830152616b0d81615f60565b905092915050565b6000604082019050616b2a60008301846164d9565b8181036020830152616b3b81615fec565b905092915050565b6000602082019050616b586000830184616515565b92915050565b6000616b68616b79565b9050616b74828261710b565b919050565b6000604051905090565b600067ffffffffffffffff821115616b9e57616b9d617241565b5b602082029050602081019050919050565b600067ffffffffffffffff821115616bca57616bc9617241565b5b602082029050602081019050919050565b600067ffffffffffffffff821115616bf657616bf5617241565b5b602082029050602081019050919050565b600067ffffffffffffffff821115616c2257616c21617241565b5b602082029050602081019050919050565b600067ffffffffffffffff821115616c4e57616c4d617241565b5b602082029050602081019050919050565b600067ffffffffffffffff821115616c7a57616c79617241565b5b602082029050602081019050919050565b600067ffffffffffffffff821115616ca657616ca5617241565b5b616caf826172ba565b9050602081019050919050565b600067ffffffffffffffff821115616cd757616cd6617241565b5b616ce0826172ba565b9050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000616eb182616ff0565b9150616ebc83616ff0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115616ef157616ef0617185565b5b828201905092915050565b6000616f0782616ff0565b9150616f1283616ff0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615616f4b57616f4a617185565b5b828202905092915050565b6000616f6182616fd0565b9050919050565b60008115159050919050565b6000819050919050565b6000616f8982616f56565b9050919050565b6000819050616f9e8261794b565b919050565b6000819050616fb182617960565b919050565b600081600f0b9050919050565b60008160030b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b600061703682617073565b9050919050565b600061704882617073565b9050919050565b600061705a82616f90565b9050919050565b600061706c82616fa3565b9050919050565b600061707e82617085565b9050919050565b600061709082616fd0565b9050919050565b82818337600083830152505050565b60005b838110156170c45780820151818401526020810190506170a9565b838111156170d3576000848401525b50505050565b600060028204905060018216806170f157607f821691505b60208210811415617105576171046171e3565b5b50919050565b617114826172ba565b810181811067ffffffffffffffff8211171561713357617132617241565b5b80604052505050565b600061714782616ff0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561717a57617179617185565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d111561728f5760046000803e61728c6000516172cb565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f5769746e657452657175657374426f617264547275737461626c65426173653a60008201527f206e756c6c207363726970740000000000000000000000000000000000000000602082015250565b7f5769746e657452657175657374426f6172643a206e6f207472616e736665727360008201527f2061636365707465640000000000000000000000000000000000000000000000602082015250565b7f5769746e657452657175657374426f617264547275737461626c65426173653a60008201527f206261642074696d657374616d70000000000000000000000000000000000000602082015250565b7f5769746e6574426f617264446174613a206f6e6c79206f776e65720000000000600082015250565b7f5769746e657452657175657374426f617264547275737461626c65446566617560008201527f6c743a206261642074696d657374616d70000000000000000000000000000000602082015250565b7f5769746e657452657175657374426f617264547275737461626c65426173653a60008201527f2062616420717565727949640000000000000000000000000000000000000000602082015250565b7f5769746e657452657175657374426f617264547275737461626c65426173653a60008201527f20656d7074792073637269707400000000000000000000000000000000000000602082015250565b7f5769746e657452657175657374426f617264547275737461626c65426173653a60008201527f206f6e6c79207265717565737465720000000000000000000000000000000000602082015250565b7f5769746e657452657175657374426f617264547275737461626c65426173653a60008201527f2072657761726420746f6f206c6f770000000000000000000000000000000000602082015250565b7f5769746e657452657175657374426f617264547275737461626c65426173653a60008201527f2062797465636f6465206368616e67656420616674657220706f7374696e6700602082015250565b7f5769746e657452657175657374426f617264547275737461626c65446566617560008201527f6c743a205769746e65742064725478486173682063616e6e6f74206265207a6560208201527f726f000000000000000000000000000000000000000000000000000000000000604082015250565b7f5769746e6574426f6172644461746141434c733a20756e617574686f72697a6560008201527f64207265706f7274657200000000000000000000000000000000000000000000602082015250565b7f5769746e657452657175657374426f617264547275737461626c65426173653a60008201527f2062616420647254784861736800000000000000000000000000000000000000602082015250565b7f5769746e657452657175657374426f617264547275737461626c65446566617560008201527f6c743a20726573756c742063616e6e6f7420626520656d707479000000000000602082015250565b7f5769746e657452657175657374426f617264547275737461626c65426173653a60008201527f20616c726561647920696e697469616c697a6564000000000000000000000000602082015250565b7f5769746e657452657175657374426f617264547275737461626c65426173653a60008201527f206f6e6c79206f776e6572000000000000000000000000000000000000000000602082015250565b7f5769746e657452657175657374426f617264547275737461626c65426173653a60008201527f206261642063626f724279746573000000000000000000000000000000000000602082015250565b7f5769746e657452657175657374426f617264547275737461626c65426173653a60008201527f206e6f742079657420706f737465640000000000000000000000000000000000602082015250565b7f5769746e657452657175657374426f61726455706772616461626c654261736560008201527f3a206e6f7420696d706c656d656e746564000000000000000000000000000000602082015250565b600060443d10156178c557617948565b6178cd616b79565b60043d036004823e80513d602482011167ffffffffffffffff821117156178f5575050617948565b808201805167ffffffffffffffff8111156179135750505050617948565b80602083010160043d038501811115617930575050505050617948565b61793f8260200185018661710b565b82955050505050505b90565b610100811061795d5761795c6171b4565b5b50565b60048110617971576179706171b4565b5b50565b61797d81616f56565b811461798857600080fd5b50565b61799481616f68565b811461799f57600080fd5b50565b6179ab81616f74565b81146179b657600080fd5b50565b6179c281616f7e565b81146179cd57600080fd5b50565b61010081106179de57600080fd5b50565b6179ea81616fb6565b81146179f557600080fd5b50565b617a0181616fc3565b8114617a0c57600080fd5b50565b617a1881616ff0565b8114617a2357600080fd5b50565b617a2f81616ffa565b8114617a3a57600080fd5b50565b617a468161700a565b8114617a5157600080fd5b50565b617a5d8161701e565b8114617a6857600080fd5b5056fe5769746e6574426f617264446174613a206e6f7420696e2044656c65746564207374617475735769746e6574426f617264446174613a206e6f7420696e20506f73746564207374617475735769746e6574426f617264446174613a206e6f7420696e205265706f72746564207374617475735769746e657452657175657374426f617264547275737461626c65426173653a206661696c696e6720617373657274a26469706673582212202626e20c29ec4ce25474ec6cb7a1ceb7b8c91cb224f916654f83066eda96301464736f6c63430008070033",
  "deployedBytecode": "0x6080604052600436106102e85760003560e01c80637780cde111610190578063c805dd0f116100dc578063d4da69ac11610095578063dc3c71cd1161006f578063dc3c71cd14610d4d578063e5a6b10f14610d8a578063e99e47f314610db5578063f2fde38b14610df257610328565b8063d4da69ac14610c95578063d74803be14610cd2578063db04f16d14610d1057610328565b8063c805dd0f14610b4d578063c87d969e14610b78578063c8f5cdd514610bb5578063cf62d11514610bde578063d2e8756114610c1b578063d4ced13214610c5857610328565b8063a8604c1a11610149578063b281a7bd11610123578063b281a7bd14610a66578063bc7e25ff14610a96578063c2485ebd14610ad3578063c683b46514610b1057610328565b8063a8604c1a146109c1578063a9e954b9146109fe578063b076832814610a2957610328565b80637780cde1146108795780637c1fbda3146108b657806381a398b5146108f35780638da5cb5b1461091c57806399f65804146109475780639d96fced1461098457610328565b80633b885f2a1161024f5780635479d9401161020857806366bfdc75116101e257806366bfdc75146107a65780636b58960a146107c25780636f07abcc146107ff578063754e5bea1461083c57610328565b80635479d9401461072757806354fd4d50146107525780636280bce81461077d57610328565b80633b885f2a14610605578063439fab91146106425780634c9f72e31461066b5780634dcffaf3146106945780635001f3b5146106d157806352d1902d146106fc57610328565b80632241f2db116102a15780632241f2db146104d15780632565082b1461050e57806328a78d9b1461054b5780632b68b9c6146105745780632b905fbb1461058b5780633ae97295146105c857610328565b8063044ad7be1461036357806307e66852146103a05780630f572d2c146103dd578063109a0e3c1461041a5780631dd27daf1461045757806320f9241e1461049457610328565b36610328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031f906167c2565b60405180910390fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035a90616962565b60405180910390fd5b34801561036f57600080fd5b5061038a600480360381019061038591906151be565b610e1b565b604051610397919061662d565b60405180910390f35b3480156103ac57600080fd5b506103c760048036038101906103c2919061568b565b610e7a565b6040516103d491906165a5565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff919061568b565b610f11565b60405161041191906165c7565b60405180910390f35b34801561042657600080fd5b50610441600480360381019061043c919061568b565b610fa8565b60405161044e9190616780565b60405180910390f35b34801561046357600080fd5b5061047e6004803603810190610479919061571d565b61103f565b60405161048b9190616a47565b60405180910390f35b3480156104a057600080fd5b506104bb60048036038101906104b6919061571d565b6110ea565b6040516104c89190616a47565b60405180910390f35b3480156104dd57600080fd5b506104f860048036038101906104f3919061568b565b61117f565b6040516105059190616765565b60405180910390f35b34801561051a57600080fd5b5061053560048036038101906105309190615642565b611211565b6040516105429190616a25565b60405180910390f35b34801561055757600080fd5b50610572600480360381019061056d91906151eb565b6112ac565b005b34801561058057600080fd5b50610589611420565b005b34801561059757600080fd5b506105b260048036038101906105ad919061568b565b6114d2565b6040516105bf919061674a565b60405180910390f35b3480156105d457600080fd5b506105ef60048036038101906105ea919061571d565b611564565b6040516105fc9190616a47565b60405180910390f35b34801561061157600080fd5b5061062c6004803603810190610627919061571d565b61160f565b6040516106399190616685565b60405180910390f35b34801561064e57600080fd5b5061066960048036038101906106649190615457565b6117e4565b005b34801561067757600080fd5b50610692600480360381019061068d91906151eb565b611af7565b005b3480156106a057600080fd5b506106bb60048036038101906106b6919061568b565b611c6b565b6040516106c8919061660b565b60405180910390f35b3480156106dd57600080fd5b506106e6611d02565b6040516106f39190616568565b60405180910390f35b34801561070857600080fd5b50610711611d2a565b60405161071e9190616648565b60405180910390f35b34801561073357600080fd5b5061073c611d55565b604051610749919061662d565b60405180910390f35b34801561075e57600080fd5b50610767611d7d565b6040516107749190616648565b60405180910390f35b34801561078957600080fd5b506107a4600480360381019061079f919061574a565b611da5565b005b6107c060048036038101906107bb919061571d565b611fdd565b005b3480156107ce57600080fd5b506107e960048036038101906107e491906151be565b612106565b6040516107f6919061662d565b60405180910390f35b34801561080b57600080fd5b506108266004803603810190610821919061571d565b61217e565b604051610833919061672f565b60405180910390f35b34801561084857600080fd5b50610863600480360381019061085e919061571d565b612190565b60405161087091906169e1565b60405180910390f35b34801561088557600080fd5b506108a0600480360381019061089b919061568b565b61232e565b6040516108ad919061662d565b60405180910390f35b3480156108c257600080fd5b506108dd60048036038101906108d8919061571d565b6123c0565b6040516108ea91906169e1565b60405180910390f35b3480156108ff57600080fd5b5061091a60048036038101906109159190615358565b612746565b005b34801561092857600080fd5b50610931612a44565b60405161093e9190616568565b60405180910390f35b34801561095357600080fd5b5061096e6004803603810190610969919061571d565b612a77565b60405161097b91906169c6565b60405180910390f35b34801561099057600080fd5b506109ab60048036038101906109a6919061571d565b612cb4565b6040516109b89190616568565b60405180910390f35b3480156109cd57600080fd5b506109e860048036038101906109e3919061568b565b612d69565b6040516109f5919061662d565b60405180910390f35b348015610a0a57600080fd5b50610a13612dfb565b604051610a209190616648565b60405180910390f35b348015610a3557600080fd5b50610a506004803603810190610a4b919061568b565b612e23565b604051610a5d919061660b565b60405180910390f35b610a806004803603810190610a7b91906154e9565b612eba565b604051610a8d9190616a47565b60405180910390f35b348015610aa257600080fd5b50610abd6004803603810190610ab8919061568b565b613192565b604051610aca9190616b43565b60405180910390f35b348015610adf57600080fd5b50610afa6004803603810190610af5919061571d565b613224565b604051610b0791906169a4565b60405180910390f35b348015610b1c57600080fd5b50610b376004803603810190610b32919061568b565b61349e565b604051610b449190616685565b60405180910390f35b348015610b5957600080fd5b50610b62613535565b604051610b6f9190616a47565b60405180910390f35b348015610b8457600080fd5b50610b9f6004803603810190610b9a919061568b565b613554565b604051610bac91906165e9565b60405180910390f35b348015610bc157600080fd5b50610bdc6004803603810190610bd791906157be565b6135eb565b005b348015610bea57600080fd5b50610c056004803603810190610c00919061568b565b613867565b604051610c129190616648565b60405180910390f35b348015610c2757600080fd5b50610c426004803603810190610c3d919061571d565b6138f9565b604051610c4f9190616a47565b60405180910390f35b348015610c6457600080fd5b50610c7f6004803603810190610c7a919061568b565b61392e565b604051610c8c919061662d565b60405180910390f35b348015610ca157600080fd5b50610cbc6004803603810190610cb7919061571d565b6139c0565b604051610cc99190616a25565b60405180910390f35b348015610cde57600080fd5b50610cf96004803603810190610cf4919061568b565b613aeb565b604051610d079291906166ff565b60405180910390f35b348015610d1c57600080fd5b50610d376004803603810190610d32919061568b565b613c16565b604051610d4491906166e4565b60405180910390f35b348015610d5957600080fd5b50610d746004803603810190610d6f919061571d565b613ca8565b604051610d819190616648565b60405180910390f35b348015610d9657600080fd5b50610d9f613d3d565b604051610dac91906166c9565b60405180910390f35b348015610dc157600080fd5b50610ddc6004803603810190610dd79190615457565b613d61565b604051610de99190616a25565b60405180910390f35b348015610dfe57600080fd5b50610e196004803603810190610e1491906151be565b613dfc565b005b6000610e25613fa1565b60000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60608173__$2872872f739c245a20da3eaa995328fa91$__63fc853c3790916040518263ffffffff1660e01b8152600401610eb59190616a03565b60006040518083038186803b158015610ecd57600080fd5b505af4158015610ee1573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610f0a919061527d565b9050919050565b60608173__$2872872f739c245a20da3eaa995328fa91$__6308efc09790916040518263ffffffff1660e01b8152600401610f4c9190616a03565b60006040518083038186803b158015610f6457600080fd5b505af4158015610f78573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610fa191906152c6565b9050919050565b60608173__$2872872f739c245a20da3eaa995328fa91$__63f417daf590916040518263ffffffff1660e01b8152600401610fe39190616a03565b60006040518083038186803b158015610ffb57600080fd5b505af415801561100f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061103891906155f9565b9050919050565b6000816001806003811115611057576110566171b4565b5b61106083613fc9565b6003811115611072576110716171b4565b5b1461107c82614099565b906110bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b49190616780565b60405180910390fd5b506110c66141bf565b60030160008581526020019081526020016000206000016004015492505050919050565b6000816002806003811115611102576111016171b4565b5b61110b83613fc9565b600381111561111d5761111c6171b4565b5b1461112782614099565b90611168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115f9190616780565b60405180910390fd5b50611172846141e7565b6001015492505050919050565b60008173__$2872872f739c245a20da3eaa995328fa91$__63d8868db690916040518263ffffffff1660e01b81526004016111ba9190616a03565b60206040518083038186803b1580156111d257600080fd5b505af41580156111e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120a91906155cc565b9050919050565b611219614409565b73__$2872872f739c245a20da3eaa995328fa91$__63130283ee836040518263ffffffff1660e01b81526004016112509190616982565b60006040518083038186803b15801561126857600080fd5b505af415801561127c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906112a591906156d4565b9050919050565b6112b46141bf565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611345576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133c906167e2565b60405180910390fd5b60005b81518110156113e557600082828151811061136657611365617212565b5b60200260200101519050600061137a613fa1565b60000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505080806113dd9061713c565b915050611348565b507f646436560d9757cb3c0f01da0f62642c6040b00c9a80685f94ef1a7725cad5f1816040516114159190616583565b60405180910390a150565b6114286141bf565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b0906167e2565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16ff5b60008173__$2872872f739c245a20da3eaa995328fa91$__63c71db52190916040518263ffffffff1660e01b815260040161150d9190616a03565b60206040518083038186803b15801561152557600080fd5b505af4158015611539573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155d919061559f565b9050919050565b600081600180600381111561157c5761157b6171b4565b5b61158583613fc9565b6003811115611597576115966171b4565b5b146115a182614099565b906115e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d99190616780565b60405180910390fd5b506115eb6141bf565b60030160008581526020019081526020016000206000016003015492505050919050565b606060006003811115611625576116246171b4565b5b61162e83613fc9565b60038111156116405761163f6171b4565b5b1415611681576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167890616942565b60405180910390fd5b600061168c8361420f565b9050600073ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117de578060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f09400026040518163ffffffff1660e01b815260040160006040518083038186803b15801561175057600080fd5b505afa158015611764573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061178d91906154a0565b9150806002015461179d83614237565b146117dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d490616882565b60405180910390fd5b5b50919050565b60006117ee6141bf565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561189b57339050806118556141bf565b60010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061190a565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190090616922565b60405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff1661192a6141bf565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a0b57611971611d02565b73ffffffffffffffffffffffffffffffffffffffff1661198f6141bf565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0190616902565b60405180910390fd5b5b611a13611d02565b611a1b6141bf565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611a64612dfb565b611a6c611d02565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f72d4b00d8e35b3717e384aef5f900256a106d6a423d88935a11579981333ba20611ac2611d7d565b604051611acf9190616648565b60405180910390a4611af382806020019051810190611aee9190615234565b611af7565b5050565b611aff6141bf565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b87906167e2565b60405180910390fd5b60005b8151811015611c30576000828281518110611bb157611bb0617212565b5b602002602001015190506001611bc5613fa1565b60000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550508080611c289061713c565b915050611b93565b507f4d570ee36dec878006609360d34ac8d6a0b68d521871ae15a407b6340877ca0181604051611c609190616583565b60405180910390a150565b60608173__$2872872f739c245a20da3eaa995328fa91$__63147e5c8f90916040518263ffffffff1660e01b8152600401611ca69190616a03565b60006040518083038186803b158015611cbe57600080fd5b505af4158015611cd2573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611cfb91906153b4565b9050919050565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b60007f9969c6aff411c5e5f0807500693e8f819ce88529615cfa6cab569b24788a101860001b905090565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b611dad613fa1565b60000160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611e3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e31906168c2565b60405180910390fd5b836001806003811115611e5057611e4f6171b4565b5b611e5983613fc9565b6003811115611e6b57611e6a6171b4565b5b14611e7582614099565b90611eb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ead9190616780565b60405180910390fd5b506000801b851415611efd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef4906168a2565b60405180910390fd5b6000848490501415611f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3b906168e2565b60405180910390fd5b611f9d33611f9888428989898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050614290565b6143ae565b7ee9413c6321ec446a267b7ebf5bb108663f2ef58b35c4f6e18905ac8f205cb28633604051611fcd929190616a62565b60405180910390a1505050505050565b806001806003811115611ff357611ff26171b4565b5b611ffc83613fc9565b600381111561200e5761200d6171b4565b5b1461201882614099565b90612059576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120509190616780565b60405180910390fd5b5060006120658461420f565b905060006120716143f9565b82600401546120809190616ea6565b9050600061208c614401565b905082600301548111156120f55760006120a5826138f9565b9050808310156120ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e190616862565b60405180910390fd5b818460030181905550505b818360040181905550505050505050565b6000806121116141bf565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061213f611d55565b801561217657508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b915050919050565b600061218982613fc9565b9050919050565b61219861442b565b8160028060038111156121ae576121ad6171b4565b5b6121b783613fc9565b60038111156121c9576121c86171b4565b5b146121d382614099565b90612214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220b9190616780565b60405180910390fd5b5061221e846141e7565b6040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282015481526020016003820180546122a3906170d9565b80601f01602080910402602001604051908101604052809291908181526020018280546122cf906170d9565b801561231c5780601f106122f15761010080835404028352916020019161231c565b820191906000526020600020905b8154815290600101906020018083116122ff57829003601f168201915b50505050508152505092505050919050565b60008173__$2872872f739c245a20da3eaa995328fa91$__63a1d45d5690916040518263ffffffff1660e01b81526004016123699190616a03565b60206040518083038186803b15801561238157600080fd5b505af4158015612395573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b991906153fd565b9050919050565b6123c861442b565b8160028060038111156123de576123dd6171b4565b5b6123e783613fc9565b60038111156123f9576123f86171b4565b5b1461240382614099565b90612444576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243b9190616780565b60405180910390fd5b50600061244f6141bf565b600301600086815260200190815260200160002090508060090160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146124f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ee90616842565b60405180910390fd5b806005016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152602001600382018054612580906170d9565b80601f01602080910402602001604051908101604052809291908181526020018280546125ac906170d9565b80156125f95780601f106125ce576101008083540402835291602001916125f9565b820191906000526020600020905b8154815290600101906020018083116125dc57829003601f168201915b505050505081525050935061260c6141bf565b60030160008681526020019081526020016000206000808201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600282016000905560038201600090556004820160009055505060058201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182016000905560028201600090556003820160006126da919061446c565b50506009820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550507fdec847db058c9c012e0f3dbe2b99e05cfa4c693f61a7d8bc64652a68913cbfff8533604051612736929190616a62565b60405180910390a1505050919050565b61274e613fa1565b60000160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166127db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d2906168c2565b60405180910390fd5b6000808351905060005b81811015612a2957600085828151811061280257612801617212565b5b60200260200101519050600160038111156128205761281f6171b4565b5b61282d8260000151613fc9565b600381111561283f5761283e6171b4565b5b1461288b578415612886577f4df64445edc775fba59db44b8001852fb1b777eea88fd54f04572dd114e3ff7f816000015160405161287d9190616ab9565b60405180910390a15b612a15565b6000801b816040015114156128e15784156128dc577f4df64445edc775fba59db44b8001852fb1b777eea88fd54f04572dd114e3ff7f81600001516040516128d39190616ae7565b60405180910390a15b612a14565b60008160600151511415612936578415612931577f4df64445edc775fba59db44b8001852fb1b777eea88fd54f04572dd114e3ff7f81600001516040516129289190616b15565b60405180910390a15b612a13565b6000816020015111801561294d5750428160200151115b15612999578415612994577f4df64445edc775fba59db44b8001852fb1b777eea88fd54f04572dd114e3ff7f816000015160405161298b9190616a8b565b60405180910390a15b612a12565b6129c8816000015160008360200151146129b75782602001516129b9565b425b83604001518460600151614290565b846129d39190616ea6565b93507ee9413c6321ec446a267b7ebf5bb108663f2ef58b35c4f6e18905ac8f205cb2816000015133604051612a09929190616a62565b60405180910390a15b5b5b5b508080612a219061713c565b9150506127e5565b506000821115612a3e57612a3d33836143ae565b5b50505050565b6000612a4e6141bf565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612a7f6144ac565b816001806003811115612a9557612a946171b4565b5b612a9e83613fc9565b6003811115612ab057612aaf6171b4565b5b14612aba82614099565b90612afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af29190616780565b60405180910390fd5b506000612b066141bf565b60030160008681526020019081526020016000209050806000016040518060a00160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015481526020016004820154815250509350600073ffffffffffffffffffffffffffffffffffffffff168160090160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612cac578060090160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b505050919050565b6000816002806003811115612ccc57612ccb6171b4565b5b612cd583613fc9565b6003811115612ce757612ce66171b4565b5b14612cf182614099565b90612d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d299190616780565b60405180910390fd5b50612d3c846141e7565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1692505050919050565b60008173__$2872872f739c245a20da3eaa995328fa91$__636646c11990916040518263ffffffff1660e01b8152600401612da49190616a03565b60206040518083038186803b158015612dbc57600080fd5b505af4158015612dd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612df491906153fd565b9050919050565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b60608173__$2872872f739c245a20da3eaa995328fa91$__630879730d90916040518263ffffffff1660e01b8152600401612e5e9190616a03565b60006040518083038186803b158015612e7657600080fd5b505af4158015612e8a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190612eb391906153b4565b9050919050565b600080612ec56143f9565b90506000612ed1614401565b90506000612ede826138f9565b905080831015612f23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1a90616862565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415612f93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f8a906167a2565b60405180910390fd5b60008573ffffffffffffffffffffffffffffffffffffffff1663f09400026040518163ffffffff1660e01b815260040160006040518083038186803b158015612fdb57600080fd5b505afa158015612fef573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061301891906154a0565b9050600081511161305e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305590616822565b60405180910390fd5b6130666141bf565b600201600081546130769061713c565b9190508190559450336130876141bf565b600301600087815260200190815260200160002060090160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006130e78661420f565b9050868160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061313582614237565b81600201819055508381600301819055508481600401819055507fcabaf9c102f83746b27ae932f638eebfaf5ea7d014edd20ab14dec3768a8f55c8633604051613180929190616a62565b60405180910390a15050505050919050565b60008173__$2872872f739c245a20da3eaa995328fa91$__638233f9b390916040518263ffffffff1660e01b81526004016131cd9190616a03565b60206040518083038186803b1580156131e557600080fd5b505af41580156131f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061321d9190615846565b9050919050565b61322c61450a565b6132346141bf565b6003016000838152602001908152602001600020604051806060016040529081600082016040518060a00160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015481526020016004820154815250508152602001600582016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282015481526020016003820180546133bb906170d9565b80601f01602080910402602001604051908101604052809291908181526020018280546133e7906170d9565b80156134345780601f1061340957610100808354040283529160200191613434565b820191906000526020600020905b81548152906001019060200180831161341757829003601f168201915b50505050508152505081526020016009820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250509050919050565b60608173__$2872872f739c245a20da3eaa995328fa91$__63a1b9089190916040518263ffffffff1660e01b81526004016134d99190616a03565b60006040518083038186803b1580156134f157600080fd5b505af4158015613505573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061352e91906154a0565b9050919050565b600060016135416141bf565b6002015461354f9190616ea6565b905090565b60608173__$2872872f739c245a20da3eaa995328fa91$__632d26b9e290916040518263ffffffff1660e01b815260040161358f9190616a03565b60006040518083038186803b1580156135a757600080fd5b505af41580156135bb573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906135e4919061530f565b9050919050565b6135f3613fa1565b60000160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613680576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613677906168c2565b60405180910390fd5b846001806003811115613696576136956171b4565b5b61369f83613fc9565b60038111156136b1576136b06171b4565b5b146136bb82614099565b906136fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136f39190616780565b60405180910390fd5b5042861115613740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161373790616802565b60405180910390fd5b6000801b851415613786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161377d906168a2565b60405180910390fd5b60008484905014156137cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137c4906168e2565b60405180910390fd5b6138263361382189898989898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050614290565b6143ae565b7ee9413c6321ec446a267b7ebf5bb108663f2ef58b35c4f6e18905ac8f205cb28733604051613856929190616a62565b60405180910390a150505050505050565b60008173__$2872872f739c245a20da3eaa995328fa91$__63a2e8765590916040518263ffffffff1660e01b81526004016138a29190616a03565b60206040518083038186803b1580156138ba57600080fd5b505af41580156138ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138f2919061542a565b9050919050565b60007f0000000000000000000000000000000000000000000000000000000000000000826139279190616efc565b9050919050565b60008173__$2872872f739c245a20da3eaa995328fa91$__63abf82f4c90916040518263ffffffff1660e01b81526004016139699190616a03565b60206040518083038186803b15801561398157600080fd5b505af4158015613995573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139b991906153fd565b9050919050565b6139c8614409565b8160028060038111156139de576139dd6171b4565b5b6139e783613fc9565b60038111156139f9576139f86171b4565b5b14613a0382614099565b90613a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a3b9190616780565b60405180910390fd5b506000613a50856141e7565b905073__$2872872f739c245a20da3eaa995328fa91$__63e99e47f3826003016040518263ffffffff1660e01b8152600401613a8c91906166a7565b60006040518083038186803b158015613aa457600080fd5b505af4158015613ab8573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190613ae191906156d4565b9350505050919050565b600060608273__$2872872f739c245a20da3eaa995328fa91$__638cc5eb5490916040518263ffffffff1660e01b8152600401613b289190616a03565b60006040518083038186803b158015613b4057600080fd5b505af4925050508015613b7657506040513d6000823e3d601f19601f82011682018060405250810190613b739190615543565b60015b613c0857613b82617270565b806308c379a01415613baf5750613b976178b5565b80613ba25750613bb1565b6000819250925050613c11565b505b3d8060008114613bdd576040519150601f19603f3d011682016040523d82523d6000602084013e613be2565b606091505b5060ff6040518060600160405280602f8152602001617ade602f91399250925050613c11565b81819350935050505b915091565b60008173__$2872872f739c245a20da3eaa995328fa91$__63d45d097d90916040518263ffffffff1660e01b8152600401613c519190616a03565b60206040518083038186803b158015613c6957600080fd5b505af4158015613c7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ca19190615516565b9050919050565b6000816002806003811115613cc057613cbf6171b4565b5b613cc983613fc9565b6003811115613cdb57613cda6171b4565b5b14613ce582614099565b90613d26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d1d9190616780565b60405180910390fd5b50613d30846141e7565b6002015492505050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b613d69614409565b73__$2872872f739c245a20da3eaa995328fa91$__63e99e47f3836040518263ffffffff1660e01b8152600401613da09190616663565b60006040518083038186803b158015613db857600080fd5b505af4158015613dcc573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190613df591906156d4565b9050919050565b613e046141bf565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613e95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e8c906167e2565b60405180910390fd5b6000613e9f6141bf565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614613f9d5781613f016141bf565b60010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35b5050565b60007fa6db7263983f337bae2c9fb315730227961d1c1153ae1e10a56b5791465dd6fd905090565b600080821480613fe35750613fdc6141bf565b6002015482115b15613ff15760009050614094565b6000613ffb6141bf565b600301600084815260200190815260200160002090506000801b81600501600201541461402c576002915050614094565b600073ffffffffffffffffffffffffffffffffffffffff168160090160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461408e576001915050614094565b60039150505b919050565b6060600160038111156140af576140ae6171b4565b5b8260038111156140c2576140c16171b4565b5b14156140e857604051806060016040528060258152602001617a926025913990506141ba565b600260038111156140fc576140fb6171b4565b5b82600381111561410f5761410e6171b4565b5b141561413557604051806060016040528060278152602001617ab76027913990506141ba565b600380811115614148576141476171b4565b5b82600381111561415b5761415a6171b4565b5b141561418157604051806060016040528060268152602001617a6c6026913990506141ba565b6040518060400160405280601981526020017f5769746e6574426f617264446174613a20626164206d6f6f640000000000000081525090505b919050565b60007ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e183905090565b60006141f16141bf565b60030160008381526020019081526020016000206005019050919050565b60006142196141bf565b60030160008381526020019081526020016000206000019050919050565b60006002826040516142499190616551565b602060405180830381855afa158015614266573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190614289919061542a565b9050919050565b60008061429b6141bf565b6003016000878152602001908152602001600020905060008160000190506000826005019050868160010181905550858160020181905550338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508481600301908051906020019061432e92919061454d565b508160040154935082600001600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160009055600382016000905560048201600090555050505050949350505050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156143f4573d6000803e3d6000fd5b505050565b600034905090565b60003a905090565b60405180604001604052806000151581526020016144256145d3565b81525090565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008019168152602001606081525090565b508054614478906170d9565b6000825580601f1061448a57506144a9565b601f0160209004906000526020600020908101906144a8919061462c565b5b50565b6040518060a00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000801916815260200160008152602001600081525090565b604051806060016040528061451d6144ac565b815260200161452a61442b565b8152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b828054614559906170d9565b90600052602060002090601f01602090048101928261457b57600085556145c2565b82601f1061459457805160ff19168380011785556145c2565b828001600101855582156145c2579182015b828111156145c15782518255916020019190600101906145a6565b5b5090506145cf919061462c565b5090565b6040518060c001604052806145e6614649565b8152602001600060ff168152602001600060ff168152602001600060ff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b8082111561464557600081600090555060010161462d565b5090565b604051806040016040528060608152602001600063ffffffff1681525090565b600061467c61467784616b83565b616b5e565b9050808382526020820190508285602086028201111561469f5761469e6172a6565b5b60005b858110156146cf57816146b58882614a7b565b8452602084019350602083019250506001810190506146a2565b5050509392505050565b60006146ec6146e784616b83565b616b5e565b9050808382526020820190508285602086028201111561470f5761470e6172a6565b5b60005b8581101561473f57816147258882614a90565b845260208401935060208301925050600181019050614712565b5050509392505050565b600061475c61475784616baf565b616b5e565b9050808382526020820190508285602086028201111561477f5761477e6172a6565b5b60005b858110156147af57816147958882614d17565b845260208401935060208301925050600181019050614782565b5050509392505050565b60006147cc6147c784616bdb565b616b5e565b905080838252602082019050828560208602820111156147ef576147ee6172a6565b5b60005b8581101561481f57816148058882614d2c565b8452602084019350602083019250506001810190506147f2565b5050509392505050565b600061483c61483784616c07565b616b5e565b9050808382526020820190508285602086028201111561485f5761485e6172a6565b5b60005b858110156148ad57815167ffffffffffffffff81111561488557614884617297565b5b8086016148928982614d41565b85526020850194506020840193505050600181019050614862565b5050509392505050565b60006148ca6148c584616c33565b616b5e565b905080838252602082019050828560208602820111156148ed576148ec6172a6565b5b60005b8581101561493b57813567ffffffffffffffff81111561491357614912617297565b5b8086016149208982614d6f565b855260208501945060208401935050506001810190506148f0565b5050509392505050565b600061495861495384616c5f565b616b5e565b9050808382526020820190508285602086028201111561497b5761497a6172a6565b5b60005b858110156149ab5781614991888261517f565b84526020840193506020830192505060018101905061497e565b5050509392505050565b60006149c86149c384616c8b565b616b5e565b9050828152602081018484840111156149e4576149e36172ab565b5b6149ef848285617097565b509392505050565b6000614a0a614a0584616c8b565b616b5e565b905082815260208101848484011115614a2657614a256172ab565b5b614a318482856170a6565b509392505050565b6000614a4c614a4784616cbc565b616b5e565b905082815260208101848484011115614a6857614a676172ab565b5b614a738482856170a6565b509392505050565b600081359050614a8a81617974565b92915050565b600081519050614a9f81617974565b92915050565b600082601f830112614aba57614ab9617297565b5b8135614aca848260208601614669565b91505092915050565b600082601f830112614ae857614ae7617297565b5b8151614af88482602086016146d9565b91505092915050565b600082601f830112614b1657614b15617297565b5b8151614b26848260208601614749565b91505092915050565b600082601f830112614b4457614b43617297565b5b8151614b548482602086016147b9565b91505092915050565b600082601f830112614b7257614b71617297565b5b8151614b82848260208601614829565b91505092915050565b600082601f830112614ba057614b9f617297565b5b8135614bb08482602086016148b7565b91505092915050565b600082601f830112614bce57614bcd617297565b5b8151614bde848260208601614945565b91505092915050565b600081359050614bf68161798b565b92915050565b600081519050614c0b8161798b565b92915050565b600081359050614c20816179a2565b92915050565b600081519050614c35816179a2565b92915050565b60008083601f840112614c5157614c50617297565b5b8235905067ffffffffffffffff811115614c6e57614c6d617292565b5b602083019150836001820283011115614c8a57614c896172a6565b5b9250929050565b600082601f830112614ca657614ca5617297565b5b8135614cb68482602086016149b5565b91505092915050565b600082601f830112614cd457614cd3617297565b5b8151614ce48482602086016149f7565b91505092915050565b600081359050614cfc816179b9565b92915050565b600081519050614d11816179d0565b92915050565b600081519050614d26816179e1565b92915050565b600081519050614d3b816179f8565b92915050565b600082601f830112614d5657614d55617297565b5b8151614d66848260208601614a39565b91505092915050565b600060808284031215614d8557614d8461729c565b5b614d8f6080616b5e565b90506000614d9f8482850161512b565b6000830152506020614db38482850161512b565b6020830152506040614dc784828501614c11565b604083015250606082013567ffffffffffffffff811115614deb57614dea6172a1565b5b614df784828501614c91565b60608301525092915050565b600060408284031215614e1957614e1861729c565b5b614e236040616b5e565b9050600082013567ffffffffffffffff811115614e4357614e426172a1565b5b614e4f84828501614c91565b6000830152506020614e6384828501615140565b60208301525092915050565b600060408284031215614e8557614e8461729c565b5b614e8f6040616b5e565b9050600082015167ffffffffffffffff811115614eaf57614eae6172a1565b5b614ebb84828501614cbf565b6000830152506020614ecf84828501615155565b60208301525092915050565b600060c08284031215614ef157614ef061729c565b5b614efb60c0616b5e565b9050600082013567ffffffffffffffff811115614f1b57614f1a6172a1565b5b614f2784828501614e03565b6000830152506020614f3b84828501615194565b6020830152506040614f4f84828501615194565b6040830152506060614f6384828501615194565b6060830152506080614f778482850161516a565b60808301525060a0614f8b8482850161516a565b60a08301525092915050565b600060c08284031215614fad57614fac61729c565b5b614fb760c0616b5e565b9050600082015167ffffffffffffffff811115614fd757614fd66172a1565b5b614fe384828501614e6f565b6000830152506020614ff7848285016151a9565b602083015250604061500b848285016151a9565b604083015250606061501f848285016151a9565b60608301525060806150338482850161517f565b60808301525060a06150478482850161517f565b60a08301525092915050565b6000604082840312156150695761506861729c565b5b6150736040616b5e565b9050600061508384828501614be7565b600083015250602082013567ffffffffffffffff8111156150a7576150a66172a1565b5b6150b384828501614edb565b60208301525092915050565b6000604082840312156150d5576150d461729c565b5b6150df6040616b5e565b905060006150ef84828501614bfc565b600083015250602082015167ffffffffffffffff811115615113576151126172a1565b5b61511f84828501614f97565b60208301525092915050565b60008135905061513a81617a0f565b92915050565b60008135905061514f81617a26565b92915050565b60008151905061516481617a26565b92915050565b60008135905061517981617a3d565b92915050565b60008151905061518e81617a3d565b92915050565b6000813590506151a381617a54565b92915050565b6000815190506151b881617a54565b92915050565b6000602082840312156151d4576151d36172b5565b5b60006151e284828501614a7b565b91505092915050565b600060208284031215615201576152006172b5565b5b600082013567ffffffffffffffff81111561521f5761521e6172b0565b5b61522b84828501614aa5565b91505092915050565b60006020828403121561524a576152496172b5565b5b600082015167ffffffffffffffff811115615268576152676172b0565b5b61527484828501614ad3565b91505092915050565b600060208284031215615293576152926172b5565b5b600082015167ffffffffffffffff8111156152b1576152b06172b0565b5b6152bd84828501614b01565b91505092915050565b6000602082840312156152dc576152db6172b5565b5b600082015167ffffffffffffffff8111156152fa576152f96172b0565b5b61530684828501614b2f565b91505092915050565b600060208284031215615325576153246172b5565b5b600082015167ffffffffffffffff811115615343576153426172b0565b5b61534f84828501614b5d565b91505092915050565b6000806040838503121561536f5761536e6172b5565b5b600083013567ffffffffffffffff81111561538d5761538c6172b0565b5b61539985828601614b8b565b92505060206153aa85828601614be7565b9150509250929050565b6000602082840312156153ca576153c96172b5565b5b600082015167ffffffffffffffff8111156153e8576153e76172b0565b5b6153f484828501614bb9565b91505092915050565b600060208284031215615413576154126172b5565b5b600061542184828501614bfc565b91505092915050565b6000602082840312156154405761543f6172b5565b5b600061544e84828501614c26565b91505092915050565b60006020828403121561546d5761546c6172b5565b5b600082013567ffffffffffffffff81111561548b5761548a6172b0565b5b61549784828501614c91565b91505092915050565b6000602082840312156154b6576154b56172b5565b5b600082015167ffffffffffffffff8111156154d4576154d36172b0565b5b6154e084828501614cbf565b91505092915050565b6000602082840312156154ff576154fe6172b5565b5b600061550d84828501614ced565b91505092915050565b60006020828403121561552c5761552b6172b5565b5b600061553a84828501614d02565b91505092915050565b6000806040838503121561555a576155596172b5565b5b600061556885828601614d02565b925050602083015167ffffffffffffffff811115615589576155886172b0565b5b61559585828601614d41565b9150509250929050565b6000602082840312156155b5576155b46172b5565b5b60006155c384828501614d17565b91505092915050565b6000602082840312156155e2576155e16172b5565b5b60006155f084828501614d2c565b91505092915050565b60006020828403121561560f5761560e6172b5565b5b600082015167ffffffffffffffff81111561562d5761562c6172b0565b5b61563984828501614d41565b91505092915050565b600060208284031215615658576156576172b5565b5b600082013567ffffffffffffffff811115615676576156756172b0565b5b61568284828501614edb565b91505092915050565b6000602082840312156156a1576156a06172b5565b5b600082013567ffffffffffffffff8111156156bf576156be6172b0565b5b6156cb84828501615053565b91505092915050565b6000602082840312156156ea576156e96172b5565b5b600082015167ffffffffffffffff811115615708576157076172b0565b5b615714848285016150bf565b91505092915050565b600060208284031215615733576157326172b5565b5b60006157418482850161512b565b91505092915050565b60008060008060608587031215615764576157636172b5565b5b60006157728782880161512b565b945050602061578387828801614c11565b935050604085013567ffffffffffffffff8111156157a4576157a36172b0565b5b6157b087828801614c3b565b925092505092959194509250565b6000806000806000608086880312156157da576157d96172b5565b5b60006157e88882890161512b565b95505060206157f98882890161512b565b945050604061580a88828901614c11565b935050606086013567ffffffffffffffff81111561582b5761582a6172b0565b5b61583788828901614c3b565b92509250509295509295909350565b60006020828403121561585c5761585b6172b5565b5b600061586a8482850161517f565b91505092915050565b600061587f83836158e7565b60208301905092915050565b60006158978383615d0e565b60208301905092915050565b60006158af8383615d2c565b60208301905092915050565b60006158c78383615d4a565b905092915050565b60006158db8383616506565b60208301905092915050565b6158f081616f56565b82525050565b6158ff81616f56565b82525050565b600061591082616d52565b61591a8185616de0565b935061592583616ced565b8060005b8381101561595657815161593d8882615873565b975061594883616d9f565b925050600181019050615929565b5085935050505092915050565b600061596e82616d5d565b6159788185616df1565b935061598383616cfd565b8060005b838110156159b457815161599b888261588b565b97506159a683616dac565b925050600181019050615987565b5085935050505092915050565b60006159cc82616d68565b6159d68185616e02565b93506159e183616d0d565b8060005b83811015615a125781516159f988826158a3565b9750615a0483616db9565b9250506001810190506159e5565b5085935050505092915050565b6000615a2a82616d73565b615a348185616e13565b935083602082028501615a4685616d1d565b8060005b85811015615a825784840389528151615a6385826158bb565b9450615a6e83616dc6565b925060208a01995050600181019050615a4a565b50829750879550505050505092915050565b6000615a9f82616d7e565b615aa98185616e24565b9350615ab483616d2d565b8060005b83811015615ae5578151615acc88826158cf565b9750615ad783616dd3565b925050600181019050615ab8565b5085935050505092915050565b615afb81616f68565b82525050565b615b0a81616f68565b82525050565b615b1981616f68565b82525050565b615b2881616f74565b82525050565b615b3781616f74565b82525050565b6000615b4882616d89565b615b528185616e35565b9350615b628185602086016170a6565b615b6b816172ba565b840191505092915050565b6000615b8182616d89565b615b8b8185616e46565b9350615b9b8185602086016170a6565b615ba4816172ba565b840191505092915050565b6000615bba82616d89565b615bc48185616e57565b9350615bd48185602086016170a6565b615bdd816172ba565b840191505092915050565b6000615bf382616d89565b615bfd8185616e68565b9350615c0d8185602086016170a6565b615c16816172ba565b840191505092915050565b6000615c2c82616d89565b615c368185616e79565b9350615c468185602086016170a6565b80840191505092915050565b60008154615c5f816170d9565b615c698186616e57565b94506001821660008114615c845760018114615c9657615cc9565b60ff1983168652602086019350615cc9565b615c9f85616d3d565b60005b83811015615cc157815481890152600182019150602081019050615ca2565b808801955050505b50505092915050565b615cdb8161702b565b82525050565b615cea8161703d565b82525050565b615cf98161704f565b82525050565b615d0881617061565b82525050565b615d1781616fb6565b82525050565b615d2681616fb6565b82525050565b615d3581616fc3565b82525050565b615d4481616fc3565b82525050565b6000615d5582616d94565b615d5f8185616e84565b9350615d6f8185602086016170a6565b615d78816172ba565b840191505092915050565b6000615d8e82616d94565b615d988185616e95565b9350615da88185602086016170a6565b615db1816172ba565b840191505092915050565b6000615dc9602c83616e95565b9150615dd4826172d8565b604082019050919050565b6000615dec602983616e95565b9150615df782617327565b604082019050919050565b6000615e0f602e83616e95565b9150615e1a82617376565b604082019050919050565b6000615e32601b83616e95565b9150615e3d826173c5565b602082019050919050565b6000615e55603183616e95565b9150615e60826173ee565b604082019050919050565b6000615e78602c83616e95565b9150615e838261743d565b604082019050919050565b6000615e9b602d83616e95565b9150615ea68261748c565b604082019050919050565b6000615ebe602f83616e95565b9150615ec9826174db565b604082019050919050565b6000615ee1602f83616e95565b9150615eec8261752a565b604082019050919050565b6000615f04603f83616e95565b9150615f0f82617579565b604082019050919050565b6000615f27604283616e95565b9150615f32826175c8565b606082019050919050565b6000615f4a602a83616e95565b9150615f558261763d565b604082019050919050565b6000615f6d602d83616e95565b9150615f788261768c565b604082019050919050565b6000615f90603a83616e95565b9150615f9b826176db565b604082019050919050565b6000615fb3603483616e95565b9150615fbe8261772a565b604082019050919050565b6000615fd6602b83616e95565b9150615fe182617779565b604082019050919050565b6000615ff9602e83616e95565b9150616004826177c8565b604082019050919050565b600061601c602f83616e95565b915061602782617817565b604082019050919050565b600061603f603183616e95565b915061604a82617866565b604082019050919050565b600060408301600083015184820360008601526160728282615b3d565b915050602083015161608760208601826164e8565b508091505092915050565b600060408301600083015184820360008601526160af8282615be8565b91505060208301516160c460208601826164f7565b508091505092915050565b600060c08301600083015184820360008601526160ec8282616055565b91505060208301516161016020860182616533565b5060408301516161146040860182616533565b5060608301516161276060860182616533565b50608083015161613a6080860182616506565b5060a083015161614d60a0860182616506565b508091505092915050565b600060c08301600083015184820360008601526161758282616092565b915050602083015161618a6020860182616542565b50604083015161619d6040860182616542565b5060608301516161b06060860182616542565b5060808301516161c36080860182616524565b5060a08301516161d660a0860182616524565b508091505092915050565b600060c08301600083015184820360008601526161fe8282616092565b91505060208301516162136020860182616542565b5060408301516162266040860182616542565b5060608301516162396060860182616542565b50608083015161624c6080860182616524565b5060a083015161625f60a0860182616524565b508091505092915050565b600060e08301600083015161628260008601826162ba565b50602083015184820360a086015261629a828261638a565b91505060408301516162af60c08601826158e7565b508091505092915050565b60a0820160008201516162d06000850182615ce1565b5060208201516162e360208501826158e7565b5060408201516162f66040850182615b1f565b50606082015161630960608501826164ca565b50608082015161631c60808501826164ca565b50505050565b60a0820160008201516163386000850182615ce1565b50602082015161634b60208501826158e7565b50604082015161635e6040850182615b1f565b50606082015161637160608501826164ca565b50608082015161638460808501826164ca565b50505050565b60006080830160008301516163a260008601826158e7565b5060208301516163b560208601826164ca565b5060408301516163c86040860182615b1f565b50606083015184820360608601526163e08282615b3d565b9150508091505092915050565b600060808301600083015161640560008601826158e7565b50602083015161641860208601826164ca565b50604083015161642b6040860182615b1f565b50606083015184820360608601526164438282615b3d565b9150508091505092915050565b60006040830160008301516164686000860182615af2565b506020830151848203602086015261648082826160cf565b9150508091505092915050565b60006040830160008301516164a56000860182615b10565b50602083015184820360208601526164bd82826161e1565b9150508091505092915050565b6164d381616ff0565b82525050565b6164e281616ff0565b82525050565b6164f181616ffa565b82525050565b61650081616ffa565b82525050565b61650f8161700a565b82525050565b61651e8161700a565b82525050565b61652d8161700a565b82525050565b61653c8161701e565b82525050565b61654b8161701e565b82525050565b600061655d8284615c21565b915081905092915050565b600060208201905061657d60008301846158f6565b92915050565b6000602082019050818103600083015261659d8184615905565b905092915050565b600060208201905081810360008301526165bf8184615963565b905092915050565b600060208201905081810360008301526165e181846159c1565b905092915050565b600060208201905081810360008301526166038184615a1f565b905092915050565b600060208201905081810360008301526166258184615a94565b905092915050565b60006020820190506166426000830184615b01565b92915050565b600060208201905061665d6000830184615b2e565b92915050565b6000602082019050818103600083015261667d8184615baf565b905092915050565b6000602082019050818103600083015261669f8184615b76565b905092915050565b600060208201905081810360008301526166c18184615c52565b905092915050565b60006020820190506166de6000830184615cd2565b92915050565b60006020820190506166f96000830184615cf0565b92915050565b60006040820190506167146000830185615cf0565b81810360208301526167268184615d83565b90509392505050565b60006020820190506167446000830184615cff565b92915050565b600060208201905061675f6000830184615d1d565b92915050565b600060208201905061677a6000830184615d3b565b92915050565b6000602082019050818103600083015261679a8184615d83565b905092915050565b600060208201905081810360008301526167bb81615dbc565b9050919050565b600060208201905081810360008301526167db81615ddf565b9050919050565b600060208201905081810360008301526167fb81615e25565b9050919050565b6000602082019050818103600083015261681b81615e48565b9050919050565b6000602082019050818103600083015261683b81615e8e565b9050919050565b6000602082019050818103600083015261685b81615eb1565b9050919050565b6000602082019050818103600083015261687b81615ed4565b9050919050565b6000602082019050818103600083015261689b81615ef7565b9050919050565b600060208201905081810360008301526168bb81615f1a565b9050919050565b600060208201905081810360008301526168db81615f3d565b9050919050565b600060208201905081810360008301526168fb81615f83565b9050919050565b6000602082019050818103600083015261691b81615fa6565b9050919050565b6000602082019050818103600083015261693b81615fc9565b9050919050565b6000602082019050818103600083015261695b8161600f565b9050919050565b6000602082019050818103600083015261697b81616032565b9050919050565b6000602082019050818103600083015261699c8184616158565b905092915050565b600060208201905081810360008301526169be818461626a565b905092915050565b600060a0820190506169db6000830184616322565b92915050565b600060208201905081810360008301526169fb81846163ed565b905092915050565b60006020820190508181036000830152616a1d818461648d565b905092915050565b60006020820190508181036000830152616a3f8184616450565b905092915050565b6000602082019050616a5c60008301846164d9565b92915050565b6000604082019050616a7760008301856164d9565b616a8460208301846158f6565b9392505050565b6000604082019050616aa060008301846164d9565b8181036020830152616ab181615e02565b905092915050565b6000604082019050616ace60008301846164d9565b8181036020830152616adf81615e6b565b905092915050565b6000604082019050616afc60008301846164d9565b8181036020830152616b0d81615f60565b905092915050565b6000604082019050616b2a60008301846164d9565b8181036020830152616b3b81615fec565b905092915050565b6000602082019050616b586000830184616515565b92915050565b6000616b68616b79565b9050616b74828261710b565b919050565b6000604051905090565b600067ffffffffffffffff821115616b9e57616b9d617241565b5b602082029050602081019050919050565b600067ffffffffffffffff821115616bca57616bc9617241565b5b602082029050602081019050919050565b600067ffffffffffffffff821115616bf657616bf5617241565b5b602082029050602081019050919050565b600067ffffffffffffffff821115616c2257616c21617241565b5b602082029050602081019050919050565b600067ffffffffffffffff821115616c4e57616c4d617241565b5b602082029050602081019050919050565b600067ffffffffffffffff821115616c7a57616c79617241565b5b602082029050602081019050919050565b600067ffffffffffffffff821115616ca657616ca5617241565b5b616caf826172ba565b9050602081019050919050565b600067ffffffffffffffff821115616cd757616cd6617241565b5b616ce0826172ba565b9050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000616eb182616ff0565b9150616ebc83616ff0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115616ef157616ef0617185565b5b828201905092915050565b6000616f0782616ff0565b9150616f1283616ff0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615616f4b57616f4a617185565b5b828202905092915050565b6000616f6182616fd0565b9050919050565b60008115159050919050565b6000819050919050565b6000616f8982616f56565b9050919050565b6000819050616f9e8261794b565b919050565b6000819050616fb182617960565b919050565b600081600f0b9050919050565b60008160030b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b600061703682617073565b9050919050565b600061704882617073565b9050919050565b600061705a82616f90565b9050919050565b600061706c82616fa3565b9050919050565b600061707e82617085565b9050919050565b600061709082616fd0565b9050919050565b82818337600083830152505050565b60005b838110156170c45780820151818401526020810190506170a9565b838111156170d3576000848401525b50505050565b600060028204905060018216806170f157607f821691505b60208210811415617105576171046171e3565b5b50919050565b617114826172ba565b810181811067ffffffffffffffff8211171561713357617132617241565b5b80604052505050565b600061714782616ff0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561717a57617179617185565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d111561728f5760046000803e61728c6000516172cb565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f5769746e657452657175657374426f617264547275737461626c65426173653a60008201527f206e756c6c207363726970740000000000000000000000000000000000000000602082015250565b7f5769746e657452657175657374426f6172643a206e6f207472616e736665727360008201527f2061636365707465640000000000000000000000000000000000000000000000602082015250565b7f5769746e657452657175657374426f617264547275737461626c65426173653a60008201527f206261642074696d657374616d70000000000000000000000000000000000000602082015250565b7f5769746e6574426f617264446174613a206f6e6c79206f776e65720000000000600082015250565b7f5769746e657452657175657374426f617264547275737461626c65446566617560008201527f6c743a206261642074696d657374616d70000000000000000000000000000000602082015250565b7f5769746e657452657175657374426f617264547275737461626c65426173653a60008201527f2062616420717565727949640000000000000000000000000000000000000000602082015250565b7f5769746e657452657175657374426f617264547275737461626c65426173653a60008201527f20656d7074792073637269707400000000000000000000000000000000000000602082015250565b7f5769746e657452657175657374426f617264547275737461626c65426173653a60008201527f206f6e6c79207265717565737465720000000000000000000000000000000000602082015250565b7f5769746e657452657175657374426f617264547275737461626c65426173653a60008201527f2072657761726420746f6f206c6f770000000000000000000000000000000000602082015250565b7f5769746e657452657175657374426f617264547275737461626c65426173653a60008201527f2062797465636f6465206368616e67656420616674657220706f7374696e6700602082015250565b7f5769746e657452657175657374426f617264547275737461626c65446566617560008201527f6c743a205769746e65742064725478486173682063616e6e6f74206265207a6560208201527f726f000000000000000000000000000000000000000000000000000000000000604082015250565b7f5769746e6574426f6172644461746141434c733a20756e617574686f72697a6560008201527f64207265706f7274657200000000000000000000000000000000000000000000602082015250565b7f5769746e657452657175657374426f617264547275737461626c65426173653a60008201527f2062616420647254784861736800000000000000000000000000000000000000602082015250565b7f5769746e657452657175657374426f617264547275737461626c65446566617560008201527f6c743a20726573756c742063616e6e6f7420626520656d707479000000000000602082015250565b7f5769746e657452657175657374426f617264547275737461626c65426173653a60008201527f20616c726561647920696e697469616c697a6564000000000000000000000000602082015250565b7f5769746e657452657175657374426f617264547275737461626c65426173653a60008201527f206f6e6c79206f776e6572000000000000000000000000000000000000000000602082015250565b7f5769746e657452657175657374426f617264547275737461626c65426173653a60008201527f206261642063626f724279746573000000000000000000000000000000000000602082015250565b7f5769746e657452657175657374426f617264547275737461626c65426173653a60008201527f206e6f742079657420706f737465640000000000000000000000000000000000602082015250565b7f5769746e657452657175657374426f61726455706772616461626c654261736560008201527f3a206e6f7420696d706c656d656e746564000000000000000000000000000000602082015250565b600060443d10156178c557617948565b6178cd616b79565b60043d036004823e80513d602482011167ffffffffffffffff821117156178f5575050617948565b808201805167ffffffffffffffff8111156179135750505050617948565b80602083010160043d038501811115617930575050505050617948565b61793f8260200185018661710b565b82955050505050505b90565b610100811061795d5761795c6171b4565b5b50565b60048110617971576179706171b4565b5b50565b61797d81616f56565b811461798857600080fd5b50565b61799481616f68565b811461799f57600080fd5b50565b6179ab81616f74565b81146179b657600080fd5b50565b6179c281616f7e565b81146179cd57600080fd5b50565b61010081106179de57600080fd5b50565b6179ea81616fb6565b81146179f557600080fd5b50565b617a0181616fc3565b8114617a0c57600080fd5b50565b617a1881616ff0565b8114617a2357600080fd5b50565b617a2f81616ffa565b8114617a3a57600080fd5b50565b617a468161700a565b8114617a5157600080fd5b50565b617a5d8161701e565b8114617a6857600080fd5b5056fe5769746e6574426f617264446174613a206e6f7420696e2044656c65746564207374617475735769746e6574426f617264446174613a206e6f7420696e20506f73746564207374617475735769746e6574426f617264446174613a206e6f7420696e205265706f72746564207374617475735769746e657452657175657374426f617264547275737461626c65426173653a206661696c696e6720617373657274a26469706673582212202626e20c29ec4ce25474ec6cb7a1ceb7b8c91cb224f916654f83066eda96301464736f6c63430008070033",
  "linkReferences": {
    "witnet-solidity-bridge/contracts/libs/WitnetParserLib.sol": {
      "WitnetParserLib": [
        {
          "length": 20,
          "start": 4587
        },
        {
          "length": 20,
          "start": 4738
        },
        {
          "length": 20,
          "start": 4889
        },
        {
          "length": 20,
          "start": 5360
        },
        {
          "length": 20,
          "start": 5511
        },
        {
          "length": 20,
          "start": 6211
        },
        {
          "length": 20,
          "start": 8156
        },
        {
          "length": 20,
          "start": 9887
        },
        {
          "length": 20,
          "start": 12506
        },
        {
          "length": 20,
          "start": 12692
        },
        {
          "length": 20,
          "start": 13571
        },
        {
          "length": 20,
          "start": 14351
        },
        {
          "length": 20,
          "start": 14533
        },
        {
          "length": 20,
          "start": 15320
        },
        {
          "length": 20,
          "start": 15519
        },
        {
          "length": 20,
          "start": 15808
        },
        {
          "length": 20,
          "start": 15966
        },
        {
          "length": 20,
          "start": 16263
        },
        {
          "length": 20,
          "start": 16599
        }
      ]
    }
  },
  "deployedLinkReferences": {
    "witnet-solidity-bridge/contracts/libs/WitnetParserLib.sol": {
      "WitnetParserLib": [
        {
          "length": 20,
          "start": 3711
        },
        {
          "length": 20,
          "start": 3862
        },
        {
          "length": 20,
          "start": 4013
        },
        {
          "length": 20,
          "start": 4484
        },
        {
          "length": 20,
          "start": 4635
        },
        {
          "length": 20,
          "start": 5335
        },
        {
          "length": 20,
          "start": 7280
        },
        {
          "length": 20,
          "start": 9011
        },
        {
          "length": 20,
          "start": 11630
        },
        {
          "length": 20,
          "start": 11816
        },
        {
          "length": 20,
          "start": 12695
        },
        {
          "length": 20,
          "start": 13475
        },
        {
          "length": 20,
          "start": 13657
        },
        {
          "length": 20,
          "start": 14444
        },
        {
          "length": 20,
          "start": 14643
        },
        {
          "length": 20,
          "start": 14932
        },
        {
          "length": 20,
          "start": 15090
        },
        {
          "length": 20,
          "start": 15387
        },
        {
          "length": 20,
          "start": 15723
        }
      ]
    }
  }
}
