{
  "contractName": "MedianOracleMock",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "count",
      "outputs": [
        {
          "name": "result",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "node_right_child",
      "outputs": [
        {
          "name": "child",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "value",
          "type": "uint256"
        },
        {
          "name": "n",
          "type": "uint256"
        }
      ],
      "name": "in_top_n",
      "outputs": [
        {
          "name": "truth",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "percentile",
      "outputs": [
        {
          "name": "k",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "node_side",
      "outputs": [
        {
          "name": "side",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "remove",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "node_parent",
      "outputs": [
        {
          "name": "parent",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "isResultSet",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "node_dupes",
      "outputs": [
        {
          "name": "dupes",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "permille",
      "outputs": [
        {
          "name": "k",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "node_left_child",
      "outputs": [
        {
          "name": "child",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "median",
      "outputs": [
        {
          "name": "value",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "insert",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "duplicates",
      "outputs": [
        {
          "name": "n",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_oracles",
          "type": "address[]"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "rank",
      "outputs": [
        {
          "name": "smaller",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "node_count",
      "outputs": [
        {
          "name": "result",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "resultFor",
      "outputs": [
        {
          "name": "",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "perm",
          "type": "uint256"
        }
      ],
      "name": "at_permille",
      "outputs": [
        {
          "name": "value",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "pos",
          "type": "uint256"
        }
      ],
      "name": "select_at",
      "outputs": [
        {
          "name": "value",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "node_height",
      "outputs": [
        {
          "name": "height",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "setResult",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "perc",
          "type": "uint256"
        }
      ],
      "name": "at_percentile",
      "outputs": [
        {
          "name": "value",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_oracles",
          "type": "address[]"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_result",
          "type": "bytes"
        },
        {
          "indexed": false,
          "name": "_sender",
          "type": "address"
        }
      ],
      "name": "ResultSet",
      "type": "event"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b5060405162002657380380620026578339810180604052810190808051820192919050505062000055816200005c6401000000000262000aab176401000000009004565b5062000345565b60008060019054906101000a900460ff16806200008e57506200008d6200025f640100000000026401000000009004565b5b80620000a657506000809054906101000a900460ff16155b151562000141576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b600060019054906101000a900460ff1690506001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055506000825111151562000228576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001807f43616e6e6f7420696e697469616c697a65204d656469616e4f7261636c65207781526020017f69746820656d707479206f7261636c652061727261790000000000000000000081525060400191505060405180910390fd5b81603690805190602001906200024092919062000270565b5080600060016101000a81548160ff0219169083151502179055505050565b600080303b90506000811491505090565b828054828255906000526020600020908101928215620002ec579160200282015b82811115620002eb5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000291565b5b509050620002fb9190620002ff565b5090565b6200034291905b808211156200033e57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010162000306565b5090565b90565b61230280620003556000396000f300608060405260043610610133576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306661abd1461013857806321f0a7271461016357806337da8058146101a45780633b5f24eb146101f357806348da1532146102345780634cc82215146102795780635014a18e146102a657806353bac2c9146102e75780635663263714610330578063598ac8f21461037157806366d5c8ed146103b257806377049457146103f357806390b5561d1461041e5780639f8537171461044b578063a224cee71461048c578063b37c191b146104f2578063bdc0f93c14610533578063d09cc57e14610574578063d9269cb41461061e578063e832fda31461065f578063e973b7ba146106a0578063f84d2ae8146106e1578063fa2b579d146106f8575b600080fd5b34801561014457600080fd5b5061014d610739565b6040518082815260200191505060405180910390f35b34801561016f57600080fd5b5061018e60048036038101908080359060200190929190505050610794565b6040518082815260200191505060405180910390f35b3480156101b057600080fd5b506101d960048036038101908080359060200190929190803590602001909291905050506107ca565b604051808215151515815260200191505060405180910390f35b3480156101ff57600080fd5b5061021e600480360381019080803590602001909291905050506107f6565b6040518082815260200191505060405180910390f35b34801561024057600080fd5b5061025f60048036038101908080359060200190929190505050610856565b604051808215151515815260200191505060405180910390f35b34801561028557600080fd5b506102a460048036038101908080359060200190929190505050610883565b005b3480156102b257600080fd5b506102d160048036038101908080359060200190929190505050610942565b6040518082815260200191505060405180910390f35b3480156102f357600080fd5b506103166004803603810190808035600019169060200190929190505050610962565b604051808215151515815260200191505060405180910390f35b34801561033c57600080fd5b5061035b6004803603810190808035906020019092919050505061097b565b6040518082815260200191505060405180910390f35b34801561037d57600080fd5b5061039c6004803603810190808035906020019092919050505061099b565b6040518082815260200191505060405180910390f35b3480156103be57600080fd5b506103dd600480360381019080803590602001909291905050506109fd565b6040518082815260200191505060405180910390f35b3480156103ff57600080fd5b50610408610a32565b6040518082815260200191505060405180910390f35b34801561042a57600080fd5b5061044960048036038101908080359060200190929190505050610a43565b005b34801561045757600080fd5b5061047660048036038101908080359060200190929190505050610a88565b6040518082815260200191505060405180910390f35b34801561049857600080fd5b506104f060048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610aab565b005b3480156104fe57600080fd5b5061051d60048036038101908080359060200190929190505050610c97565b6040518082815260200191505060405180910390f35b34801561053f57600080fd5b5061055e60048036038101908080359060200190929190505050610da6565b6040518082815260200191505060405180910390f35b34801561058057600080fd5b506105a36004803603810190808035600019169060200190929190505050610dc6565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105e35780820151818401526020810190506105c8565b50505050905090810190601f1680156106105780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561062a57600080fd5b5061064960048036038101908080359060200190929190505050610f90565b6040518082815260200191505060405180910390f35b34801561066b57600080fd5b5061068a60048036038101908080359060200190929190505050610fbd565b6040518082815260200191505060405180910390f35b3480156106ac57600080fd5b506106cb6004803603810190808035906020019092919050505061110e565b6040518082815260200191505060405180910390f35b3480156106ed57600080fd5b506106f661112e565b005b34801561070457600080fd5b50610723600480360381019080803590602001909291905050506112ba565b6040518082815260200191505060405180910390f35b6000806000603560008081526020019081526020016000209150603560008360000160006001151515158152602001908152602001600020548152602001908152602001600020905080600401548260050154019250505090565b60006035600083815260200190815260200160002060000160006001151515158152602001908152602001600020549050919050565b60008060006107d885610c97565b91506107e2610739565b905083600183830303109250505092915050565b60008060008061080585610c97565b925060356000868152602001908152602001600020600501549150610828610739565b905080600260648085020181151561083c57fe5b04606485020181151561084b57fe5b049350505050919050565b60006035600083815260200190815260200160002060020160009054906101000a900460ff169050919050565b600060356000838152602001908152602001600020905060008214156108ba576000816005015414156108b55761093e565b6108cd565b6000816004015414156108cc5761093e565b5b6000816005015411156109335780600501600081548092919060019003919050555060008214151561090f578060040160008154809291906001900391905055505b61092e81600101548260020160009054906101000a900460ff166112e6565b61093d565b61093c82611311565b5b5b5050565b600060356000838152602001908152602001600020600101549050919050565b6000603460009054906101000a900460ff169050919050565b600060356000838152602001908152602001600020600501549050919050565b6000806000806109aa85610c97565b9250603560008681526020019081526020016000206005015491506109cd610739565b90508060026103e8808502018115156109e257fe5b046103e88502018115156109f257fe5b049350505050919050565b600060356000838152602001908152602001600020600001600080151515158152602001908152602001600020549050919050565b6000610a3e60326112ba565b905090565b6000811415610a77576035600082815260200190815260200160002060050160008154809291906001019190505550610a85565b610a84600060018361148b565b5b50565b600060016035600084815260200190815260200160002060050154019050919050565b60008060019054906101000a900460ff1680610acb5750610aca6115af565b5b80610ae257506000809054906101000a900460ff16155b1515610b7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b600060019054906101000a900460ff1690506001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff02191690831515021790555060008251111515610c62576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001807f43616e6e6f7420696e697469616c697a65204d656469616e4f7261636c65207781526020017f69746820656d707479206f7261636c652061727261790000000000000000000081525060400191505060405180910390fd5b8160369080519060200190610c78929190612164565b5080600060016101000a81548160ff0219169083151502179055505050565b600080600080600085141515610d9e576035600080815260200190815260200160002060050154935060356000808152602001908152602001600020600001600060011515151581526020019081526020016000205492506035600084815260200190815260200160002091505b600115610d9d578483111515610d6d5784831015610d2a578160050154600101840193505b81600001600080151515158152602001908152602001600020549050600081141515610d6c576035600082815260200190815260200160002060040154840193505b5b84831415610d7a57610d9d565b816000016000868510151515158152602001908152602001600020549250610d05565b5b505050919050565b600060356000838152602001908152602001600020600401549050919050565b60606000600102600019168260001916141515610e71576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f54686973206f7261636c6520646f6573206e6f7420737570706f72742069647381526020017f2e0000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b610e7a82610962565b1515610eee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f54686520726573756c7420686173206e6f74206265656e207365742e0000000081525060200191505060405180910390fd5b60338054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f845780601f10610f5957610100808354040283529160200191610f84565b820191906000526020600020905b815481529060010190602001808311610f6757829003601f168201915b50505050509050919050565b600080610f9b610739565b9050610fb56103e8828502811515610faf57fe5b04610fbd565b915050919050565b600080600080600080600080600060356000808152602001908152602001600020600501549750878a1015610ff55760009850611101565b878a03965060356000808152602001908152602001600020600001600060011515151581526020019081526020016000205495506035600087815260200190815260200160002094505b600115611100578460000160008015151515815260200190815260200160002054935060018560050154019250600084141515611097576035600085815260200190815260200160002091508160040154905061109c565b600090505b808710156110af578395508194506110fb565b8281018710156110c157859850611101565b8460000160006001151515158152602001908152602001600020549550603560008781526020019081526020016000209450828101870396505b61103f565b5b5050505050505050919050565b600060356000838152602001908152602001600020600301549050919050565b60008090505b60368054905081101561129f5761129261128d60368381548110151561115657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d09cc57e60006040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082600102600019168152602001915050600060405180830381600087803b1580156111f757600080fd5b505af115801561120b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561123557600080fd5b81019080805164010000000081111561124d57600080fd5b8281019050602081018481111561126357600080fd5b815185600182028301116401000000008211171561128057600080fd5b50509291905050506115c0565b610a43565b8080600101915050611134565b6112b76112b26112ad610a32565b611677565b6116bb565b50565b6000806112c5610739565b90506112de60648285028115156112d857fe5b04610fbd565b915050919050565b60008214151561130d576112f98261184e565b611302826118dc565b61130c828261192d565b5b5050565b600080600080600080600080603560008a81526020019081526020016000209750876001015496508760020160009054906101000a900460ff1695506035600088815260200190815260200160002094508760000160008015151515815260200190815260200160002054935087600001600060011515151581526020019081526020016000205492506000841480156113ab5750600083145b156113e757600085600001600088151515158152602001908152602001600020819055506113d889611aa8565b6113e287876112e6565b611480565b600084141580156113f9575060008314155b1561140e57611409898585611b47565b61147f565b8284019150603560008381526020019081526020016000209050818560000160008815151515815260200190815260200160002081905550868160010181905550858160020160006101000a81548160ff02191690831515021790555061147489611aa8565b61147e87876112e6565b5b5b505050505050505050565b60008060008060356000888152602001908152602001600020935083600001600087151515158152602001908152602001600020549250600083141561154e57848460000160008815151515815260200190815260200160002081905550603560008681526020019081526020016000209150868260010181905550858260020160006101000a81548160ff0219169083151502179055506001826003018190555060018260040181905550611540856118dc565b61154985611d20565b6115a6565b848314156115935760356000848152602001908152602001600020600501600081548092919060010191905055506115858561184e565b61158e856118dc565b6115a5565b8285101590506115a483828761148b565b5b5b50505050505050565b600080303b90506000811491505090565b60008060008090505b835181101561166d576001810184510360080260020a84828151811015156115ed57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f01000000000000000000000000000000000000000000000000000000000000009004028201915080806001019150506115c9565b8192505050919050565b606060206040519080825280601f01601f1916602001820160405280156116ad5781602001602082028038833980820191505090505b509050816020820152919050565b603460009054906101000a900460ff16151515611740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f526573756c742068617320616c7265616479206265656e207365742e0000000081525060200191505060405180910390fd5b80603390805190602001906117569291906121ee565b506001603460006101000a81548160ff0219169083151502179055507fec9117e779c7185025120058429df00dfe012336e6dfe5ad326b4973db23c2d2813360405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b838110156118075780820151818401526020810190506117ec565b50505050905090810190601f1680156118345780820380516001836020036101000a031916815260200191505b50935050505060405180910390a161184b81611e1f565b50565b6000603560008381526020019081526020016000209050806005015460356000836000016000600115151515815260200190815260200160002054815260200190815260200160002060040154603560008460000160008015151515815260200190815260200160002054815260200190815260200160002060040154600101010181600401819055505050565b6000603560008381526020019081526020016000206001015490505b6000811415156119295761190b8161184e565b603560008281526020019081526020016000206001015490506118f8565b5050565b600080600080600080600088141515611a9e5761194988611e2b565b61195288611ed6565b955086156119635760019450611987565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94505b61199088611ed6565b935084600202841415611a5e5760356000898152602001908152602001600020925082600001600088151515151581526020019081526020016000205491506119d882611ed6565b9050847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02811415611a1057611a0f828815611f58565b5b611a1a8888611f58565b600081141515611a5957603560008981526020019081526020016000209250611a5883600101548460020160009054906101000a900460ff1661192d565b5b611a9d565b8486141515611a9c57603560008981526020019081526020016000209250611a9b83600101548460020160009054906101000a900460ff1661192d565b5b5b5b5050505050505050565b60006035600083815260200190815260200160002090506000816001018190555060008160020160006101000a81548160ff0219169083151502179055506000816000016000801515151581526020019081526020016000208190555060008160000160006001151515158152602001908152602001600020819055506000816004018190555060008160030181905550600081600501819055505050565b6000806000806000806000806000611b5e8b61210b565b9850603560008a8152602001908152602001600020975087600501549650611b8589611311565b603560008d8152602001908152602001600020955085600101549450603560008681526020019081526020016000209350856003015492508560020160009054906101000a900460ff16915085600401549050856000016000600115151515815260200190815260200160002054995085600001600080151515158152602001908152602001600020549a50888460000160008415151515815260200190815260200160002081905550848860010181905550818860020160006101000a81548160ff021916908315150217905550856005015487820103886004018190555082886003018190555086886005018190555060008b141515611cbb578a886000016000801515151581526020019081526020016000208190555088603560008d8152602001908152602001600020600101819055505b60008a141515611d00578988600001600060011515151581526020019081526020016000208190555088603560008c8152602001908152602001600020600101819055505b611d098c611aa8565b611d12896118dc565b505050505050505050505050565b6000806000806000611d3186611e2b565b60356000878152602001908152602001600020945084600101549350600084141515611e1757611d6084611ed6565b92508460020160009054906101000a900460ff1691508115611da4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050611da9565b600190505b60028102831415611e0157807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02611de087611ed6565b1415611df157611df08683611f58565b5b611dfc848315611f58565b611e16565b600083141515611e1557611e1484611d20565b5b5b5b505050505050565b611e2881612161565b50565b6000806000603560008581526020019081526020016000209250603560008460000160008015151515815260200190815260200160002054815260200190815260200160002060030154915060356000846000016000600115151515815260200190815260200160002054815260200190815260200160002060030154905080821115611ec357600182018360030181905550611ed0565b6001810183600301819055505b50505050565b6000806035600084815260200190815260200160002090506035600082600001600060011515151581526020019081526020016000205481526020019081526020016000206003015460356000836000016000801515151581526020019081526020016000205481526020019081526020016000206003015403915050919050565b600080600080600080600080600089159850603560008c815260200190815260200160002097508760020160009054906101000a900460ff169650876001015495508760000160008a1515151581526020019081526020016000205494506035600086815260200190815260200160002093508360000160008b151515158152602001908152602001600020549250603560008781526020019081526020016000209150603560008481526020019081526020016000209050848260000160008915151515815260200190815260200160002081905550868460020160006101000a81548160ff0219169083151502179055508584600101819055508a8460000160008c15151515815260200190815260200160002081905550848860010181905550898860020160006101000a81548160ff021916908315150217905550828860000160008b151515158152602001908152602001600020819055508a8160010181905550888160020160006101000a81548160ff0219169083151502179055506120e38b611e2b565b6120ec85611e2b565b6120f58b61184e565b6120fe8561184e565b5050505050505050505050565b6000806035600084815260200190815260200160002060000160006001151515158152602001908152602001600020549050600081141515612157576121508161210b565b915061215b565b8291505b50919050565b50565b8280548282559060005260206000209081019282156121dd579160200282015b828111156121dc5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190612184565b5b5090506121ea919061226e565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061222f57805160ff191683800117855561225d565b8280016001018555821561225d579182015b8281111561225c578251825591602001919060010190612241565b5b50905061226a91906122b1565b5090565b6122ae91905b808211156122aa57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101612274565b5090565b90565b6122d391905b808211156122cf5760008160009055506001016122b7565b5090565b905600a165627a7a723058206cf293e6c231e23a4b19357607359b9c90e82869352505992fc9b2a44dd1772d0029",
  "deployedBytecode": "0x608060405260043610610133576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306661abd1461013857806321f0a7271461016357806337da8058146101a45780633b5f24eb146101f357806348da1532146102345780634cc82215146102795780635014a18e146102a657806353bac2c9146102e75780635663263714610330578063598ac8f21461037157806366d5c8ed146103b257806377049457146103f357806390b5561d1461041e5780639f8537171461044b578063a224cee71461048c578063b37c191b146104f2578063bdc0f93c14610533578063d09cc57e14610574578063d9269cb41461061e578063e832fda31461065f578063e973b7ba146106a0578063f84d2ae8146106e1578063fa2b579d146106f8575b600080fd5b34801561014457600080fd5b5061014d610739565b6040518082815260200191505060405180910390f35b34801561016f57600080fd5b5061018e60048036038101908080359060200190929190505050610794565b6040518082815260200191505060405180910390f35b3480156101b057600080fd5b506101d960048036038101908080359060200190929190803590602001909291905050506107ca565b604051808215151515815260200191505060405180910390f35b3480156101ff57600080fd5b5061021e600480360381019080803590602001909291905050506107f6565b6040518082815260200191505060405180910390f35b34801561024057600080fd5b5061025f60048036038101908080359060200190929190505050610856565b604051808215151515815260200191505060405180910390f35b34801561028557600080fd5b506102a460048036038101908080359060200190929190505050610883565b005b3480156102b257600080fd5b506102d160048036038101908080359060200190929190505050610942565b6040518082815260200191505060405180910390f35b3480156102f357600080fd5b506103166004803603810190808035600019169060200190929190505050610962565b604051808215151515815260200191505060405180910390f35b34801561033c57600080fd5b5061035b6004803603810190808035906020019092919050505061097b565b6040518082815260200191505060405180910390f35b34801561037d57600080fd5b5061039c6004803603810190808035906020019092919050505061099b565b6040518082815260200191505060405180910390f35b3480156103be57600080fd5b506103dd600480360381019080803590602001909291905050506109fd565b6040518082815260200191505060405180910390f35b3480156103ff57600080fd5b50610408610a32565b6040518082815260200191505060405180910390f35b34801561042a57600080fd5b5061044960048036038101908080359060200190929190505050610a43565b005b34801561045757600080fd5b5061047660048036038101908080359060200190929190505050610a88565b6040518082815260200191505060405180910390f35b34801561049857600080fd5b506104f060048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610aab565b005b3480156104fe57600080fd5b5061051d60048036038101908080359060200190929190505050610c97565b6040518082815260200191505060405180910390f35b34801561053f57600080fd5b5061055e60048036038101908080359060200190929190505050610da6565b6040518082815260200191505060405180910390f35b34801561058057600080fd5b506105a36004803603810190808035600019169060200190929190505050610dc6565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105e35780820151818401526020810190506105c8565b50505050905090810190601f1680156106105780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561062a57600080fd5b5061064960048036038101908080359060200190929190505050610f90565b6040518082815260200191505060405180910390f35b34801561066b57600080fd5b5061068a60048036038101908080359060200190929190505050610fbd565b6040518082815260200191505060405180910390f35b3480156106ac57600080fd5b506106cb6004803603810190808035906020019092919050505061110e565b6040518082815260200191505060405180910390f35b3480156106ed57600080fd5b506106f661112e565b005b34801561070457600080fd5b50610723600480360381019080803590602001909291905050506112ba565b6040518082815260200191505060405180910390f35b6000806000603560008081526020019081526020016000209150603560008360000160006001151515158152602001908152602001600020548152602001908152602001600020905080600401548260050154019250505090565b60006035600083815260200190815260200160002060000160006001151515158152602001908152602001600020549050919050565b60008060006107d885610c97565b91506107e2610739565b905083600183830303109250505092915050565b60008060008061080585610c97565b925060356000868152602001908152602001600020600501549150610828610739565b905080600260648085020181151561083c57fe5b04606485020181151561084b57fe5b049350505050919050565b60006035600083815260200190815260200160002060020160009054906101000a900460ff169050919050565b600060356000838152602001908152602001600020905060008214156108ba576000816005015414156108b55761093e565b6108cd565b6000816004015414156108cc5761093e565b5b6000816005015411156109335780600501600081548092919060019003919050555060008214151561090f578060040160008154809291906001900391905055505b61092e81600101548260020160009054906101000a900460ff166112e6565b61093d565b61093c82611311565b5b5b5050565b600060356000838152602001908152602001600020600101549050919050565b6000603460009054906101000a900460ff169050919050565b600060356000838152602001908152602001600020600501549050919050565b6000806000806109aa85610c97565b9250603560008681526020019081526020016000206005015491506109cd610739565b90508060026103e8808502018115156109e257fe5b046103e88502018115156109f257fe5b049350505050919050565b600060356000838152602001908152602001600020600001600080151515158152602001908152602001600020549050919050565b6000610a3e60326112ba565b905090565b6000811415610a77576035600082815260200190815260200160002060050160008154809291906001019190505550610a85565b610a84600060018361148b565b5b50565b600060016035600084815260200190815260200160002060050154019050919050565b60008060019054906101000a900460ff1680610acb5750610aca6115af565b5b80610ae257506000809054906101000a900460ff16155b1515610b7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b600060019054906101000a900460ff1690506001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff02191690831515021790555060008251111515610c62576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001807f43616e6e6f7420696e697469616c697a65204d656469616e4f7261636c65207781526020017f69746820656d707479206f7261636c652061727261790000000000000000000081525060400191505060405180910390fd5b8160369080519060200190610c78929190612164565b5080600060016101000a81548160ff0219169083151502179055505050565b600080600080600085141515610d9e576035600080815260200190815260200160002060050154935060356000808152602001908152602001600020600001600060011515151581526020019081526020016000205492506035600084815260200190815260200160002091505b600115610d9d578483111515610d6d5784831015610d2a578160050154600101840193505b81600001600080151515158152602001908152602001600020549050600081141515610d6c576035600082815260200190815260200160002060040154840193505b5b84831415610d7a57610d9d565b816000016000868510151515158152602001908152602001600020549250610d05565b5b505050919050565b600060356000838152602001908152602001600020600401549050919050565b60606000600102600019168260001916141515610e71576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f54686973206f7261636c6520646f6573206e6f7420737570706f72742069647381526020017f2e0000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b610e7a82610962565b1515610eee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f54686520726573756c7420686173206e6f74206265656e207365742e0000000081525060200191505060405180910390fd5b60338054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f845780601f10610f5957610100808354040283529160200191610f84565b820191906000526020600020905b815481529060010190602001808311610f6757829003601f168201915b50505050509050919050565b600080610f9b610739565b9050610fb56103e8828502811515610faf57fe5b04610fbd565b915050919050565b600080600080600080600080600060356000808152602001908152602001600020600501549750878a1015610ff55760009850611101565b878a03965060356000808152602001908152602001600020600001600060011515151581526020019081526020016000205495506035600087815260200190815260200160002094505b600115611100578460000160008015151515815260200190815260200160002054935060018560050154019250600084141515611097576035600085815260200190815260200160002091508160040154905061109c565b600090505b808710156110af578395508194506110fb565b8281018710156110c157859850611101565b8460000160006001151515158152602001908152602001600020549550603560008781526020019081526020016000209450828101870396505b61103f565b5b5050505050505050919050565b600060356000838152602001908152602001600020600301549050919050565b60008090505b60368054905081101561129f5761129261128d60368381548110151561115657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d09cc57e60006040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082600102600019168152602001915050600060405180830381600087803b1580156111f757600080fd5b505af115801561120b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561123557600080fd5b81019080805164010000000081111561124d57600080fd5b8281019050602081018481111561126357600080fd5b815185600182028301116401000000008211171561128057600080fd5b50509291905050506115c0565b610a43565b8080600101915050611134565b6112b76112b26112ad610a32565b611677565b6116bb565b50565b6000806112c5610739565b90506112de60648285028115156112d857fe5b04610fbd565b915050919050565b60008214151561130d576112f98261184e565b611302826118dc565b61130c828261192d565b5b5050565b600080600080600080600080603560008a81526020019081526020016000209750876001015496508760020160009054906101000a900460ff1695506035600088815260200190815260200160002094508760000160008015151515815260200190815260200160002054935087600001600060011515151581526020019081526020016000205492506000841480156113ab5750600083145b156113e757600085600001600088151515158152602001908152602001600020819055506113d889611aa8565b6113e287876112e6565b611480565b600084141580156113f9575060008314155b1561140e57611409898585611b47565b61147f565b8284019150603560008381526020019081526020016000209050818560000160008815151515815260200190815260200160002081905550868160010181905550858160020160006101000a81548160ff02191690831515021790555061147489611aa8565b61147e87876112e6565b5b5b505050505050505050565b60008060008060356000888152602001908152602001600020935083600001600087151515158152602001908152602001600020549250600083141561154e57848460000160008815151515815260200190815260200160002081905550603560008681526020019081526020016000209150868260010181905550858260020160006101000a81548160ff0219169083151502179055506001826003018190555060018260040181905550611540856118dc565b61154985611d20565b6115a6565b848314156115935760356000848152602001908152602001600020600501600081548092919060010191905055506115858561184e565b61158e856118dc565b6115a5565b8285101590506115a483828761148b565b5b5b50505050505050565b600080303b90506000811491505090565b60008060008090505b835181101561166d576001810184510360080260020a84828151811015156115ed57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f01000000000000000000000000000000000000000000000000000000000000009004028201915080806001019150506115c9565b8192505050919050565b606060206040519080825280601f01601f1916602001820160405280156116ad5781602001602082028038833980820191505090505b509050816020820152919050565b603460009054906101000a900460ff16151515611740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f526573756c742068617320616c7265616479206265656e207365742e0000000081525060200191505060405180910390fd5b80603390805190602001906117569291906121ee565b506001603460006101000a81548160ff0219169083151502179055507fec9117e779c7185025120058429df00dfe012336e6dfe5ad326b4973db23c2d2813360405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b838110156118075780820151818401526020810190506117ec565b50505050905090810190601f1680156118345780820380516001836020036101000a031916815260200191505b50935050505060405180910390a161184b81611e1f565b50565b6000603560008381526020019081526020016000209050806005015460356000836000016000600115151515815260200190815260200160002054815260200190815260200160002060040154603560008460000160008015151515815260200190815260200160002054815260200190815260200160002060040154600101010181600401819055505050565b6000603560008381526020019081526020016000206001015490505b6000811415156119295761190b8161184e565b603560008281526020019081526020016000206001015490506118f8565b5050565b600080600080600080600088141515611a9e5761194988611e2b565b61195288611ed6565b955086156119635760019450611987565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94505b61199088611ed6565b935084600202841415611a5e5760356000898152602001908152602001600020925082600001600088151515151581526020019081526020016000205491506119d882611ed6565b9050847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02811415611a1057611a0f828815611f58565b5b611a1a8888611f58565b600081141515611a5957603560008981526020019081526020016000209250611a5883600101548460020160009054906101000a900460ff1661192d565b5b611a9d565b8486141515611a9c57603560008981526020019081526020016000209250611a9b83600101548460020160009054906101000a900460ff1661192d565b5b5b5b5050505050505050565b60006035600083815260200190815260200160002090506000816001018190555060008160020160006101000a81548160ff0219169083151502179055506000816000016000801515151581526020019081526020016000208190555060008160000160006001151515158152602001908152602001600020819055506000816004018190555060008160030181905550600081600501819055505050565b6000806000806000806000806000611b5e8b61210b565b9850603560008a8152602001908152602001600020975087600501549650611b8589611311565b603560008d8152602001908152602001600020955085600101549450603560008681526020019081526020016000209350856003015492508560020160009054906101000a900460ff16915085600401549050856000016000600115151515815260200190815260200160002054995085600001600080151515158152602001908152602001600020549a50888460000160008415151515815260200190815260200160002081905550848860010181905550818860020160006101000a81548160ff021916908315150217905550856005015487820103886004018190555082886003018190555086886005018190555060008b141515611cbb578a886000016000801515151581526020019081526020016000208190555088603560008d8152602001908152602001600020600101819055505b60008a141515611d00578988600001600060011515151581526020019081526020016000208190555088603560008c8152602001908152602001600020600101819055505b611d098c611aa8565b611d12896118dc565b505050505050505050505050565b6000806000806000611d3186611e2b565b60356000878152602001908152602001600020945084600101549350600084141515611e1757611d6084611ed6565b92508460020160009054906101000a900460ff1691508115611da4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050611da9565b600190505b60028102831415611e0157807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02611de087611ed6565b1415611df157611df08683611f58565b5b611dfc848315611f58565b611e16565b600083141515611e1557611e1484611d20565b5b5b5b505050505050565b611e2881612161565b50565b6000806000603560008581526020019081526020016000209250603560008460000160008015151515815260200190815260200160002054815260200190815260200160002060030154915060356000846000016000600115151515815260200190815260200160002054815260200190815260200160002060030154905080821115611ec357600182018360030181905550611ed0565b6001810183600301819055505b50505050565b6000806035600084815260200190815260200160002090506035600082600001600060011515151581526020019081526020016000205481526020019081526020016000206003015460356000836000016000801515151581526020019081526020016000205481526020019081526020016000206003015403915050919050565b600080600080600080600080600089159850603560008c815260200190815260200160002097508760020160009054906101000a900460ff169650876001015495508760000160008a1515151581526020019081526020016000205494506035600086815260200190815260200160002093508360000160008b151515158152602001908152602001600020549250603560008781526020019081526020016000209150603560008481526020019081526020016000209050848260000160008915151515815260200190815260200160002081905550868460020160006101000a81548160ff0219169083151502179055508584600101819055508a8460000160008c15151515815260200190815260200160002081905550848860010181905550898860020160006101000a81548160ff021916908315150217905550828860000160008b151515158152602001908152602001600020819055508a8160010181905550888160020160006101000a81548160ff0219169083151502179055506120e38b611e2b565b6120ec85611e2b565b6120f58b61184e565b6120fe8561184e565b5050505050505050505050565b6000806035600084815260200190815260200160002060000160006001151515158152602001908152602001600020549050600081141515612157576121508161210b565b915061215b565b8291505b50919050565b50565b8280548282559060005260206000209081019282156121dd579160200282015b828111156121dc5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190612184565b5b5090506121ea919061226e565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061222f57805160ff191683800117855561225d565b8280016001018555821561225d579182015b8281111561225c578251825591602001919060010190612241565b5b50905061226a91906122b1565b5090565b6122ae91905b808211156122aa57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101612274565b5090565b90565b6122d391905b808211156122cf5760008160009055506001016122b7565b5090565b905600a165627a7a723058206cf293e6c231e23a4b19357607359b9c90e82869352505992fc9b2a44dd1772d0029",
  "sourceMap": "68:133:3:-;;;115:83;8:9:-1;5:2;;;30:1;27;20:12;5:2;115:83:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;160:33;184:8;160:23;;;;;:33;;;:::i;:::-;115:83;68:133;;541:180:13;1121:20:29;1016:12;;;;;;;;;;;:31;;;;1032:15;:13;;;:15;;;:::i;:::-;1016:31;:47;;;;1052:11;;;;;;;;;;;1051:12;1016:47;1008:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1144:12;;;;;;;;;;;1121:35;;1177:4;1162:12;;:19;;;;;;;;;;;;;;;;;;1201:4;1187:11;;:18;;;;;;;;;;;;;;;;;;632:1:13;614:8;:15;:19;606:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;708:8;698:7;:18;;;;;;;;;;;;:::i;:::-;;1235:15:29;1220:12;;:30;;;;;;;;;;;;;;;;;;541:180:13;;:::o;1341:467:29:-;1388:4;1729:10;1774:7;1762:20;1756:26;;1802:1;1796:2;:7;1789:14;;1341:467;;:::o;68:133:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;",
  "deployedSourceMap": "68:133:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9644:191:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9644:191:24;;;;;;;;;;;;;;;;;;;;;;;10970:124;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10970:124:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9841:166;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9841:166:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10013:212;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10013:212:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11219:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11219:105:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7302:439;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7302:439:24;;;;;;;;;;;;;;;;;;;;;;;;;;11100:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11100:113:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;945:93:15;;8:9:-1;5:2;;;30:1;27;20:12;5:2;945:93:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11566:109:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11566:109:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10376:213;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10376:213:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10840:124;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10840:124:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10739:95;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10739:95:24;;;;;;;;;;;;;;;;;;;;;;;4992:163;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4992:163:24;;;;;;;;;;;;;;;;;;;;;;;;;;9526:108;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9526:108:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;541:180:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;541:180:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7747:674:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7747:674:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11449:111;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11449:111:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;625:215:15;;8:9:-1;5:2;;;30:1;27;20:12;5:2;625:215:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;625:215:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10595:138:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10595:138:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8427:1093;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8427:1093:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11330:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11330:113:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;840:200:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;840:200:13;;;;;;10231:139:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10231:139:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9644:191;9686:11;9708:17;9744:18;9726:5;:8;9732:1;9726:8;;;;;;;;;;;9708:26;;9763:5;:26;9769:4;:13;;:19;9783:4;9769:19;;;;;;;;;;;;;;;;9763:26;;;;;;;;;;;9744:45;;9817:5;:11;;;9806:4;:10;;;:22;9799:29;;9644:191;;;:::o;10970:124::-;11033:10;11060:5;:12;11066:5;11060:12;;;;;;;;;;;:21;;:27;11082:4;11060:27;;;;;;;;;;;;;;;;11054:33;;10970:124;;;:::o;9841:166::-;9903:10;9924:8;9954;9933:11;9938:5;9933:4;:11::i;:::-;9924:20;;9963:7;:5;:7::i;:::-;9954:16;;9998:1;9996;9992:3;9988;:7;:9;:11;9980:20;;9841:166;;;;;;:::o;10013:212::-;10070:6;10087:8;10117:9;10155:8;10096:11;10101:5;10096:4;:11::i;:::-;10087:20;;10127:5;:12;10133:5;10127:12;;;;;;;;;;;:18;;;10117:28;;10164:7;:5;:7::i;:::-;10155:16;;10215:3;10212:1;10207:3;10203;10198:4;:8;:12;10197:16;;;;;;;;10193:3;10189;:7;:24;10188:30;;;;;;;;10181:37;;10013:212;;;;;;:::o;11219:105::-;11275:9;11300:5;:12;11306:5;11300:12;;;;;;;;;;;:17;;;;;;;;;;;;11295:22;;11219:105;;;:::o;7302:439::-;7347:14;7362:5;:12;7368:5;7362:12;;;;;;;;;;;7347:27;;7395:1;7388:5;:8;7384:152;;;7424:1;7415;:7;;;:10;7411:39;;;7443:7;;7411:39;7384:152;;;7500:1;7491;:7;;;:10;7487:39;;;7519:7;;7487:39;7384:152;7557:1;7549;:7;;;:9;7545:189;;;7574:1;:7;;;:9;;;;;;;;;;;;;;7607:1;7600:5;:8;;7597:38;;;7626:1;:7;;;:9;;;;;;;;;;;;;;7597:38;7649:28;7661:1;:8;;;7670:1;:6;;;;;;;;;;;;7649:11;:28::i;:::-;7545:189;;;7714:20;7728:5;7714:13;:20::i;:::-;7545:189;7302:439;;;:::o;11100:113::-;11158:11;11187:5;:12;11193:5;11187:12;;;;;;;;;;;:19;;;11180:26;;11100:113;;;:::o;945:93:15:-;1003:4;1022:11;;;;;;;;;;;1015:18;;945:93;;;:::o;11566:109:24:-;11623:10;11650:5;:12;11656:5;11650:12;;;;;;;;;;;:18;;;11644:24;;11566:109;;;:::o;10376:213::-;10431:6;10448:8;10478:9;10516:8;10457:11;10462:5;10457:4;:11::i;:::-;10448:20;;10488:5;:12;10494:5;10488:12;;;;;;;;;;;:18;;;10478:28;;10525:7;:5;:7::i;:::-;10516:16;;10579:3;10576:1;10570:4;10565;10560;:9;:14;10559:18;;;;;;;;10554:4;10550:3;:8;:27;10549:33;;;;;;;;10542:40;;10376:213;;;;;;:::o;10840:124::-;10902:10;10929:5;:12;10935:5;10929:12;;;;;;;;;;;:21;;:28;10951:5;10929:28;;;;;;;;;;;;;;;;10923:34;;10840:124;;;:::o;10739:95::-;10782:10;10810:17;10824:2;10810:13;:17::i;:::-;10803:24;;10739:95;:::o;4992:163::-;5048:1;5041:5;:8;5037:112;;;5063:5;:12;5069:5;5063:12;;;;;;;;;;;:18;;;:20;;;;;;;;;;;;;5037:112;;;5111:27;5125:1;5127:4;5132:5;5111:13;:27::i;:::-;5037:112;4992:163;:::o;9526:108::-;9583:6;9626:1;9607:5;:12;9613:5;9607:12;;;;;;;;;;;:18;;;:20;9600:27;;9526:108;;;:::o;541:180:13:-;1121:20:29;1016:12;;;;;;;;;;;:31;;;;1032:15;:13;:15::i;:::-;1016:31;:47;;;;1052:11;;;;;;;;;;;1051:12;1016:47;1008:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1144:12;;;;;;;;;;;1121:35;;1177:4;1162:12;;:19;;;;;;;;;;;;;;;;;;1201:4;1187:11;;:18;;;;;;;;;;;;;;;;;;632:1:13;614:8;:15;:19;606:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;708:8;698:7;:18;;;;;;;;;;;;:::i;:::-;;1235:15:29;1220:12;;:30;;;;;;;;;;;;;;;;;;541:180:13;;:::o;7747:674:24:-;7798:12;7883:8;7929:21;8126:15;7831:1;7824:5;:8;;7821:594;;;7855:5;:8;7861:1;7855:8;;;;;;;;;;;:14;;;7847:22;;7892:5;:8;7898:1;7892:8;;;;;;;;;;;:17;;:23;7910:4;7892:23;;;;;;;;;;;;;;;;7883:32;;7951:5;:10;7957:3;7951:10;;;;;;;;;;;7929:32;;7975:430;7981:4;7975:430;;;8013:5;8008:3;:10;;8004:278;;;8048:5;8044:3;:9;8041:63;;;8090:8;:14;;;8088:1;:16;8079:25;;;;8041:63;8142:8;:17;;:24;8160:5;8142:24;;;;;;;;;;;;;;;;8126:40;;8204:1;8192:10;:13;;8188:75;;;8240:5;:17;8246:10;8240:17;;;;;;;;;;;:23;;;8231:32;;;;8188:75;8004:278;8308:5;8303:3;:10;8299:41;;;8335:5;;8299:41;8362:8;:17;;:28;8384:5;8380:3;:9;8362:28;;;;;;;;;;;;;;;;8358:32;;7975:430;;;7821:594;7747:674;;;;;;:::o;11449:111::-;11506:11;11535:5;:12;11541:5;11535:12;;;;;;;;;;;:18;;;11528:25;;11449:111;;;:::o;625:215:15:-;679:5;714:1;706:10;;700:16;;;:2;:16;;;;692:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;768:15;780:2;768:11;:15::i;:::-;760:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;829:6;822:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;625:215;;;:::o;10595:138:24:-;10652:10;10673:6;10680:7;:5;:7::i;:::-;10673:14;;10704:22;10721:4;10719:1;10714:4;:6;:11;;;;;;;;10704:9;:22::i;:::-;10697:29;;10595:138;;;;:::o;8427:1093::-;8481:10;8502:11;8603:12;8640:8;8686:21;8761:9;8813:12;8895:22;8951:15;8514:5;:8;8520:1;8514:8;;;;;;;;;;;:14;;;8502:26;;8546:6;8542:3;:10;8538:976;;;8573:1;8566:8;;;;8538:976;8620:6;8616:3;:10;8603:23;;8649:5;:8;8655:1;8649:8;;;;;;;;;;;:17;;:23;8667:4;8649:23;;;;;;;;;;;;;;;;8640:32;;8708:5;:10;8714:3;8708:10;;;;;;;;;;;8686:32;;8732:772;8738:4;8732:772;;;8771:8;:17;;:24;8789:5;8771:24;;;;;;;;;;;;;;;;8761:34;;8841:1;8826:8;:14;;;:16;8813:29;;8870:1;8864:4;:7;;8860:216;;;8918:5;:11;8924:4;8918:11;;;;;;;;;;;8895:34;;8967:9;:15;;;8951:31;;8860:216;;;9056:1;9045:12;;8860:216;9105:10;9097:7;:18;9093:397;;;9143:4;9139:8;;9178:9;9169:18;;9093:397;;;9251:7;9240:10;:18;9232:7;:26;9228:262;;;9288:3;9281:10;;;;9228:262;9358:8;:17;;:23;9376:4;9358:23;;;;;;;;;;;;;;;;9354:27;;9412:5;:10;9418:3;9412:10;;;;;;;;;;;9403:19;;9464:7;9453:10;:18;9444:27;;;;9093:397;8732:772;;;8427:1093;;;;;;;;;;;;:::o;11330:113::-;11388:11;11417:5;:12;11423:5;11417:12;;;;;;;;;;;:19;;;11410:26;;11330:113;;;:::o;840:200:13:-;878:6;887:1;878:10;;874:106;894:7;:14;;;;890:1;:18;874:106;;;923:50;936:36;948:7;956:1;948:10;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;969:1;948:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;948:23:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;948:23:13;;;;;;39:16:-1;36:1;17:17;2:54;948:23:13;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13:2;8:3;5:11;2:2;;;29:1;26;19:12;2:2;948:23:13;;;;;;20:11:-1;15:3;12:20;9:2;;;45:1;42;35:12;9:2;73:11;68:3;64:21;57:28;;126:4;121:3;117:14;163:9;145:16;142:31;139:2;;;186:1;183;176:12;139:2;224:3;218:10;338:9;333:1;319:12;315:20;297:16;293:43;290:58;268:11;254:12;251:29;239:118;236:2;;;370:1;367;360:12;236:2;0:382;;948:23:13;;;;;;936:11;:36::i;:::-;923:12;:50::i;:::-;910:3;;;;;;;874:106;;;985:29;996:17;1004:8;:6;:8::i;:::-;996:7;:17::i;:::-;985:10;:29::i;:::-;840:200;:::o;10231:139:24:-;10290:10;10311:6;10318:7;:5;:7::i;:::-;10311:14;;10342:21;10359:3;10357:1;10352:4;:6;:10;;;;;;;;10342:9;:21::i;:::-;10335:28;;10231:139;;;;:::o;4042:205::-;4115:1;4107:6;:9;;4104:137;;;4132:20;4145:6;4132:12;:20::i;:::-;4166:21;4180:6;4166:13;:21::i;:::-;4201:29;4218:6;4225:4;4201:16;:29::i;:::-;4104:137;4042:205;;:::o;6529:767::-;6582:14;6619:11;6649:9;6675:14;6713:9;6750:10;7060;7095:14;6597:5;:12;6603:5;6597:12;;;;;;;;;;;6582:27;;6631:1;:8;;;6619:20;;6659:1;:6;;;;;;;;;;;;6649:16;;6690:5;:13;6696:6;6690:13;;;;;;;;;;;6675:28;;6723:1;:10;;:17;6734:5;6723:17;;;;;;;;;;;;;;;;6713:27;;6761:1;:10;;:16;6772:4;6761:16;;;;;;;;;;;;;;;;6750:27;;6800:1;6792:4;:9;6791:27;;;;;6816:1;6807:5;:10;6791:27;6787:503;;;6851:1;6834;:10;;:16;6845:4;6834:16;;;;;;;;;;;;;;;:18;;;;6866:15;6875:5;6866:8;:15::i;:::-;6895:24;6907:6;6914:4;6895:11;:24::i;:::-;6787:503;;;6956:1;6949:4;:8;;6948:26;;;;;6972:1;6963:5;:10;;6948:26;6944:346;;;6990:31;7004:5;7010:4;7015:5;6990:13;:31::i;:::-;6944:346;;;7076:5;7071:4;:10;7060:21;;7110:5;:12;7116:5;7110:12;;;;;;;;;;;7095:27;;7153:5;7136:1;:10;;:16;7147:4;7136:16;;;;;;;;;;;;;;;:22;;;;7181:6;7172:1;:8;;:15;;;;7208:4;7201:1;:6;;;:11;;;;;;;;;;;;;;;;;;7226:15;7235:5;7226:8;:15::i;:::-;7255:24;7267:6;7274:4;7255:11;:24::i;:::-;6944:346;6787:503;6529:767;;;;;;;;;:::o;4253:733::-;4329:17;4371:12;4481:18;4886:13;4347:5;:14;4353:7;4347:14;;;;;;;;;;;4329:32;;4384:4;:13;;:19;4398:4;4384:19;;;;;;;;;;;;;;;;4371:32;;4426:1;4417:7;:10;4413:567;;;4462:5;4442:4;:13;;:19;4456:4;4442:19;;;;;;;;;;;;;;;:25;;;;4500:5;:12;4506:5;4500:12;;;;;;;;;;;4481:31;;4539:7;4526:5;:12;;:20;;;;4571:4;4560:5;:10;;;:15;;;;;;;;;;;;;;;;;;4602:1;4589:5;:12;;:14;;;;4629:1;4617:5;:11;;:13;;;;4644:20;4658:5;4644:13;:20::i;:::-;4678:23;4695:5;4678:16;:23::i;:::-;4413:567;;;4739:5;4730:7;:14;4726:254;;;4759:5;:14;4765:7;4759:14;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;4795:19;4808:5;4795:12;:19::i;:::-;4828:20;4842:5;4828:13;:20::i;:::-;4726:254;;;4910:7;4901:5;:16;;4886:32;;4932:37;4946:7;4954:8;4963:5;4932:13;:37::i;:::-;4726:254;4413:567;4253:733;;;;;;;:::o;1341:467:29:-;1388:4;1729:10;1774:7;1762:20;1756:26;;1802:1;1796:2;:7;1789:14;;1341:467;;:::o;1283:213:13:-;1335:7;1350:14;1375:6;1382:1;1375:8;;1371:101;1386:1;:8;1384:1;:10;1371:101;;;1459:1;1457;:3;1447:1;:8;:14;1444:1;:18;1440:1;:23;1433:1;1435;1433:4;;;;;;;;;;;;;;;;;;;;1428:10;;;:36;1419:6;:45;1410:54;;1395:3;;;;;;;1371:101;;;1485:6;1478:13;;1283:213;;;;;:::o;1500:270::-;1550:7;1721:2;1711:13;;;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;1711:13:13;;;;1707:17;;1762:1;1757:2;1754:1;1750:10;1743:21;1741:25;;;:::o;1259:223:15:-;1318:11;;;;;;;;;;;1317:12;1309:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1377:7;1368:6;:16;;;;;;;;;;;;:::i;:::-;;1404:4;1390:11;;:18;;;;;;;;;;;;;;;;;;1419:30;1429:7;1438:10;1419:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1419:30:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1455:22;1469:7;1455:13;:22::i;:::-;1259:223;:::o;753:174:24:-;805:14;820:5;:12;826:5;820:12;;;;;;;;;;;805:27;;913:1;:7;;;883:5;:23;889:1;:10;;:16;900:4;889:16;;;;;;;;;;;;;;;;883:23;;;;;;;;;;;:29;;;852:5;:24;858:1;:10;;:17;869:5;858:17;;;;;;;;;;;;;;;;852:24;;;;;;;;;;;:30;;;850:1;:32;:62;:70;842:1;:7;;:78;;;;753:174;;:::o;933:204::-;986:11;998:5;:12;1004:5;998:12;;;;;;;;;;;:19;;;986:31;;1027:104;1042:1;1034:6;:9;;1027:104;;;1059:20;1072:6;1059:12;:20::i;:::-;1100:5;:13;1106:6;1100:13;;;;;;;;;;;:20;;;1093:27;;1027:104;;;933:204;;:::o;3111:925::-;3244:8;3290;3400:6;3480:14;3527:12;3575:8;3191:1;3182:7;:10;;3178:852;;;3208:22;3222:7;3208:13;:22::i;:::-;3253:23;3268:7;3253:14;:23::i;:::-;3244:32;;3316:4;3312:74;;;3343:1;3338:6;;3312:74;;;3384:2;3379:7;;3312:74;3407:23;3422:7;3407:14;:23::i;:::-;3400:30;;3455:4;3453:1;:6;3448:2;:12;3444:576;;;3495:5;:14;3501:7;3495:14;;;;;;;;;;;3480:29;;3540:1;:10;;:17;3552:4;3551:5;3540:17;;;;;;;;;;;;;;;;3527:30;;3584:23;3599:7;3584:14;:23::i;:::-;3575:32;;3643:4;3638:2;:9;3629:4;:19;3625:66;;;3670:21;3677:7;3686:4;3685:5;3670:6;:21::i;:::-;3625:66;3709:20;3716:7;3724:4;3709:6;:20::i;:::-;3757:1;3751:4;:7;;3747:124;;;3783:5;:14;3789:7;3783:14;;;;;;;;;;;3781:16;;3819:33;3836:1;:8;;;3845:1;:6;;;;;;;;;;;;3819:16;:33::i;:::-;3747:124;3444:576;;;3915:4;3907;:12;;3903:117;;;3940:5;:14;3946:7;3940:14;;;;;;;;;;;3938:16;;3972:33;3989:1;:8;;;3998:1;:6;;;;;;;;;;;;3972:16;:33::i;:::-;3903:117;3444:576;3178:852;3111:925;;;;;;;;:::o;5398:239::-;5446:14;5461:5;:12;5467:5;5461:12;;;;;;;;;;;5446:27;;5492:1;5483;:8;;:10;;;;5510:5;5503:1;:6;;;:12;;;;;;;;;;;;;;;;;;5543:1;5525;:10;;:17;5536:5;5525:17;;;;;;;;;;;;;;;:19;;;;5571:1;5554;:10;;:16;5565:4;5554:16;;;;;;;;;;;;;;;:18;;;;5590:1;5582;:7;;:9;;;;5610:1;5601;:8;;:10;;;;5629:1;5621;:7;;:9;;;;5398:239;;:::o;5643:880::-;5717:8;5756:14;5791:10;5847:14;5884:11;5914:14;5952:11;5982:9;6008:10;5726:20;5741:4;5726:14;:20::i;:::-;5717:29;;5771:5;:10;5777:3;5771:10;;;;;;;;;;;5756:25;;5802:1;:7;;;5791:18;;5819;5833:3;5819:13;:18::i;:::-;5862:5;:12;5868:5;5862:12;;;;;;;;;;;5847:27;;5896:1;:8;;;5884:20;;5929:5;:13;5935:6;5929:13;;;;;;;;;;;5914:28;;5964:1;:8;;;5952:20;;5992:1;:6;;;;;;;;;;;;5982:16;;6019:1;:7;;;6008:18;;6042:1;:10;;:16;6053:4;6042:16;;;;;;;;;;;;;;;;6036:22;;6073:1;:10;;:17;6084:5;6073:17;;;;;;;;;;;;;;;;6068:22;;6117:3;6100:1;:10;;:16;6111:4;6100:16;;;;;;;;;;;;;;;:20;;;;6139:6;6130:1;:8;;:15;;;;6162:4;6155:1;:6;;;:11;;;;;;;;;;;;;;;;;;6196:1;:7;;;6190:5;6184;:11;:19;6176:1;:7;;:27;;;;6222:6;6213:1;:8;;:15;;;;6246:5;6238:1;:7;;:13;;;;6271:1;6265:4;:7;;6261:96;;;6306:4;6288:1;:10;;:17;6299:5;6288:17;;;;;;;;;;;;;;;:22;;;;6343:3;6324:5;:11;6330:4;6324:11;;;;;;;;;;;:18;;:22;;;;6261:96;6377:1;6370:5;:8;;6366:98;;;6411:5;6394:1;:10;;:16;6405:4;6394:16;;;;;;;;;;;;;;;:22;;;;6450:3;6430:5;:12;6436:5;6430:12;;;;;;;;;;;:19;;:23;;;;6366:98;6473:15;6482:5;6473:8;:15::i;:::-;6498:18;6512:3;6498:13;:18::i;:::-;5643:880;;;;;;;;;;;;:::o;2461:644::-;2551:14;2590:12;2651:8;2697:9;2727:8;2519:22;2533:7;2519:13;:22::i;:::-;2566:5;:14;2572:7;2566:14;;;;;;;;;;;2551:29;;2603:1;:8;;;2590:21;;2634:1;2625:7;:10;;2621:478;;;2660:23;2675:7;2660:14;:23::i;:::-;2651:32;;2707:1;:6;;;;;;;;;;;;2697:16;;2753:4;2749:74;;;2780:2;2775:7;;2749:74;;;2822:1;2817:6;;2749:74;2854:1;2849:4;:6;2841:4;:14;2837:251;;;2912:4;2907:2;:9;2879:23;2894:7;2879:14;:23::i;:::-;:38;2875:84;;;2939:20;2946:7;2954:4;2939:6;:20::i;:::-;2875:84;2977:21;2984:7;2993:4;2992:5;2977:6;:21::i;:::-;2837:251;;;3043:1;3035:4;:9;;3031:57;;;3063:25;3080:7;3063:16;:25::i;:::-;3031:57;2837:251;2621:478;2461:644;;;;;;:::o;1156:86:13:-;1209:28;1229:7;1209:19;:28::i;:::-;1156:86;:::o;1143:327:24:-;1196:14;1233:16;1291:17;1211:5;:12;1217:5;1211:12;;;;;;;;;;;1196:27;;1250:5;:24;1256:1;:10;;:17;1267:5;1256:17;;;;;;;;;;;;;;;;1250:24;;;;;;;;;;;:31;;;1233:48;;1309:5;:23;1315:1;:10;;:16;1326:4;1315:16;;;;;;;;;;;;;;;;1309:23;;;;;;;;;;;:30;;;1291:48;;1365:12;1353:11;:24;1349:114;;;1412:1;1400:11;:13;1391:1;:8;;:22;;;;1349:114;;;1462:1;1449:12;:14;1440:1;:8;;:23;;;;1349:114;1143:327;;;;:::o;1476:203::-;1538:6;1556:14;1571:5;:12;1577:5;1571:12;;;;;;;;;;;1556:27;;1641:5;:23;1647:1;:10;;:16;1658:4;1647:16;;;;;;;;;;;;;;;;1641:23;;;;;;;;;;;:30;;;1604:5;:24;1610:1;:10;;:17;1621:5;1610:17;;;;;;;;;;;;;;;;1604:24;;;;;;;;;;;:31;;;1600:72;1593:79;;1476:203;;;;:::o;1685:770::-;1740:14;1769;1807:9;1833:11;1863:14;1909:18;1954:11;1995:14;2033;1756:3;1755:4;1740:19;;1784:5;:12;1790:5;1784:12;;;;;;;;;;;1769:27;;1817:1;:6;;;;;;;;;;;;1807:16;;1845:1;:8;;;1833:20;;1878:1;:10;;:21;1889:9;1878:21;;;;;;;;;;;;;;;;1863:36;;1928:5;:16;1934:9;1928:16;;;;;;;;;;;1909:35;;1966:5;:14;;:19;1981:3;1966:19;;;;;;;;;;;;;;;;1954:31;;2010:5;:13;2016:6;2010:13;;;;;;;;;;;1995:28;;2048:5;:13;2054:6;2048:13;;;;;;;;;;;2033:28;;2088:9;2071:1;:10;;:16;2082:4;2071:16;;;;;;;;;;;;;;;:26;;;;2118:4;2107:5;:10;;;:15;;;;;;;;;;;;;;;;;;2145:6;2132:5;:12;;:19;;;;2181:5;2161;:14;;:19;2176:3;2161:19;;;;;;;;;;;;;;;:25;;;;2205:9;2196:1;:8;;:18;;;;2231:3;2224:1;:6;;;:10;;;;;;;;;;;;;;;;;;2266:6;2244:1;:10;;:21;2255:9;2244:21;;;;;;;;;;;;;;;:28;;;;2291:5;2282:1;:8;;:14;;;;2313:9;2306:1;:6;;;:16;;;;;;;;;;;;;;;;;;2332:20;2346:5;2332:13;:20::i;:::-;2362:24;2376:9;2362:13;:24::i;:::-;2396:19;2409:5;2396:12;:19::i;:::-;2425:23;2438:9;2425:12;:23::i;:::-;1685:770;;;;;;;;;;;:::o;5161:231::-;5223:9;5244:10;5255:5;:12;5261:5;5255:12;;;;;;;;;;;:21;;:27;5277:4;5255:27;;;;;;;;;;;;;;;;5244:38;;5303:1;5296:5;:8;;5292:93;;;5325:21;5340:5;5325:14;:21::i;:::-;5318:28;;;;5292:93;5380:5;5373:12;;5161:231;;;;;:::o;1559:81:15:-;;:::o;68:133:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o",
  "source": "pragma solidity ^0.4.24;\n\nimport \"../../Oracles/MedianOracle.sol\";\n\ncontract MedianOracleMock is MedianOracle {\n\n  constructor(IOracle[] _oracles) public {\n    MedianOracle.initialize(_oracles);\n  }\n\n}\n",
  "sourcePath": "/Users/mfcalvanese/dev/eth/tidbit-eth/contracts/Mocks/Oracles/MedianOracleMock.sol",
  "ast": {
    "absolutePath": "/Users/mfcalvanese/dev/eth/tidbit-eth/contracts/Mocks/Oracles/MedianOracleMock.sol",
    "exportedSymbols": {
      "MedianOracleMock": [
        77
      ]
    },
    "id": 78,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 60,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:3"
      },
      {
        "absolutePath": "/Users/mfcalvanese/dev/eth/tidbit-eth/contracts/Oracles/MedianOracle.sol",
        "file": "../../Oracles/MedianOracle.sol",
        "id": 61,
        "nodeType": "ImportDirective",
        "scope": 78,
        "sourceUnit": 427,
        "src": "26:40:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 62,
              "name": "MedianOracle",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 426,
              "src": "97:12:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_MedianOracle_$426",
                "typeString": "contract MedianOracle"
              }
            },
            "id": 63,
            "nodeType": "InheritanceSpecifier",
            "src": "97:12:3"
          }
        ],
        "contractDependencies": [
          273,
          426,
          734,
          2794,
          3241
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 77,
        "linearizedBaseContracts": [
          77,
          426,
          2794,
          734,
          273,
          3241
        ],
        "name": "MedianOracleMock",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 75,
              "nodeType": "Block",
              "src": "154:44:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 72,
                        "name": "_oracles",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 66,
                        "src": "184:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IOracle_$273_$dyn_memory_ptr",
                          "typeString": "contract IOracle[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_contract$_IOracle_$273_$dyn_memory_ptr",
                          "typeString": "contract IOracle[] memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 69,
                        "name": "MedianOracle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 426,
                        "src": "160:12:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_MedianOracle_$426_$",
                          "typeString": "type(contract MedianOracle)"
                        }
                      },
                      "id": 71,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 309,
                      "src": "160:23:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_contract$_IOracle_$273_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (contract IOracle[] memory)"
                      }
                    },
                    "id": 73,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "160:33:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 74,
                  "nodeType": "ExpressionStatement",
                  "src": "160:33:3"
                }
              ]
            },
            "documentation": null,
            "id": 76,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 67,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66,
                  "name": "_oracles",
                  "nodeType": "VariableDeclaration",
                  "scope": 76,
                  "src": "127:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_IOracle_$273_$dyn_memory_ptr",
                    "typeString": "contract IOracle[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 64,
                      "name": "IOracle",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 273,
                      "src": "127:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IOracle_$273",
                        "typeString": "contract IOracle"
                      }
                    },
                    "id": 65,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "127:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IOracle_$273_$dyn_storage_ptr",
                      "typeString": "contract IOracle[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "126:20:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 68,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "154:0:3"
            },
            "scope": 77,
            "src": "115:83:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 78,
        "src": "68:133:3"
      }
    ],
    "src": "0:202:3"
  },
  "legacyAST": {
    "absolutePath": "/Users/mfcalvanese/dev/eth/tidbit-eth/contracts/Mocks/Oracles/MedianOracleMock.sol",
    "exportedSymbols": {
      "MedianOracleMock": [
        77
      ]
    },
    "id": 78,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 60,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:3"
      },
      {
        "absolutePath": "/Users/mfcalvanese/dev/eth/tidbit-eth/contracts/Oracles/MedianOracle.sol",
        "file": "../../Oracles/MedianOracle.sol",
        "id": 61,
        "nodeType": "ImportDirective",
        "scope": 78,
        "sourceUnit": 427,
        "src": "26:40:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 62,
              "name": "MedianOracle",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 426,
              "src": "97:12:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_MedianOracle_$426",
                "typeString": "contract MedianOracle"
              }
            },
            "id": 63,
            "nodeType": "InheritanceSpecifier",
            "src": "97:12:3"
          }
        ],
        "contractDependencies": [
          273,
          426,
          734,
          2794,
          3241
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 77,
        "linearizedBaseContracts": [
          77,
          426,
          2794,
          734,
          273,
          3241
        ],
        "name": "MedianOracleMock",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 75,
              "nodeType": "Block",
              "src": "154:44:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 72,
                        "name": "_oracles",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 66,
                        "src": "184:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IOracle_$273_$dyn_memory_ptr",
                          "typeString": "contract IOracle[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_contract$_IOracle_$273_$dyn_memory_ptr",
                          "typeString": "contract IOracle[] memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 69,
                        "name": "MedianOracle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 426,
                        "src": "160:12:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_MedianOracle_$426_$",
                          "typeString": "type(contract MedianOracle)"
                        }
                      },
                      "id": 71,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 309,
                      "src": "160:23:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_contract$_IOracle_$273_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (contract IOracle[] memory)"
                      }
                    },
                    "id": 73,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "160:33:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 74,
                  "nodeType": "ExpressionStatement",
                  "src": "160:33:3"
                }
              ]
            },
            "documentation": null,
            "id": 76,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 67,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66,
                  "name": "_oracles",
                  "nodeType": "VariableDeclaration",
                  "scope": 76,
                  "src": "127:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_IOracle_$273_$dyn_memory_ptr",
                    "typeString": "contract IOracle[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 64,
                      "name": "IOracle",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 273,
                      "src": "127:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IOracle_$273",
                        "typeString": "contract IOracle"
                      }
                    },
                    "id": 65,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "127:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IOracle_$273_$dyn_storage_ptr",
                      "typeString": "contract IOracle[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "126:20:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 68,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "154:0:3"
            },
            "scope": 77,
            "src": "115:83:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 78,
        "src": "68:133:3"
      }
    ],
    "src": "0:202:3"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2018-10-31T13:24:20.715Z"
}