{
  "_format": "hh-sol-artifact-1",
  "contractName": "WitnetDecoderLib",
  "sourceName": "witnet-solidity-bridge/contracts/libs/WitnetDecoderLib.sol",
  "abi": [
    {
      "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": "decodeBool",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "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": "decodeBytes",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "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": "decodeBytes32",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "_bytes32",
          "type": "bytes32"
        }
      ],
      "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": "decodeFixed16",
      "outputs": [
        {
          "internalType": "int32",
          "name": "",
          "type": "int32"
        }
      ],
      "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": "decodeFixed16Array",
      "outputs": [
        {
          "internalType": "int32[]",
          "name": "",
          "type": "int32[]"
        }
      ],
      "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": "decodeInt128",
      "outputs": [
        {
          "internalType": "int128",
          "name": "",
          "type": "int128"
        }
      ],
      "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": "decodeInt128Array",
      "outputs": [
        {
          "internalType": "int128[]",
          "name": "",
          "type": "int128[]"
        }
      ],
      "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": "decodeString",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "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": "decodeStringArray",
      "outputs": [
        {
          "internalType": "string[]",
          "name": "",
          "type": "string[]"
        }
      ],
      "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": "decodeUint64",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "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": "decodeUint64Array",
      "outputs": [
        {
          "internalType": "uint64[]",
          "name": "",
          "type": "uint64[]"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            },
            {
              "internalType": "uint32",
              "name": "cursor",
              "type": "uint32"
            }
          ],
          "internalType": "struct Witnet.Buffer",
          "name": "_buffer",
          "type": "tuple"
        }
      ],
      "name": "valueFromBuffer",
      "outputs": [
        {
          "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": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_cborBytes",
          "type": "bytes"
        }
      ],
      "name": "valueFromBytes",
      "outputs": [
        {
          "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": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "bytecode": "0x613c0d610053600b82828239805160001a607314610046577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100d95760003560e01c806394863ea411610096578063c5e88ff211610070578063c5e88ff21461028e578063dfca5d34146102be578063e67c5bd1146102ee578063f8a597d31461031e576100d9565b806394863ea4146101fe5780639eee60ca1461022e578063bb6ef6cf1461025e576100d9565b806308c05c33146100de5780633380d8161461010e578063531f4ba71461013e5780637a8acab11461016e5780637f3fb7ca1461019e5780638138799a146101ce575b600080fd5b6100f860048036038101906100f39190611d88565b61034e565b60405161010591906125cc565b60405180910390f35b61012860048036038101906101239190611d88565b6103f2565b6040516101359190612529565b60405180910390f35b61015860048036038101906101539190611d88565b61058a565b604051610165919061254b565b60405180910390f35b61018860048036038101906101839190611d88565b610722565b60405161019591906128e3565b60405180910390f35b6101b860048036038101906101b39190611d3f565b610786565b6040516101c591906128c1565b60405180910390f35b6101e860048036038101906101e39190611d88565b6108d8565b6040516101f59190612624565b60405180910390f35b61021860048036038101906102139190611d88565b610982565b6040516102259190612609565b60405180910390f35b61024860048036038101906102439190611d88565b610a52565b60405161025591906125b1565b60405180910390f35b61027860048036038101906102739190611d88565b610b4f565b60405161028591906125e7565b60405180910390f35b6102a860048036038101906102a39190611d88565b610c95565b6040516102b5919061256d565b60405180910390f35b6102d860048036038101906102d39190611cf6565b610e29565b6040516102e591906128c1565b60405180910390f35b61030860048036038101906103039190611d88565b610e62565b604051610315919061263f565b60405180910390f35b61033860048036038101906103339190611d88565b610f62565b604051610345919061258f565b60405180910390f35b60008061035a83610b4f565b90506000602082511161036e578151610371565b60205b905060005b818110156103ea5760088161038b9190612f40565b60ff60f81b8483815181106103a3576103a2613346565b5b602001015160f81c60f81b167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c8417935080806103e2906131e6565b915050610376565b505050919050565b60606004826040015160ff161461043e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043590612761565b60405180910390fd5b600061045283600001518460600151611108565b905067ffffffffffffffff80168167ffffffffffffffff16106104aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a190612721565b60405180910390fd5b60008167ffffffffffffffff1667ffffffffffffffff8111156104d0576104cf613375565b5b6040519080825280602002602001820160405280156104fe5781602001602082028036833780820191505090505b50905060005b8267ffffffffffffffff168167ffffffffffffffff16101561057f57600061052f8660000151610786565b905061053a81610982565b838367ffffffffffffffff168151811061055757610556613346565b5b6020026020010190600f0b9081600f0b815250505080806105779061325c565b915050610504565b508092505050919050565b60606004826040015160ff16146105d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105cd90612761565b60405180910390fd5b60006105ea83600001518460600151611108565b905067ffffffffffffffff80168167ffffffffffffffff1610610642576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063990612721565b60405180910390fd5b60008167ffffffffffffffff1667ffffffffffffffff81111561066857610667613375565b5b6040519080825280602002602001820160405280156106965781602001602082028036833780820191505090505b50905060005b8267ffffffffffffffff168167ffffffffffffffff1610156107175760006106c78660000151610786565b90506106d2816108d8565b838367ffffffffffffffff16815181106106ef576106ee613346565b5b602002602001019060030b908160030b8152505050808061070f9061325c565b91505061069c565b508092505050919050565b600080826040015160ff161461076d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610764906126a1565b60405180910390fd5b61077f82600001518360600151611108565b9050919050565b61078e611aa6565b6000826000015151116107d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cd906127a1565b60405180910390fd5b60008060ff905060008067ffffffffffffffff90506000600190505b801561083a57610801876111fb565b945060058560ff16901c9350601f8516925060068460ff161415610830576108298784611108565b9150610835565b600090505b6107f2565b60078460ff161115610881576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610878906127e1565b60405180910390fd5b6040518060c001604052808881526020018660ff1681526020018560ff1681526020018460ff168152602001600067ffffffffffffffff1681526020018367ffffffffffffffff1681525095505050505050919050565b60006007826040015160ff1614610924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091b90612681565b60405180910390fd5b6019826060015160ff161461096e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096590612881565b60405180910390fd5b61097b826000015161129c565b9050919050565b60006001826040015160ff1614156109e85760006109a883600001518460600151611108565b90508067ffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6109e09190612f9a565b915050610a4d565b6000826040015160ff161415610a1257610a0182610722565b67ffffffffffffffff169050610a4d565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4490612841565b60405180910390fd5b919050565b6000610a6682600001518360600151611108565b826080019067ffffffffffffffff16908167ffffffffffffffff16815250506007826040015160ff1614610acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac690612741565b60405180910390fd5b6014826080015167ffffffffffffffff161415610aef5760009050610b4a565b6015826080015167ffffffffffffffff161415610b0f5760019050610b4a565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4190612801565b60405180910390fd5b919050565b6060610b6382600001518360600151611108565b826080019067ffffffffffffffff16908167ffffffffffffffff168152505063ffffffff8016826080015167ffffffffffffffff161415610c725760606000610bb4846000015185604001516113af565b905063ffffffff80168163ffffffff161015610c685781610be282866000015161146590919063ffffffff16565b604051602001610bf39291906124dd565b6040516020818303038152906040529150610c16846000015185604001516113af565b905063ffffffff80168163ffffffff161015610c675781610c4482866000015161146590919063ffffffff16565b604051602001610c559291906124dd565b60405160208183030381529060405291505b5b8192505050610c90565b610c8d8260800151836000015161146590919063ffffffff16565b90505b919050565b60606004826040015160ff1614610ce1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd890612861565b60405180910390fd5b6000610cf583600001518460600151611108565b905067ffffffffffffffff80168167ffffffffffffffff1610610d4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4490612721565b60405180910390fd5b60008167ffffffffffffffff1667ffffffffffffffff811115610d7357610d72613375565b5b604051908082528060200260200182016040528015610da657816020015b6060815260200190600190039081610d915790505b50905060005b8267ffffffffffffffff168167ffffffffffffffff161015610e1e576000610dd78660000151610786565b9050610de281610e62565b838367ffffffffffffffff1681518110610dff57610dfe613346565b5b6020026020010181905250508080610e169061325c565b915050610dac565b508092505050919050565b610e31611aa6565b60006040518060400160405280848152602001600063ffffffff168152509050610e5a81610786565b915050919050565b6060610e7682600001518360600151611108565b826080019067ffffffffffffffff16908167ffffffffffffffff168152505067ffffffffffffffff8016826080015167ffffffffffffffff161415610f4857606060005b80610f3e576000610ed3856000015186604001516113af565b905067ffffffffffffffff80168167ffffffffffffffff161015610f335782610f0c8660000151600484610f079190612ba8565b611579565b604051602001610f1d9291906124dd565b6040516020818303038152906040529250610f38565b600191505b50610eba565b8192505050610f5d565b610f5a82600001518360800151611579565b90505b919050565b60606004826040015160ff1614610fae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa5906127c1565b60405180910390fd5b6000610fc283600001518460600151611108565b905067ffffffffffffffff80168167ffffffffffffffff161061101a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101190612721565b60405180910390fd5b60008167ffffffffffffffff1667ffffffffffffffff8111156110405761103f613375565b5b60405190808252806020026020018201604052801561106e5781602001602082028036833780820191505090505b50905060005b8267ffffffffffffffff168167ffffffffffffffff1610156110fd57600061109f8660000151610786565b90506110aa81610722565b838367ffffffffffffffff16815181106110c7576110c6613346565b5b602002602001019067ffffffffffffffff16908167ffffffffffffffff16815250505080806110f59061325c565b915050611074565b508092505050919050565b600060188260ff161015611121578160ff1690506111f5565b60188260ff16141561114057611136836111fb565b60ff1690506111f5565b60198260ff16141561116057611155836116d5565b61ffff1690506111f5565b601a8260ff1614156111825761117583611788565b63ffffffff1690506111f5565b601b8260ff16141561119e576111978361183b565b90506111f5565b601f8260ff1614156111ba5767ffffffffffffffff90506111f5565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ec906126e1565b60405180910390fd5b92915050565b60008160200151826000015151808263ffffffff1610611250576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611247906126c1565b60405180910390fd5b600084600001519050600085602001519050600081600184010151905086602001805180919061127f9061322f565b63ffffffff1663ffffffff16815250508095505050505050919050565b6000806112a8836116d5565b61ffff1690506000618000821690506000600f600a617c00851660030b901d6112d1919061301e565b905060006103ff84169050600f8260030b14156112f057610400811790505b6000808360030b1261132e57600a6104008360030b176127108560030b6001901b61131b9190612d4a565b6113259190612d4a565b901d9050611365565b600a8361133a9061329f565b60030b6001901b6127106104008560030b176113569190612d4a565b6113609190612b3e565b901d90505b60008463ffffffff16146113a2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8161139f9190612e61565b90505b8095505050505050919050565b6000806113bb846111fb565b905060ff8160ff1614156113da5767ffffffffffffffff91505061145f565b60006113e985601f8416611108565b905067ffffffffffffffff80168167ffffffffffffffff1610801561141a57508360ff1660058360ff16901c60ff16145b611459576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145090612781565b60405180910390fd5b80925050505b92915050565b606082600001515182846020015161147d9190612b04565b63ffffffff1611156114c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bb90612701565b60405180910390fd5b60008263ffffffff1667ffffffffffffffff8111156114e6576114e5613375565b5b6040519080825280601f01601f1916602001820160405280156115185781602001600182028036833780820191505090505b50905060008363ffffffff161461156f57600084600001519050600085602001519050600080826020850101915060208501905061155d81838963ffffffff166118ee565b611569888860016119ba565b50505050505b8091505092915050565b60608060005b8367ffffffffffffffff168167ffffffffffffffff1610156116ca5760006115a6866111fb565b905060006080821660ff16146116925760e08160ff1610156115f057603f6115cd876111fb565b166006601f831660ff16901b1790506001856115e991906130ca565b9450611691565b60f08160ff16101561163e57603f611607876111fb565b166006603f611615896111fb565b1660ff16901b600c600f841660ff16901b1717905060028561163791906130ca565b9450611690565b603f611649876111fb565b166006603f611657896111fb565b1660ff16901b600c603f61166a8a6111fb565b1660ff16901b6012600f851660ff16901b171717905060038561168d91906130ca565b94505b5b5b82816040516020016116a5929190612501565b60405160208183030381529060405292505080806116c29061325c565b91505061157f565b508091505092915050565b6000600182602001516116e89190612b04565b826000015151808263ffffffff1610611736576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172d906126c1565b60405180910390fd5b60008460000151905060008560200151905060008160028401015190506002876020018181516117669190612b04565b91509063ffffffff16908163ffffffff16815250508095505050505050919050565b60006003826020015161179b9190612b04565b826000015151808263ffffffff16106117e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e0906126c1565b60405180910390fd5b60008460000151905060008560200151905060008160048401015190506004876020018181516118199190612b04565b91509063ffffffff16908163ffffffff16815250508095505050505050919050565b60006007826020015161184e9190612b04565b826000015151808263ffffffff161061189c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611893906126c1565b60405180910390fd5b60008460000151905060008560200151905060008160088401015190506008876020018181516118cc9190612b04565b91509063ffffffff16908163ffffffff16815250508095505050505050919050565b60008111611931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192890612821565b60405180910390fd5b5b60208110611970578151835260208361194b9190612aae565b925060208261195a9190612aae565b91506020816119699190613096565b9050611932565b60008111156119b5576000600182602061198a9190613096565b6101006119979190612c2c565b6119a19190613096565b905080198351168185511681811786525050505b505050565b60008115611a32578263ffffffff168460200151846119d99190612b04565b63ffffffff1611611a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a16906128a1565b60405180910390fd5b836020015183611a2f9190612b04565b92505b8360000151518363ffffffff161115611a80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7790612661565b60405180910390fd5b82846020019063ffffffff16908163ffffffff1681525050836020015190509392505050565b6040518060c00160405280611ab9611aff565b8152602001600060ff168152602001600060ff168152602001600060ff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff1681525090565b604051806040016040528060608152602001600063ffffffff1681525090565b6000611b32611b2d84612923565b6128fe565b905082815260208101848484011115611b4e57611b4d6133b3565b5b611b59848285613173565b509392505050565b600082601f830112611b7657611b756133a4565b5b8135611b86848260208601611b1f565b91505092915050565b600060408284031215611ba557611ba46133a9565b5b611baf60406128fe565b9050600082013567ffffffffffffffff811115611bcf57611bce6133ae565b5b611bdb84828501611b61565b6000830152506020611bef84828501611cb7565b60208301525092915050565b600060c08284031215611c1157611c106133a9565b5b611c1b60c06128fe565b9050600082013567ffffffffffffffff811115611c3b57611c3a6133ae565b5b611c4784828501611b8f565b6000830152506020611c5b84828501611ce1565b6020830152506040611c6f84828501611ce1565b6040830152506060611c8384828501611ce1565b6060830152506080611c9784828501611ccc565b60808301525060a0611cab84828501611ccc565b60a08301525092915050565b600081359050611cc681613b92565b92915050565b600081359050611cdb81613ba9565b92915050565b600081359050611cf081613bc0565b92915050565b600060208284031215611d0c57611d0b6133bd565b5b600082013567ffffffffffffffff811115611d2a57611d296133b8565b5b611d3684828501611b61565b91505092915050565b600060208284031215611d5557611d546133bd565b5b600082013567ffffffffffffffff811115611d7357611d726133b8565b5b611d7f84828501611b8f565b91505092915050565b600060208284031215611d9e57611d9d6133bd565b5b600082013567ffffffffffffffff811115611dbc57611dbb6133b8565b5b611dc884828501611bfb565b91505092915050565b6000611ddd838361208c565b60208301905092915050565b6000611df583836120aa565b60208301905092915050565b6000611e0d83836120f2565b905092915050565b6000611e2183836124a8565b60208301905092915050565b6000611e3882612994565b611e428185612a0a565b9350611e4d83612954565b8060005b83811015611e7e578151611e658882611dd1565b9750611e70836129d6565b925050600181019050611e51565b5085935050505092915050565b6000611e968261299f565b611ea08185612a1b565b9350611eab83612964565b8060005b83811015611edc578151611ec38882611de9565b9750611ece836129e3565b925050600181019050611eaf565b5085935050505092915050565b6000611ef4826129aa565b611efe8185612a2c565b935083602082028501611f1085612974565b8060005b85811015611f4c5784840389528151611f2d8582611e01565b9450611f38836129f0565b925060208a01995050600181019050611f14565b50829750879550505050505092915050565b6000611f69826129b5565b611f738185612a3d565b9350611f7e83612984565b8060005b83811015611faf578151611f968882611e15565b9750611fa1836129fd565b925050600181019050611f82565b5085935050505092915050565b611fc5816130fe565b82525050565b611fd48161310a565b82525050565b6000611fe5826129c0565b611fef8185612a4e565b9350611fff818560208601613182565b612008816133c2565b840191505092915050565b600061201e826129c0565b6120288185612a5f565b9350612038818560208601613182565b612041816133c2565b840191505092915050565b6000612057826129c0565b6120618185612a70565b9350612071818560208601613182565b80840191505092915050565b61208681613114565b82525050565b61209581613114565b82525050565b6120a48161312b565b82525050565b6120b38161312b565b82525050565b60006120c4826129cb565b6120ce8185612a8c565b93506120de818560208601613182565b6120e7816133c2565b840191505092915050565b60006120fd826129cb565b6121078185612a9d565b9350612117818560208601613182565b612120816133c2565b840191505092915050565b6000612138603583612a7b565b9150612143826133ed565b604082019050919050565b600061215b605483612a7b565b91506121668261343c565b606082019050919050565b600061217e605183612a7b565b9150612189826134b1565b606082019050919050565b60006121a1604983612a7b565b91506121ac82613526565b606082019050919050565b60006121c4605483612a7b565b91506121cf8261359b565b606082019050919050565b60006121e7603583612a7b565b91506121f282613610565b604082019050919050565b600061220a604183612a7b565b91506122158261365f565b606082019050919050565b600061222d605783612a7b565b9150612238826136d4565b606082019050919050565b6000612250605383612a7b565b915061225b82613749565b606082019050919050565b6000612273602b83612a7b565b915061227e826137be565b604082019050919050565b6000612296603c83612a7b565b91506122a18261380d565b604082019050919050565b60006122b9605383612a7b565b91506122c48261385c565b606082019050919050565b60006122dc602983612a7b565b91506122e7826138d1565b604082019050919050565b60006122ff605c83612a7b565b915061230a82613920565b606082019050919050565b6000612322602183612a7b565b915061232d82613995565b604082019050919050565b6000612345605783612a7b565b9150612350826139e4565b606082019050919050565b6000612368605383612a7b565b915061237382613a59565b606082019050919050565b600061238b605b83612a7b565b915061239682613ace565b606082019050919050565b60006123ae602b83612a7b565b91506123b982613b43565b604082019050919050565b600060408301600083015184820360008601526123e18282612013565b91505060208301516123f6602086018261248a565b508091505092915050565b600060c083016000830151848203600086015261241e82826123c4565b915050602083015161243360208601826124b7565b50604083015161244660408601826124b7565b50606083015161245960608601826124b7565b50608083015161246c60808601826124a8565b5060a083015161247f60a08601826124a8565b508091505092915050565b61249381613142565b82525050565b6124a281613152565b82525050565b6124b181613152565b82525050565b6124c081613166565b82525050565b6124d76124d282613166565b61328d565b82525050565b60006124e9828561204c565b91506124f5828461204c565b91508190509392505050565b600061250d828561204c565b915061251982846124c6565b6001820191508190509392505050565b600060208201905081810360008301526125438184611e2d565b905092915050565b600060208201905081810360008301526125658184611e8b565b905092915050565b600060208201905081810360008301526125878184611ee9565b905092915050565b600060208201905081810360008301526125a98184611f5e565b905092915050565b60006020820190506125c66000830184611fbc565b92915050565b60006020820190506125e16000830184611fcb565b92915050565b600060208201905081810360008301526126018184611fda565b905092915050565b600060208201905061261e600083018461207d565b92915050565b6000602082019050612639600083018461209b565b92915050565b6000602082019050818103600083015261265981846120b9565b905092915050565b6000602082019050818103600083015261267a8161212b565b9050919050565b6000602082019050818103600083015261269a8161214e565b9050919050565b600060208201905081810360008301526126ba81612171565b9050919050565b600060208201905081810360008301526126da81612194565b9050919050565b600060208201905081810360008301526126fa816121b7565b9050919050565b6000602082019050818103600083015261271a816121da565b9050919050565b6000602082019050818103600083015261273a816121fd565b9050919050565b6000602082019050818103600083015261275a81612220565b9050919050565b6000602082019050818103600083015261277a81612243565b9050919050565b6000602082019050818103600083015261279a81612266565b9050919050565b600060208201905081810360008301526127ba81612289565b9050919050565b600060208201905081810360008301526127da816122ac565b9050919050565b600060208201905081810360008301526127fa816122cf565b9050919050565b6000602082019050818103600083015261281a816122f2565b9050919050565b6000602082019050818103600083015261283a81612315565b9050919050565b6000602082019050818103600083015261285a81612338565b9050919050565b6000602082019050818103600083015261287a8161235b565b9050919050565b6000602082019050818103600083015261289a8161237e565b9050919050565b600060208201905081810360008301526128ba816123a1565b9050919050565b600060208201905081810360008301526128db8184612401565b905092915050565b60006020820190506128f86000830184612499565b92915050565b6000612908612919565b905061291482826131b5565b919050565b6000604051905090565b600067ffffffffffffffff82111561293e5761293d613375565b5b612947826133c2565b9050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612ab982613138565b9150612ac483613138565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612af957612af86132e8565b5b828201905092915050565b6000612b0f82613142565b9150612b1a83613142565b92508263ffffffff03821115612b3357612b326132e8565b5b828201905092915050565b6000612b4982613121565b9150612b5483613121565b925082612b6457612b63613317565b5b600160000383147f800000000000000000000000000000000000000000000000000000000000000083141615612b9d57612b9c6132e8565b5b828205905092915050565b6000612bb382613152565b9150612bbe83613152565b925082612bce57612bcd613317565b5b828204905092915050565b6000808291508390505b6001851115612c2357808604811115612bff57612bfe6132e8565b5b6001851615612c0e5780820291505b8081029050612c1c856133e0565b9450612be3565b94509492505050565b6000612c3782613138565b9150612c4283613138565b9250612c6f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612c77565b905092915050565b600082612c875760019050612d43565b81612c955760009050612d43565b8160018114612cab5760028114612cb557612ce4565b6001915050612d43565b60ff841115612cc757612cc66132e8565b5b8360020a915084821115612cde57612cdd6132e8565b5b50612d43565b5060208310610133831016604e8410600b8410161715612d195782820a905083811115612d1457612d136132e8565b5b612d43565b612d268484846001612bd9565b92509050818404811115612d3d57612d3c6132e8565b5b81810290505b9392505050565b6000612d5582613121565b9150612d6083613121565b9250827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482116000841360008413161615612d9f57612d9e6132e8565b5b817f80000000000000000000000000000000000000000000000000000000000000000583126000841260008413161615612ddc57612ddb6132e8565b5b827f80000000000000000000000000000000000000000000000000000000000000000582126000841360008412161615612e1957612e186132e8565b5b827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0582126000841260008412161615612e5657612e556132e8565b5b828202905092915050565b6000612e6c8261312b565b9150612e778361312b565b925082637fffffff0482116000841360008413161615612e9a57612e996132e8565b5b817fffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000000583126000841260008413161615612ed757612ed66132e8565b5b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000000582126000841360008412161615612f1457612f136132e8565b5b82637fffffff0582126000841260008412161615612f3557612f346132e8565b5b828202905092915050565b6000612f4b82613138565b9150612f5683613138565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612f8f57612f8e6132e8565b5b828202905092915050565b6000612fa582613114565b9150612fb083613114565b9250827fffffffffffffffffffffffffffffffff8000000000000000000000000000000001821260008412151615612feb57612fea6132e8565b5b826f7fffffffffffffffffffffffffffffff018213600084121615613013576130126132e8565b5b828203905092915050565b60006130298261312b565b91506130348361312b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000000182126000841215161561306f5761306e6132e8565b5b82637fffffff01821360008412161561308b5761308a6132e8565b5b828203905092915050565b60006130a182613138565b91506130ac83613138565b9250828210156130bf576130be6132e8565b5b828203905092915050565b60006130d582613152565b91506130e083613152565b9250828210156130f3576130f26132e8565b5b828203905092915050565b60008115159050919050565b6000819050919050565b600081600f0b9050919050565b6000819050919050565b60008160030b9050919050565b6000819050919050565b600063ffffffff82169050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b838110156131a0578082015181840152602081019050613185565b838111156131af576000848401525b50505050565b6131be826133c2565b810181811067ffffffffffffffff821117156131dd576131dc613375565b5b80604052505050565b60006131f182613138565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613224576132236132e8565b5b600182019050919050565b600061323a82613142565b915063ffffffff821415613251576132506132e8565b5b600182019050919050565b600061326782613152565b915067ffffffffffffffff821415613282576132816132e8565b5b600182019050919050565b6000613298826133d3565b9050919050565b60006132aa8261312b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000008214156132dd576132dc6132e8565b5b816000039050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160f81b9050919050565b60008160011c9050919050565b7f5769746e65744275666665723a204e6f7420656e6f756768206279746573206960008201527f6e20627566666572207768656e207365656b696e670000000000000000000000602082015250565b7f5769746e65744465636f6465724c69623a20547269656420746f20726561642060008201527f6120606669786564602076616c75652066726f6d2061206057542e43424f526060208201527f2077697468206d616a6f725479706520213d2037000000000000000000000000604082015250565b7f5769746e65744465636f6465724c69623a20547269656420746f20726561642060008201527f6075696e743634602066726f6d206120605769746e65742e43424f526020776960208201527f7468206d616a6f725479706520213d2030000000000000000000000000000000604082015250565b7f5769746e65744275666665723a20547269656420746f20726561642066726f6d60008201527f206120636f6e73756d65642042756666657220286d75737420726577696e642060208201527f6974206669727374290000000000000000000000000000000000000000000000604082015250565b7f5769746e65744465636f6465724c69623a20496e76616c6964206c656e67746860008201527f20656e636f64696e6720286e6f6e2d6578697374656e74206164646974696f6e60208201527f616c496e666f726d6174696f6e2076616c756529000000000000000000000000604082015250565b7f5769746e65744275666665723a204e6f7420656e6f756768206279746573206960008201527f6e20627566666572207768656e2072656164696e670000000000000000000000602082015250565b7f5769746e65744465636f6465724c69623a20496e646566696e6974652d6c656e60008201527f6774682043424f522061727261797320617265206e6f7420737570706f72746560208201527f6400000000000000000000000000000000000000000000000000000000000000604082015250565b7f5769746e65744465636f6465724c69623a20547269656420746f20726561642060008201527f612060626f6f6c602076616c75652066726f6d206120605769746e65742e434260208201527f4f52602077697468206d616a6f725479706520213d2037000000000000000000604082015250565b7f5769746e65744465636f6465724c69623a20547269656420746f20726561642060008201527f60696e743132385b5d602066726f6d206120605769746e65742e43424f52602060208201527f77697468206d616a6f725479706520213d203400000000000000000000000000604082015250565b7f5769746e65744465636f6465724c69623a20496e76616c696420696e6465666960008201527f6e697465206c656e677468000000000000000000000000000000000000000000602082015250565b7f5769746e65744465636f6465724c69623a20466f756e6420656d70747920627560008201527f66666572207768656e2070617273696e672043424f522076616c756500000000602082015250565b7f5769746e65744465636f6465724c69623a20547269656420746f20726561642060008201527f6075696e7436345b5d602066726f6d206120605769746e65742e43424f52602060208201527f77697468206d616a6f725479706520213d203400000000000000000000000000604082015250565b7f5769746e65744465636f6465724c69623a20496e76616c69642043424f52206d60008201527f616a6f7220747970650000000000000000000000000000000000000000000000602082015250565b7f5769746e65744465636f6465724c69623a20547269656420746f20726561642060008201527f60626f6f6c602066726f6d206120605769746e65742e43424f5260207769746860208201527f206c656e20646966666572656e74207468616e203230206f7220323100000000604082015250565b7f5769746e65744275666665723a2043616e6e6f7420636f70792030206279746560008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f5769746e65744465636f6465724c69623a20547269656420746f20726561642060008201527f60696e74313238602066726f6d206120605769746e65742e43424f526020776960208201527f7468206d616a6f7254797065206e6f742030206f722031000000000000000000604082015250565b7f5769746e65744465636f6465724c69623a20547269656420746f20726561642060008201527f60737472696e675b5d602066726f6d206120605769746e65742e43424f52602060208201527f77697468206d616a6f725479706520213d203400000000000000000000000000604082015250565b7f5769746e65744465636f6465724c69623a20547269656420746f20726561642060008201527f6066697865643136602066726f6d2061206057542e43424f526020776974682060208201527f6164646974696f6e616c496e666f726d6174696f6e20213d2032350000000000604082015250565b7f5769746e65744275666665723a20496e7465676572206f766572666c6f77207760008201527f68656e207365656b696e67000000000000000000000000000000000000000000602082015250565b613b9b81613142565b8114613ba657600080fd5b50565b613bb281613152565b8114613bbd57600080fd5b50565b613bc981613166565b8114613bd457600080fd5b5056fea2646970667358221220a4d4d110e1ca9e6f5fbecbc2cd493e629dfa4ae32d005565f69c63361d2074fd64736f6c63430008070033",
  "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100d95760003560e01c806394863ea411610096578063c5e88ff211610070578063c5e88ff21461028e578063dfca5d34146102be578063e67c5bd1146102ee578063f8a597d31461031e576100d9565b806394863ea4146101fe5780639eee60ca1461022e578063bb6ef6cf1461025e576100d9565b806308c05c33146100de5780633380d8161461010e578063531f4ba71461013e5780637a8acab11461016e5780637f3fb7ca1461019e5780638138799a146101ce575b600080fd5b6100f860048036038101906100f39190611d88565b61034e565b60405161010591906125cc565b60405180910390f35b61012860048036038101906101239190611d88565b6103f2565b6040516101359190612529565b60405180910390f35b61015860048036038101906101539190611d88565b61058a565b604051610165919061254b565b60405180910390f35b61018860048036038101906101839190611d88565b610722565b60405161019591906128e3565b60405180910390f35b6101b860048036038101906101b39190611d3f565b610786565b6040516101c591906128c1565b60405180910390f35b6101e860048036038101906101e39190611d88565b6108d8565b6040516101f59190612624565b60405180910390f35b61021860048036038101906102139190611d88565b610982565b6040516102259190612609565b60405180910390f35b61024860048036038101906102439190611d88565b610a52565b60405161025591906125b1565b60405180910390f35b61027860048036038101906102739190611d88565b610b4f565b60405161028591906125e7565b60405180910390f35b6102a860048036038101906102a39190611d88565b610c95565b6040516102b5919061256d565b60405180910390f35b6102d860048036038101906102d39190611cf6565b610e29565b6040516102e591906128c1565b60405180910390f35b61030860048036038101906103039190611d88565b610e62565b604051610315919061263f565b60405180910390f35b61033860048036038101906103339190611d88565b610f62565b604051610345919061258f565b60405180910390f35b60008061035a83610b4f565b90506000602082511161036e578151610371565b60205b905060005b818110156103ea5760088161038b9190612f40565b60ff60f81b8483815181106103a3576103a2613346565b5b602001015160f81c60f81b167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c8417935080806103e2906131e6565b915050610376565b505050919050565b60606004826040015160ff161461043e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043590612761565b60405180910390fd5b600061045283600001518460600151611108565b905067ffffffffffffffff80168167ffffffffffffffff16106104aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a190612721565b60405180910390fd5b60008167ffffffffffffffff1667ffffffffffffffff8111156104d0576104cf613375565b5b6040519080825280602002602001820160405280156104fe5781602001602082028036833780820191505090505b50905060005b8267ffffffffffffffff168167ffffffffffffffff16101561057f57600061052f8660000151610786565b905061053a81610982565b838367ffffffffffffffff168151811061055757610556613346565b5b6020026020010190600f0b9081600f0b815250505080806105779061325c565b915050610504565b508092505050919050565b60606004826040015160ff16146105d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105cd90612761565b60405180910390fd5b60006105ea83600001518460600151611108565b905067ffffffffffffffff80168167ffffffffffffffff1610610642576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063990612721565b60405180910390fd5b60008167ffffffffffffffff1667ffffffffffffffff81111561066857610667613375565b5b6040519080825280602002602001820160405280156106965781602001602082028036833780820191505090505b50905060005b8267ffffffffffffffff168167ffffffffffffffff1610156107175760006106c78660000151610786565b90506106d2816108d8565b838367ffffffffffffffff16815181106106ef576106ee613346565b5b602002602001019060030b908160030b8152505050808061070f9061325c565b91505061069c565b508092505050919050565b600080826040015160ff161461076d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610764906126a1565b60405180910390fd5b61077f82600001518360600151611108565b9050919050565b61078e611aa6565b6000826000015151116107d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cd906127a1565b60405180910390fd5b60008060ff905060008067ffffffffffffffff90506000600190505b801561083a57610801876111fb565b945060058560ff16901c9350601f8516925060068460ff161415610830576108298784611108565b9150610835565b600090505b6107f2565b60078460ff161115610881576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610878906127e1565b60405180910390fd5b6040518060c001604052808881526020018660ff1681526020018560ff1681526020018460ff168152602001600067ffffffffffffffff1681526020018367ffffffffffffffff1681525095505050505050919050565b60006007826040015160ff1614610924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091b90612681565b60405180910390fd5b6019826060015160ff161461096e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096590612881565b60405180910390fd5b61097b826000015161129c565b9050919050565b60006001826040015160ff1614156109e85760006109a883600001518460600151611108565b90508067ffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6109e09190612f9a565b915050610a4d565b6000826040015160ff161415610a1257610a0182610722565b67ffffffffffffffff169050610a4d565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4490612841565b60405180910390fd5b919050565b6000610a6682600001518360600151611108565b826080019067ffffffffffffffff16908167ffffffffffffffff16815250506007826040015160ff1614610acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac690612741565b60405180910390fd5b6014826080015167ffffffffffffffff161415610aef5760009050610b4a565b6015826080015167ffffffffffffffff161415610b0f5760019050610b4a565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4190612801565b60405180910390fd5b919050565b6060610b6382600001518360600151611108565b826080019067ffffffffffffffff16908167ffffffffffffffff168152505063ffffffff8016826080015167ffffffffffffffff161415610c725760606000610bb4846000015185604001516113af565b905063ffffffff80168163ffffffff161015610c685781610be282866000015161146590919063ffffffff16565b604051602001610bf39291906124dd565b6040516020818303038152906040529150610c16846000015185604001516113af565b905063ffffffff80168163ffffffff161015610c675781610c4482866000015161146590919063ffffffff16565b604051602001610c559291906124dd565b60405160208183030381529060405291505b5b8192505050610c90565b610c8d8260800151836000015161146590919063ffffffff16565b90505b919050565b60606004826040015160ff1614610ce1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd890612861565b60405180910390fd5b6000610cf583600001518460600151611108565b905067ffffffffffffffff80168167ffffffffffffffff1610610d4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4490612721565b60405180910390fd5b60008167ffffffffffffffff1667ffffffffffffffff811115610d7357610d72613375565b5b604051908082528060200260200182016040528015610da657816020015b6060815260200190600190039081610d915790505b50905060005b8267ffffffffffffffff168167ffffffffffffffff161015610e1e576000610dd78660000151610786565b9050610de281610e62565b838367ffffffffffffffff1681518110610dff57610dfe613346565b5b6020026020010181905250508080610e169061325c565b915050610dac565b508092505050919050565b610e31611aa6565b60006040518060400160405280848152602001600063ffffffff168152509050610e5a81610786565b915050919050565b6060610e7682600001518360600151611108565b826080019067ffffffffffffffff16908167ffffffffffffffff168152505067ffffffffffffffff8016826080015167ffffffffffffffff161415610f4857606060005b80610f3e576000610ed3856000015186604001516113af565b905067ffffffffffffffff80168167ffffffffffffffff161015610f335782610f0c8660000151600484610f079190612ba8565b611579565b604051602001610f1d9291906124dd565b6040516020818303038152906040529250610f38565b600191505b50610eba565b8192505050610f5d565b610f5a82600001518360800151611579565b90505b919050565b60606004826040015160ff1614610fae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa5906127c1565b60405180910390fd5b6000610fc283600001518460600151611108565b905067ffffffffffffffff80168167ffffffffffffffff161061101a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101190612721565b60405180910390fd5b60008167ffffffffffffffff1667ffffffffffffffff8111156110405761103f613375565b5b60405190808252806020026020018201604052801561106e5781602001602082028036833780820191505090505b50905060005b8267ffffffffffffffff168167ffffffffffffffff1610156110fd57600061109f8660000151610786565b90506110aa81610722565b838367ffffffffffffffff16815181106110c7576110c6613346565b5b602002602001019067ffffffffffffffff16908167ffffffffffffffff16815250505080806110f59061325c565b915050611074565b508092505050919050565b600060188260ff161015611121578160ff1690506111f5565b60188260ff16141561114057611136836111fb565b60ff1690506111f5565b60198260ff16141561116057611155836116d5565b61ffff1690506111f5565b601a8260ff1614156111825761117583611788565b63ffffffff1690506111f5565b601b8260ff16141561119e576111978361183b565b90506111f5565b601f8260ff1614156111ba5767ffffffffffffffff90506111f5565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ec906126e1565b60405180910390fd5b92915050565b60008160200151826000015151808263ffffffff1610611250576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611247906126c1565b60405180910390fd5b600084600001519050600085602001519050600081600184010151905086602001805180919061127f9061322f565b63ffffffff1663ffffffff16815250508095505050505050919050565b6000806112a8836116d5565b61ffff1690506000618000821690506000600f600a617c00851660030b901d6112d1919061301e565b905060006103ff84169050600f8260030b14156112f057610400811790505b6000808360030b1261132e57600a6104008360030b176127108560030b6001901b61131b9190612d4a565b6113259190612d4a565b901d9050611365565b600a8361133a9061329f565b60030b6001901b6127106104008560030b176113569190612d4a565b6113609190612b3e565b901d90505b60008463ffffffff16146113a2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8161139f9190612e61565b90505b8095505050505050919050565b6000806113bb846111fb565b905060ff8160ff1614156113da5767ffffffffffffffff91505061145f565b60006113e985601f8416611108565b905067ffffffffffffffff80168167ffffffffffffffff1610801561141a57508360ff1660058360ff16901c60ff16145b611459576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145090612781565b60405180910390fd5b80925050505b92915050565b606082600001515182846020015161147d9190612b04565b63ffffffff1611156114c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bb90612701565b60405180910390fd5b60008263ffffffff1667ffffffffffffffff8111156114e6576114e5613375565b5b6040519080825280601f01601f1916602001820160405280156115185781602001600182028036833780820191505090505b50905060008363ffffffff161461156f57600084600001519050600085602001519050600080826020850101915060208501905061155d81838963ffffffff166118ee565b611569888860016119ba565b50505050505b8091505092915050565b60608060005b8367ffffffffffffffff168167ffffffffffffffff1610156116ca5760006115a6866111fb565b905060006080821660ff16146116925760e08160ff1610156115f057603f6115cd876111fb565b166006601f831660ff16901b1790506001856115e991906130ca565b9450611691565b60f08160ff16101561163e57603f611607876111fb565b166006603f611615896111fb565b1660ff16901b600c600f841660ff16901b1717905060028561163791906130ca565b9450611690565b603f611649876111fb565b166006603f611657896111fb565b1660ff16901b600c603f61166a8a6111fb565b1660ff16901b6012600f851660ff16901b171717905060038561168d91906130ca565b94505b5b5b82816040516020016116a5929190612501565b60405160208183030381529060405292505080806116c29061325c565b91505061157f565b508091505092915050565b6000600182602001516116e89190612b04565b826000015151808263ffffffff1610611736576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172d906126c1565b60405180910390fd5b60008460000151905060008560200151905060008160028401015190506002876020018181516117669190612b04565b91509063ffffffff16908163ffffffff16815250508095505050505050919050565b60006003826020015161179b9190612b04565b826000015151808263ffffffff16106117e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e0906126c1565b60405180910390fd5b60008460000151905060008560200151905060008160048401015190506004876020018181516118199190612b04565b91509063ffffffff16908163ffffffff16815250508095505050505050919050565b60006007826020015161184e9190612b04565b826000015151808263ffffffff161061189c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611893906126c1565b60405180910390fd5b60008460000151905060008560200151905060008160088401015190506008876020018181516118cc9190612b04565b91509063ffffffff16908163ffffffff16815250508095505050505050919050565b60008111611931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192890612821565b60405180910390fd5b5b60208110611970578151835260208361194b9190612aae565b925060208261195a9190612aae565b91506020816119699190613096565b9050611932565b60008111156119b5576000600182602061198a9190613096565b6101006119979190612c2c565b6119a19190613096565b905080198351168185511681811786525050505b505050565b60008115611a32578263ffffffff168460200151846119d99190612b04565b63ffffffff1611611a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a16906128a1565b60405180910390fd5b836020015183611a2f9190612b04565b92505b8360000151518363ffffffff161115611a80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7790612661565b60405180910390fd5b82846020019063ffffffff16908163ffffffff1681525050836020015190509392505050565b6040518060c00160405280611ab9611aff565b8152602001600060ff168152602001600060ff168152602001600060ff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff1681525090565b604051806040016040528060608152602001600063ffffffff1681525090565b6000611b32611b2d84612923565b6128fe565b905082815260208101848484011115611b4e57611b4d6133b3565b5b611b59848285613173565b509392505050565b600082601f830112611b7657611b756133a4565b5b8135611b86848260208601611b1f565b91505092915050565b600060408284031215611ba557611ba46133a9565b5b611baf60406128fe565b9050600082013567ffffffffffffffff811115611bcf57611bce6133ae565b5b611bdb84828501611b61565b6000830152506020611bef84828501611cb7565b60208301525092915050565b600060c08284031215611c1157611c106133a9565b5b611c1b60c06128fe565b9050600082013567ffffffffffffffff811115611c3b57611c3a6133ae565b5b611c4784828501611b8f565b6000830152506020611c5b84828501611ce1565b6020830152506040611c6f84828501611ce1565b6040830152506060611c8384828501611ce1565b6060830152506080611c9784828501611ccc565b60808301525060a0611cab84828501611ccc565b60a08301525092915050565b600081359050611cc681613b92565b92915050565b600081359050611cdb81613ba9565b92915050565b600081359050611cf081613bc0565b92915050565b600060208284031215611d0c57611d0b6133bd565b5b600082013567ffffffffffffffff811115611d2a57611d296133b8565b5b611d3684828501611b61565b91505092915050565b600060208284031215611d5557611d546133bd565b5b600082013567ffffffffffffffff811115611d7357611d726133b8565b5b611d7f84828501611b8f565b91505092915050565b600060208284031215611d9e57611d9d6133bd565b5b600082013567ffffffffffffffff811115611dbc57611dbb6133b8565b5b611dc884828501611bfb565b91505092915050565b6000611ddd838361208c565b60208301905092915050565b6000611df583836120aa565b60208301905092915050565b6000611e0d83836120f2565b905092915050565b6000611e2183836124a8565b60208301905092915050565b6000611e3882612994565b611e428185612a0a565b9350611e4d83612954565b8060005b83811015611e7e578151611e658882611dd1565b9750611e70836129d6565b925050600181019050611e51565b5085935050505092915050565b6000611e968261299f565b611ea08185612a1b565b9350611eab83612964565b8060005b83811015611edc578151611ec38882611de9565b9750611ece836129e3565b925050600181019050611eaf565b5085935050505092915050565b6000611ef4826129aa565b611efe8185612a2c565b935083602082028501611f1085612974565b8060005b85811015611f4c5784840389528151611f2d8582611e01565b9450611f38836129f0565b925060208a01995050600181019050611f14565b50829750879550505050505092915050565b6000611f69826129b5565b611f738185612a3d565b9350611f7e83612984565b8060005b83811015611faf578151611f968882611e15565b9750611fa1836129fd565b925050600181019050611f82565b5085935050505092915050565b611fc5816130fe565b82525050565b611fd48161310a565b82525050565b6000611fe5826129c0565b611fef8185612a4e565b9350611fff818560208601613182565b612008816133c2565b840191505092915050565b600061201e826129c0565b6120288185612a5f565b9350612038818560208601613182565b612041816133c2565b840191505092915050565b6000612057826129c0565b6120618185612a70565b9350612071818560208601613182565b80840191505092915050565b61208681613114565b82525050565b61209581613114565b82525050565b6120a48161312b565b82525050565b6120b38161312b565b82525050565b60006120c4826129cb565b6120ce8185612a8c565b93506120de818560208601613182565b6120e7816133c2565b840191505092915050565b60006120fd826129cb565b6121078185612a9d565b9350612117818560208601613182565b612120816133c2565b840191505092915050565b6000612138603583612a7b565b9150612143826133ed565b604082019050919050565b600061215b605483612a7b565b91506121668261343c565b606082019050919050565b600061217e605183612a7b565b9150612189826134b1565b606082019050919050565b60006121a1604983612a7b565b91506121ac82613526565b606082019050919050565b60006121c4605483612a7b565b91506121cf8261359b565b606082019050919050565b60006121e7603583612a7b565b91506121f282613610565b604082019050919050565b600061220a604183612a7b565b91506122158261365f565b606082019050919050565b600061222d605783612a7b565b9150612238826136d4565b606082019050919050565b6000612250605383612a7b565b915061225b82613749565b606082019050919050565b6000612273602b83612a7b565b915061227e826137be565b604082019050919050565b6000612296603c83612a7b565b91506122a18261380d565b604082019050919050565b60006122b9605383612a7b565b91506122c48261385c565b606082019050919050565b60006122dc602983612a7b565b91506122e7826138d1565b604082019050919050565b60006122ff605c83612a7b565b915061230a82613920565b606082019050919050565b6000612322602183612a7b565b915061232d82613995565b604082019050919050565b6000612345605783612a7b565b9150612350826139e4565b606082019050919050565b6000612368605383612a7b565b915061237382613a59565b606082019050919050565b600061238b605b83612a7b565b915061239682613ace565b606082019050919050565b60006123ae602b83612a7b565b91506123b982613b43565b604082019050919050565b600060408301600083015184820360008601526123e18282612013565b91505060208301516123f6602086018261248a565b508091505092915050565b600060c083016000830151848203600086015261241e82826123c4565b915050602083015161243360208601826124b7565b50604083015161244660408601826124b7565b50606083015161245960608601826124b7565b50608083015161246c60808601826124a8565b5060a083015161247f60a08601826124a8565b508091505092915050565b61249381613142565b82525050565b6124a281613152565b82525050565b6124b181613152565b82525050565b6124c081613166565b82525050565b6124d76124d282613166565b61328d565b82525050565b60006124e9828561204c565b91506124f5828461204c565b91508190509392505050565b600061250d828561204c565b915061251982846124c6565b6001820191508190509392505050565b600060208201905081810360008301526125438184611e2d565b905092915050565b600060208201905081810360008301526125658184611e8b565b905092915050565b600060208201905081810360008301526125878184611ee9565b905092915050565b600060208201905081810360008301526125a98184611f5e565b905092915050565b60006020820190506125c66000830184611fbc565b92915050565b60006020820190506125e16000830184611fcb565b92915050565b600060208201905081810360008301526126018184611fda565b905092915050565b600060208201905061261e600083018461207d565b92915050565b6000602082019050612639600083018461209b565b92915050565b6000602082019050818103600083015261265981846120b9565b905092915050565b6000602082019050818103600083015261267a8161212b565b9050919050565b6000602082019050818103600083015261269a8161214e565b9050919050565b600060208201905081810360008301526126ba81612171565b9050919050565b600060208201905081810360008301526126da81612194565b9050919050565b600060208201905081810360008301526126fa816121b7565b9050919050565b6000602082019050818103600083015261271a816121da565b9050919050565b6000602082019050818103600083015261273a816121fd565b9050919050565b6000602082019050818103600083015261275a81612220565b9050919050565b6000602082019050818103600083015261277a81612243565b9050919050565b6000602082019050818103600083015261279a81612266565b9050919050565b600060208201905081810360008301526127ba81612289565b9050919050565b600060208201905081810360008301526127da816122ac565b9050919050565b600060208201905081810360008301526127fa816122cf565b9050919050565b6000602082019050818103600083015261281a816122f2565b9050919050565b6000602082019050818103600083015261283a81612315565b9050919050565b6000602082019050818103600083015261285a81612338565b9050919050565b6000602082019050818103600083015261287a8161235b565b9050919050565b6000602082019050818103600083015261289a8161237e565b9050919050565b600060208201905081810360008301526128ba816123a1565b9050919050565b600060208201905081810360008301526128db8184612401565b905092915050565b60006020820190506128f86000830184612499565b92915050565b6000612908612919565b905061291482826131b5565b919050565b6000604051905090565b600067ffffffffffffffff82111561293e5761293d613375565b5b612947826133c2565b9050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612ab982613138565b9150612ac483613138565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612af957612af86132e8565b5b828201905092915050565b6000612b0f82613142565b9150612b1a83613142565b92508263ffffffff03821115612b3357612b326132e8565b5b828201905092915050565b6000612b4982613121565b9150612b5483613121565b925082612b6457612b63613317565b5b600160000383147f800000000000000000000000000000000000000000000000000000000000000083141615612b9d57612b9c6132e8565b5b828205905092915050565b6000612bb382613152565b9150612bbe83613152565b925082612bce57612bcd613317565b5b828204905092915050565b6000808291508390505b6001851115612c2357808604811115612bff57612bfe6132e8565b5b6001851615612c0e5780820291505b8081029050612c1c856133e0565b9450612be3565b94509492505050565b6000612c3782613138565b9150612c4283613138565b9250612c6f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612c77565b905092915050565b600082612c875760019050612d43565b81612c955760009050612d43565b8160018114612cab5760028114612cb557612ce4565b6001915050612d43565b60ff841115612cc757612cc66132e8565b5b8360020a915084821115612cde57612cdd6132e8565b5b50612d43565b5060208310610133831016604e8410600b8410161715612d195782820a905083811115612d1457612d136132e8565b5b612d43565b612d268484846001612bd9565b92509050818404811115612d3d57612d3c6132e8565b5b81810290505b9392505050565b6000612d5582613121565b9150612d6083613121565b9250827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482116000841360008413161615612d9f57612d9e6132e8565b5b817f80000000000000000000000000000000000000000000000000000000000000000583126000841260008413161615612ddc57612ddb6132e8565b5b827f80000000000000000000000000000000000000000000000000000000000000000582126000841360008412161615612e1957612e186132e8565b5b827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0582126000841260008412161615612e5657612e556132e8565b5b828202905092915050565b6000612e6c8261312b565b9150612e778361312b565b925082637fffffff0482116000841360008413161615612e9a57612e996132e8565b5b817fffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000000583126000841260008413161615612ed757612ed66132e8565b5b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000000582126000841360008412161615612f1457612f136132e8565b5b82637fffffff0582126000841260008412161615612f3557612f346132e8565b5b828202905092915050565b6000612f4b82613138565b9150612f5683613138565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612f8f57612f8e6132e8565b5b828202905092915050565b6000612fa582613114565b9150612fb083613114565b9250827fffffffffffffffffffffffffffffffff8000000000000000000000000000000001821260008412151615612feb57612fea6132e8565b5b826f7fffffffffffffffffffffffffffffff018213600084121615613013576130126132e8565b5b828203905092915050565b60006130298261312b565b91506130348361312b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000000182126000841215161561306f5761306e6132e8565b5b82637fffffff01821360008412161561308b5761308a6132e8565b5b828203905092915050565b60006130a182613138565b91506130ac83613138565b9250828210156130bf576130be6132e8565b5b828203905092915050565b60006130d582613152565b91506130e083613152565b9250828210156130f3576130f26132e8565b5b828203905092915050565b60008115159050919050565b6000819050919050565b600081600f0b9050919050565b6000819050919050565b60008160030b9050919050565b6000819050919050565b600063ffffffff82169050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b838110156131a0578082015181840152602081019050613185565b838111156131af576000848401525b50505050565b6131be826133c2565b810181811067ffffffffffffffff821117156131dd576131dc613375565b5b80604052505050565b60006131f182613138565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613224576132236132e8565b5b600182019050919050565b600061323a82613142565b915063ffffffff821415613251576132506132e8565b5b600182019050919050565b600061326782613152565b915067ffffffffffffffff821415613282576132816132e8565b5b600182019050919050565b6000613298826133d3565b9050919050565b60006132aa8261312b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000008214156132dd576132dc6132e8565b5b816000039050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160f81b9050919050565b60008160011c9050919050565b7f5769746e65744275666665723a204e6f7420656e6f756768206279746573206960008201527f6e20627566666572207768656e207365656b696e670000000000000000000000602082015250565b7f5769746e65744465636f6465724c69623a20547269656420746f20726561642060008201527f6120606669786564602076616c75652066726f6d2061206057542e43424f526060208201527f2077697468206d616a6f725479706520213d2037000000000000000000000000604082015250565b7f5769746e65744465636f6465724c69623a20547269656420746f20726561642060008201527f6075696e743634602066726f6d206120605769746e65742e43424f526020776960208201527f7468206d616a6f725479706520213d2030000000000000000000000000000000604082015250565b7f5769746e65744275666665723a20547269656420746f20726561642066726f6d60008201527f206120636f6e73756d65642042756666657220286d75737420726577696e642060208201527f6974206669727374290000000000000000000000000000000000000000000000604082015250565b7f5769746e65744465636f6465724c69623a20496e76616c6964206c656e67746860008201527f20656e636f64696e6720286e6f6e2d6578697374656e74206164646974696f6e60208201527f616c496e666f726d6174696f6e2076616c756529000000000000000000000000604082015250565b7f5769746e65744275666665723a204e6f7420656e6f756768206279746573206960008201527f6e20627566666572207768656e2072656164696e670000000000000000000000602082015250565b7f5769746e65744465636f6465724c69623a20496e646566696e6974652d6c656e60008201527f6774682043424f522061727261797320617265206e6f7420737570706f72746560208201527f6400000000000000000000000000000000000000000000000000000000000000604082015250565b7f5769746e65744465636f6465724c69623a20547269656420746f20726561642060008201527f612060626f6f6c602076616c75652066726f6d206120605769746e65742e434260208201527f4f52602077697468206d616a6f725479706520213d2037000000000000000000604082015250565b7f5769746e65744465636f6465724c69623a20547269656420746f20726561642060008201527f60696e743132385b5d602066726f6d206120605769746e65742e43424f52602060208201527f77697468206d616a6f725479706520213d203400000000000000000000000000604082015250565b7f5769746e65744465636f6465724c69623a20496e76616c696420696e6465666960008201527f6e697465206c656e677468000000000000000000000000000000000000000000602082015250565b7f5769746e65744465636f6465724c69623a20466f756e6420656d70747920627560008201527f66666572207768656e2070617273696e672043424f522076616c756500000000602082015250565b7f5769746e65744465636f6465724c69623a20547269656420746f20726561642060008201527f6075696e7436345b5d602066726f6d206120605769746e65742e43424f52602060208201527f77697468206d616a6f725479706520213d203400000000000000000000000000604082015250565b7f5769746e65744465636f6465724c69623a20496e76616c69642043424f52206d60008201527f616a6f7220747970650000000000000000000000000000000000000000000000602082015250565b7f5769746e65744465636f6465724c69623a20547269656420746f20726561642060008201527f60626f6f6c602066726f6d206120605769746e65742e43424f5260207769746860208201527f206c656e20646966666572656e74207468616e203230206f7220323100000000604082015250565b7f5769746e65744275666665723a2043616e6e6f7420636f70792030206279746560008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f5769746e65744465636f6465724c69623a20547269656420746f20726561642060008201527f60696e74313238602066726f6d206120605769746e65742e43424f526020776960208201527f7468206d616a6f7254797065206e6f742030206f722031000000000000000000604082015250565b7f5769746e65744465636f6465724c69623a20547269656420746f20726561642060008201527f60737472696e675b5d602066726f6d206120605769746e65742e43424f52602060208201527f77697468206d616a6f725479706520213d203400000000000000000000000000604082015250565b7f5769746e65744465636f6465724c69623a20547269656420746f20726561642060008201527f6066697865643136602066726f6d2061206057542e43424f526020776974682060208201527f6164646974696f6e616c496e666f726d6174696f6e20213d2032350000000000604082015250565b7f5769746e65744275666665723a20496e7465676572206f766572666c6f77207760008201527f68656e207365656b696e67000000000000000000000000000000000000000000602082015250565b613b9b81613142565b8114613ba657600080fd5b50565b613bb281613152565b8114613bbd57600080fd5b50565b613bc981613166565b8114613bd457600080fd5b5056fea2646970667358221220a4d4d110e1ca9e6f5fbecbc2cd493e629dfa4ae32d005565f69c63361d2074fd64736f6c63430008070033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
