{
  "contractName": "OrderStatisticTree",
  "abi": [
    {
      "constant": false,
      "inputs": [
        {
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "insert",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "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": "rank",
      "outputs": [
        {
          "name": "smaller",
          "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": "duplicates",
      "outputs": [
        {
          "name": "n",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "count",
      "outputs": [
        {
          "name": "result",
          "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": "perc",
          "type": "uint256"
        }
      ],
      "name": "at_percentile",
      "outputs": [
        {
          "name": "value",
          "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": "perm",
          "type": "uint256"
        }
      ],
      "name": "at_permille",
      "outputs": [
        {
          "name": "value",
          "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": 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": "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": "node_parent",
      "outputs": [
        {
          "name": "parent",
          "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": true,
      "inputs": [
        {
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "node_height",
      "outputs": [
        {
          "name": "height",
          "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": "value",
          "type": "uint256"
        }
      ],
      "name": "node_dupes",
      "outputs": [
        {
          "name": "dupes",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b506117b4806100206000396000f300608060405260043610610107576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306661abd1461010c57806321f0a7271461013757806337da8058146101785780633b5f24eb146101c757806348da1532146102085780634cc822151461024d5780635014a18e1461027a57806356632637146102bb578063598ac8f2146102fc57806366d5c8ed1461033d578063770494571461037e57806390b5561d146103a95780639f853717146103d6578063b37c191b14610417578063bdc0f93c14610458578063d9269cb414610499578063e832fda3146104da578063e973b7ba1461051b578063fa2b579d1461055c575b600080fd5b34801561011857600080fd5b5061012161059d565b6040518082815260200191505060405180910390f35b34801561014357600080fd5b50610162600480360381019080803590602001909291905050506105f6565b6040518082815260200191505060405180910390f35b34801561018457600080fd5b506101ad600480360381019080803590602001909291908035906020019092919050505061062b565b604051808215151515815260200191505060405180910390f35b3480156101d357600080fd5b506101f260048036038101908080359060200190929190505050610657565b6040518082815260200191505060405180910390f35b34801561021457600080fd5b50610233600480360381019080803590602001909291905050506106b6565b604051808215151515815260200191505060405180910390f35b34801561025957600080fd5b50610278600480360381019080803590602001909291905050506106e2565b005b34801561028657600080fd5b506102a5600480360381019080803590602001909291905050506107a0565b6040518082815260200191505060405180910390f35b3480156102c757600080fd5b506102e6600480360381019080803590602001909291905050506107bf565b6040518082815260200191505060405180910390f35b34801561030857600080fd5b50610327600480360381019080803590602001909291905050506107de565b6040518082815260200191505060405180910390f35b34801561034957600080fd5b506103686004803603810190808035906020019092919050505061083f565b6040518082815260200191505060405180910390f35b34801561038a57600080fd5b50610393610873565b6040518082815260200191505060405180910390f35b3480156103b557600080fd5b506103d460048036038101908080359060200190929190505050610884565b005b3480156103e257600080fd5b50610401600480360381019080803590602001909291905050506108c8565b6040518082815260200191505060405180910390f35b34801561042357600080fd5b50610442600480360381019080803590602001909291905050506108ea565b6040518082815260200191505060405180910390f35b34801561046457600080fd5b50610483600480360381019080803590602001909291905050506109f5565b6040518082815260200191505060405180910390f35b3480156104a557600080fd5b506104c460048036038101908080359060200190929190505050610a14565b6040518082815260200191505060405180910390f35b3480156104e657600080fd5b5061050560048036038101908080359060200190929190505050610a41565b6040518082815260200191505060405180910390f35b34801561052757600080fd5b5061054660048036038101908080359060200190929190505050610b8d565b6040518082815260200191505060405180910390f35b34801561056857600080fd5b5061058760048036038101908080359060200190929190505050610bac565b6040518082815260200191505060405180910390f35b600080600080600080815260200190815260200160002091506000808360000160006001151515158152602001908152602001600020548152602001908152602001600020905080600401548260050154019250505090565b600080600083815260200190815260200160002060000160006001151515158152602001908152602001600020549050919050565b6000806000610639856108ea565b915061064361059d565b905083600183830303109250505092915050565b600080600080610666856108ea565b925060008086815260200190815260200160002060050154915061068861059d565b905080600260648085020181151561069c57fe5b0460648502018115156106ab57fe5b049350505050919050565b600080600083815260200190815260200160002060020160009054906101000a900460ff169050919050565b600080600083815260200190815260200160002090506000821415610718576000816005015414156107135761079c565b61072b565b60008160040154141561072a5761079c565b5b6000816005015411156107915780600501600081548092919060019003919050555060008214151561076d578060040160008154809291906001900391905055505b61078c81600101548260020160009054906101000a900460ff16610bd8565b61079b565b61079a82610c03565b5b5b5050565b6000806000838152602001908152602001600020600101549050919050565b6000806000838152602001908152602001600020600501549050919050565b6000806000806107ed856108ea565b925060008086815260200190815260200160002060050154915061080f61059d565b90508060026103e88085020181151561082457fe5b046103e885020181151561083457fe5b049350505050919050565b6000806000838152602001908152602001600020600001600080151515158152602001908152602001600020549050919050565b600061087f6032610bac565b905090565b60008114156108b757600080828152602001908152602001600020600501600081548092919060010191905055506108c5565b6108c46000600183610d7a565b5b50565b6000600160008084815260200190815260200160002060050154019050919050565b6000806000806000851415156109ed576000808081526020019081526020016000206005015493506000808081526020019081526020016000206000016000600115151515815260200190815260200160002054925060008084815260200190815260200160002091505b6001156109ec5784831115156109bc578483101561097a578160050154600101840193505b816000016000801515151581526020019081526020016000205490506000811415156109bb5760008082815260200190815260200160002060040154840193505b5b848314156109c9576109ec565b816000016000868510151515158152602001908152602001600020549250610955565b5b505050919050565b6000806000838152602001908152602001600020600401549050919050565b600080610a1f61059d565b9050610a396103e8828502811515610a3357fe5b04610a41565b915050919050565b6000806000806000806000806000806000808152602001908152602001600020600501549750878a1015610a785760009850610b80565b878a0396506000808081526020019081526020016000206000016000600115151515815260200190815260200160002054955060008087815260200190815260200160002094505b600115610b7f578460000160008015151515815260200190815260200160002054935060018560050154019250600084141515610b1757600080858152602001908152602001600020915081600401549050610b1c565b600090505b80871015610b2f57839550819450610b7a565b828101871015610b4157859850610b80565b84600001600060011515151581526020019081526020016000205495506000808781526020019081526020016000209450828101870396505b610ac0565b5b5050505050505050919050565b6000806000838152602001908152602001600020600301549050919050565b600080610bb761059d565b9050610bd06064828502811515610bca57fe5b04610a41565b915050919050565b600082141515610bff57610beb82610e9b565b610bf482610f26565b610bfe8282610f75565b5b5050565b6000806000806000806000806000808a81526020019081526020016000209750876001015496508760020160009054906101000a900460ff1695506000808881526020019081526020016000209450876000016000801515151581526020019081526020016000205493508760000160006001151515158152602001908152602001600020549250600084148015610c9b5750600083145b15610cd75760008560000160008815151515815260200190815260200160002081905550610cc8896110ed565b610cd28787610bd8565b610d6f565b60008414158015610ce9575060008314155b15610cfe57610cf989858561118b565b610d6e565b82840191506000808381526020019081526020016000209050818560000160008815151515815260200190815260200160002081905550868160010181905550858160020160006101000a81548160ff021916908315150217905550610d63896110ed565b610d6d8787610bd8565b5b5b505050505050505050565b6000806000806000808881526020019081526020016000209350836000016000871515151581526020019081526020016000205492506000831415610e3b578484600001600088151515158152602001908152602001600020819055506000808681526020019081526020016000209150868260010181905550858260020160006101000a81548160ff0219169083151502179055506001826003018190555060018260040181905550610e2d85610f26565b610e368561135f565b610e92565b84831415610e7f5760008084815260200190815260200160002060050160008154809291906001019190505550610e7185610e9b565b610e7a85610f26565b610e91565b828510159050610e90838287610d7a565b5b5b50505050505050565b6000806000838152602001908152602001600020905080600501546000808360000160006001151515158152602001908152602001600020548152602001908152602001600020600401546000808460000160008015151515815260200190815260200160002054815260200190815260200160002060040154600101010181600401819055505050565b60008060008381526020019081526020016000206001015490505b600081141515610f7157610f5481610e9b565b600080828152602001908152602001600020600101549050610f41565b5050565b6000806000806000806000881415156110e357610f918861145d565b610f9a88611505565b95508615610fab5760019450610fcf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94505b610fd888611505565b9350846002028414156110a4576000808981526020019081526020016000209250826000016000881515151515815260200190815260200160002054915061101f82611505565b9050847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0281141561105757611056828815611584565b5b6110618888611584565b60008114151561109f57600080898152602001908152602001600020925061109e83600101548460020160009054906101000a900460ff16610f75565b5b6110e2565b84861415156110e15760008089815260200190815260200160002092506110e083600101548460020160009054906101000a900460ff16610f75565b5b5b5b5050505050505050565b600080600083815260200190815260200160002090506000816001018190555060008160020160006101000a81548160ff0219169083151502179055506000816000016000801515151581526020019081526020016000208190555060008160000160006001151515158152602001908152602001600020819055506000816004018190555060008160030181905550600081600501819055505050565b60008060008060008060008060006111a28b611733565b98506000808a81526020019081526020016000209750876005015496506111c889610c03565b6000808d81526020019081526020016000209550856001015494506000808681526020019081526020016000209350856003015492508560020160009054906101000a900460ff16915085600401549050856000016000600115151515815260200190815260200160002054995085600001600080151515158152602001908152602001600020549a50888460000160008415151515815260200190815260200160002081905550848860010181905550818860020160006101000a81548160ff021916908315150217905550856005015487820103886004018190555082886003018190555086886005018190555060008b1415156112fb578a8860000160008015151515815260200190815260200160002081905550886000808d8152602001908152602001600020600101819055505b60008a14151561133f5789886000016000600115151515815260200190815260200160002081905550886000808c8152602001908152602001600020600101819055505b6113488c6110ed565b61135189610f26565b505050505050505050505050565b60008060008060006113708661145d565b6000808781526020019081526020016000209450846001015493506000841415156114555761139e84611505565b92508460020160009054906101000a900460ff16915081156113e2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90506113e7565b600190505b6002810283141561143f57807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0261141e87611505565b141561142f5761142e8683611584565b5b61143a848315611584565b611454565b600083141515611453576114528461135f565b5b5b5b505050505050565b60008060008060008581526020019081526020016000209250600080846000016000801515151581526020019081526020016000205481526020019081526020016000206003015491506000808460000160006001151515158152602001908152602001600020548152602001908152602001600020600301549050808211156114f2576001820183600301819055506114ff565b6001810183600301819055505b50505050565b6000806000808481526020019081526020016000209050600080826000016000600115151515815260200190815260200160002054815260200190815260200160002060030154600080836000016000801515151581526020019081526020016000205481526020019081526020016000206003015403915050919050565b6000806000806000806000806000891598506000808c815260200190815260200160002097508760020160009054906101000a900460ff169650876001015495508760000160008a15151515815260200190815260200160002054945060008086815260200190815260200160002093508360000160008b15151515815260200190815260200160002054925060008087815260200190815260200160002091506000808481526020019081526020016000209050848260000160008915151515815260200190815260200160002081905550868460020160006101000a81548160ff0219169083151502179055508584600101819055508a8460000160008c15151515815260200190815260200160002081905550848860010181905550898860020160006101000a81548160ff021916908315150217905550828860000160008b151515158152602001908152602001600020819055508a8160010181905550888160020160006101000a81548160ff02191690831515021790555061170b8b61145d565b6117148561145d565b61171d8b610e9b565b61172685610e9b565b5050505050505050505050565b6000806000808481526020019081526020016000206000016000600115151515815260200190815260200160002054905060008114151561177e5761177781611733565b9150611782565b8291505b509190505600a165627a7a72305820de5a29ec27d8106d816cd3d382d5c810373f981e9bea293532c3d53487ad93050029",
  "deployedBytecode": "0x608060405260043610610107576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306661abd1461010c57806321f0a7271461013757806337da8058146101785780633b5f24eb146101c757806348da1532146102085780634cc822151461024d5780635014a18e1461027a57806356632637146102bb578063598ac8f2146102fc57806366d5c8ed1461033d578063770494571461037e57806390b5561d146103a95780639f853717146103d6578063b37c191b14610417578063bdc0f93c14610458578063d9269cb414610499578063e832fda3146104da578063e973b7ba1461051b578063fa2b579d1461055c575b600080fd5b34801561011857600080fd5b5061012161059d565b6040518082815260200191505060405180910390f35b34801561014357600080fd5b50610162600480360381019080803590602001909291905050506105f6565b6040518082815260200191505060405180910390f35b34801561018457600080fd5b506101ad600480360381019080803590602001909291908035906020019092919050505061062b565b604051808215151515815260200191505060405180910390f35b3480156101d357600080fd5b506101f260048036038101908080359060200190929190505050610657565b6040518082815260200191505060405180910390f35b34801561021457600080fd5b50610233600480360381019080803590602001909291905050506106b6565b604051808215151515815260200191505060405180910390f35b34801561025957600080fd5b50610278600480360381019080803590602001909291905050506106e2565b005b34801561028657600080fd5b506102a5600480360381019080803590602001909291905050506107a0565b6040518082815260200191505060405180910390f35b3480156102c757600080fd5b506102e6600480360381019080803590602001909291905050506107bf565b6040518082815260200191505060405180910390f35b34801561030857600080fd5b50610327600480360381019080803590602001909291905050506107de565b6040518082815260200191505060405180910390f35b34801561034957600080fd5b506103686004803603810190808035906020019092919050505061083f565b6040518082815260200191505060405180910390f35b34801561038a57600080fd5b50610393610873565b6040518082815260200191505060405180910390f35b3480156103b557600080fd5b506103d460048036038101908080359060200190929190505050610884565b005b3480156103e257600080fd5b50610401600480360381019080803590602001909291905050506108c8565b6040518082815260200191505060405180910390f35b34801561042357600080fd5b50610442600480360381019080803590602001909291905050506108ea565b6040518082815260200191505060405180910390f35b34801561046457600080fd5b50610483600480360381019080803590602001909291905050506109f5565b6040518082815260200191505060405180910390f35b3480156104a557600080fd5b506104c460048036038101908080359060200190929190505050610a14565b6040518082815260200191505060405180910390f35b3480156104e657600080fd5b5061050560048036038101908080359060200190929190505050610a41565b6040518082815260200191505060405180910390f35b34801561052757600080fd5b5061054660048036038101908080359060200190929190505050610b8d565b6040518082815260200191505060405180910390f35b34801561056857600080fd5b5061058760048036038101908080359060200190929190505050610bac565b6040518082815260200191505060405180910390f35b600080600080600080815260200190815260200160002091506000808360000160006001151515158152602001908152602001600020548152602001908152602001600020905080600401548260050154019250505090565b600080600083815260200190815260200160002060000160006001151515158152602001908152602001600020549050919050565b6000806000610639856108ea565b915061064361059d565b905083600183830303109250505092915050565b600080600080610666856108ea565b925060008086815260200190815260200160002060050154915061068861059d565b905080600260648085020181151561069c57fe5b0460648502018115156106ab57fe5b049350505050919050565b600080600083815260200190815260200160002060020160009054906101000a900460ff169050919050565b600080600083815260200190815260200160002090506000821415610718576000816005015414156107135761079c565b61072b565b60008160040154141561072a5761079c565b5b6000816005015411156107915780600501600081548092919060019003919050555060008214151561076d578060040160008154809291906001900391905055505b61078c81600101548260020160009054906101000a900460ff16610bd8565b61079b565b61079a82610c03565b5b5b5050565b6000806000838152602001908152602001600020600101549050919050565b6000806000838152602001908152602001600020600501549050919050565b6000806000806107ed856108ea565b925060008086815260200190815260200160002060050154915061080f61059d565b90508060026103e88085020181151561082457fe5b046103e885020181151561083457fe5b049350505050919050565b6000806000838152602001908152602001600020600001600080151515158152602001908152602001600020549050919050565b600061087f6032610bac565b905090565b60008114156108b757600080828152602001908152602001600020600501600081548092919060010191905055506108c5565b6108c46000600183610d7a565b5b50565b6000600160008084815260200190815260200160002060050154019050919050565b6000806000806000851415156109ed576000808081526020019081526020016000206005015493506000808081526020019081526020016000206000016000600115151515815260200190815260200160002054925060008084815260200190815260200160002091505b6001156109ec5784831115156109bc578483101561097a578160050154600101840193505b816000016000801515151581526020019081526020016000205490506000811415156109bb5760008082815260200190815260200160002060040154840193505b5b848314156109c9576109ec565b816000016000868510151515158152602001908152602001600020549250610955565b5b505050919050565b6000806000838152602001908152602001600020600401549050919050565b600080610a1f61059d565b9050610a396103e8828502811515610a3357fe5b04610a41565b915050919050565b6000806000806000806000806000806000808152602001908152602001600020600501549750878a1015610a785760009850610b80565b878a0396506000808081526020019081526020016000206000016000600115151515815260200190815260200160002054955060008087815260200190815260200160002094505b600115610b7f578460000160008015151515815260200190815260200160002054935060018560050154019250600084141515610b1757600080858152602001908152602001600020915081600401549050610b1c565b600090505b80871015610b2f57839550819450610b7a565b828101871015610b4157859850610b80565b84600001600060011515151581526020019081526020016000205495506000808781526020019081526020016000209450828101870396505b610ac0565b5b5050505050505050919050565b6000806000838152602001908152602001600020600301549050919050565b600080610bb761059d565b9050610bd06064828502811515610bca57fe5b04610a41565b915050919050565b600082141515610bff57610beb82610e9b565b610bf482610f26565b610bfe8282610f75565b5b5050565b6000806000806000806000806000808a81526020019081526020016000209750876001015496508760020160009054906101000a900460ff1695506000808881526020019081526020016000209450876000016000801515151581526020019081526020016000205493508760000160006001151515158152602001908152602001600020549250600084148015610c9b5750600083145b15610cd75760008560000160008815151515815260200190815260200160002081905550610cc8896110ed565b610cd28787610bd8565b610d6f565b60008414158015610ce9575060008314155b15610cfe57610cf989858561118b565b610d6e565b82840191506000808381526020019081526020016000209050818560000160008815151515815260200190815260200160002081905550868160010181905550858160020160006101000a81548160ff021916908315150217905550610d63896110ed565b610d6d8787610bd8565b5b5b505050505050505050565b6000806000806000808881526020019081526020016000209350836000016000871515151581526020019081526020016000205492506000831415610e3b578484600001600088151515158152602001908152602001600020819055506000808681526020019081526020016000209150868260010181905550858260020160006101000a81548160ff0219169083151502179055506001826003018190555060018260040181905550610e2d85610f26565b610e368561135f565b610e92565b84831415610e7f5760008084815260200190815260200160002060050160008154809291906001019190505550610e7185610e9b565b610e7a85610f26565b610e91565b828510159050610e90838287610d7a565b5b5b50505050505050565b6000806000838152602001908152602001600020905080600501546000808360000160006001151515158152602001908152602001600020548152602001908152602001600020600401546000808460000160008015151515815260200190815260200160002054815260200190815260200160002060040154600101010181600401819055505050565b60008060008381526020019081526020016000206001015490505b600081141515610f7157610f5481610e9b565b600080828152602001908152602001600020600101549050610f41565b5050565b6000806000806000806000881415156110e357610f918861145d565b610f9a88611505565b95508615610fab5760019450610fcf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94505b610fd888611505565b9350846002028414156110a4576000808981526020019081526020016000209250826000016000881515151515815260200190815260200160002054915061101f82611505565b9050847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0281141561105757611056828815611584565b5b6110618888611584565b60008114151561109f57600080898152602001908152602001600020925061109e83600101548460020160009054906101000a900460ff16610f75565b5b6110e2565b84861415156110e15760008089815260200190815260200160002092506110e083600101548460020160009054906101000a900460ff16610f75565b5b5b5b5050505050505050565b600080600083815260200190815260200160002090506000816001018190555060008160020160006101000a81548160ff0219169083151502179055506000816000016000801515151581526020019081526020016000208190555060008160000160006001151515158152602001908152602001600020819055506000816004018190555060008160030181905550600081600501819055505050565b60008060008060008060008060006111a28b611733565b98506000808a81526020019081526020016000209750876005015496506111c889610c03565b6000808d81526020019081526020016000209550856001015494506000808681526020019081526020016000209350856003015492508560020160009054906101000a900460ff16915085600401549050856000016000600115151515815260200190815260200160002054995085600001600080151515158152602001908152602001600020549a50888460000160008415151515815260200190815260200160002081905550848860010181905550818860020160006101000a81548160ff021916908315150217905550856005015487820103886004018190555082886003018190555086886005018190555060008b1415156112fb578a8860000160008015151515815260200190815260200160002081905550886000808d8152602001908152602001600020600101819055505b60008a14151561133f5789886000016000600115151515815260200190815260200160002081905550886000808c8152602001908152602001600020600101819055505b6113488c6110ed565b61135189610f26565b505050505050505050505050565b60008060008060006113708661145d565b6000808781526020019081526020016000209450846001015493506000841415156114555761139e84611505565b92508460020160009054906101000a900460ff16915081156113e2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90506113e7565b600190505b6002810283141561143f57807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0261141e87611505565b141561142f5761142e8683611584565b5b61143a848315611584565b611454565b600083141515611453576114528461135f565b5b5b5b505050505050565b60008060008060008581526020019081526020016000209250600080846000016000801515151581526020019081526020016000205481526020019081526020016000206003015491506000808460000160006001151515158152602001908152602001600020548152602001908152602001600020600301549050808211156114f2576001820183600301819055506114ff565b6001810183600301819055505b50505050565b6000806000808481526020019081526020016000209050600080826000016000600115151515815260200190815260200160002054815260200190815260200160002060030154600080836000016000801515151581526020019081526020016000205481526020019081526020016000206003015403915050919050565b6000806000806000806000806000891598506000808c815260200190815260200160002097508760020160009054906101000a900460ff169650876001015495508760000160008a15151515815260200190815260200160002054945060008086815260200190815260200160002093508360000160008b15151515815260200190815260200160002054925060008087815260200190815260200160002091506000808481526020019081526020016000209050848260000160008915151515815260200190815260200160002081905550868460020160006101000a81548160ff0219169083151502179055508584600101819055508a8460000160008c15151515815260200190815260200160002081905550848860010181905550898860020160006101000a81548160ff021916908315150217905550828860000160008b151515158152602001908152602001600020819055508a8160010181905550888160020160006101000a81548160ff02191690831515021790555061170b8b61145d565b6117148561145d565b61171d8b610e9b565b61172685610e9b565b5050505050505050505050565b6000806000808481526020019081526020016000206000016000600115151515815260200190815260200160002054905060008114151561177e5761177781611733565b9150611782565b8291505b509190505600a165627a7a72305820de5a29ec27d8106d816cd3d382d5c810373f981e9bea293532c3d53487ad93050029",
  "sourceMap": "718:11160:24:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;718:11160:24;;;;;;;",
  "deployedSourceMap": "718:11160:24:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9644:191;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11566:109;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7747:674;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10595:138;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10231:139;;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;11566:109::-;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;7747:674::-;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;10595:138::-;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;10231:139::-;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;753:174::-;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;1143:327::-;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",
  "source": "pragma solidity ^0.4.24;\n/*\n    This program is free software: you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License\n    along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n    Copyright 2015 Conrad Barski\n\n*/\ncontract OrderStatisticTree {\n\n    function update_count(uint value) private {\n        Node storage n=nodes[value];\n        n.count=1+nodes[n.children[false]].count+nodes[n.children[true]].count+n.dupes;\n    }\n\n    function update_counts(uint value) private {\n        uint parent=nodes[value].parent;\n        while (parent!=0) {\n            update_count(parent);\n            parent=nodes[parent].parent;\n        }\n    }\n\n    function update_height(uint value) private {\n        Node storage n=nodes[value];\n        uint height_left=nodes[n.children[false]].height;\n        uint height_right=nodes[n.children[true]].height;\n        if (height_left>height_right)\n            n.height=height_left+1;\n        else\n            n.height=height_right+1;\n    }\n\n    function balance_factor(uint value) constant private returns (int bf) {\n        Node storage n=nodes[value];\n        return int(nodes[n.children[false]].height)-int(nodes[n.children[true]].height);\n    }\n\n    function rotate(uint value,bool dir) private {\n        bool other_dir=!dir;\n        Node storage n=nodes[value]; \n        bool side=n.side;\n        uint parent=n.parent;\n        uint value_new=n.children[other_dir];\n        Node storage n_new=nodes[value_new];\n        uint orphan=n_new.children[dir];\n        Node storage p=nodes[parent];\n        Node storage o=nodes[orphan];\n        p.children[side]=value_new;\n        n_new.side=side;\n        n_new.parent=parent;\n        n_new.children[dir]=value;\n        n.parent=value_new;\n        n.side=dir;\n        n.children[other_dir]=orphan;\n        o.parent=value;\n        o.side=other_dir;\n        update_height(value);\n        update_height(value_new);\n        update_count(value);\n        update_count(value_new);\n    }\n\n    function rebalance_insert(uint n_value) private {\n        update_height(n_value);\n        Node storage n=nodes[n_value];\n        uint p_value=n.parent;\n        if (p_value!=0) {\n            int p_bf=balance_factor(p_value);\n            bool side=n.side;\n            int sign;\n            if (side)\n                sign=-1;\n            else\n                sign=1;\n            if (p_bf == sign*2) {\n                if (balance_factor(n_value) == (-1 * sign))\n                    rotate(n_value,side);\n                rotate(p_value,!side);\n            }\n            else if (p_bf != 0) \n                rebalance_insert(p_value);\n        }\n    }\n\n    function rebalance_delete(uint p_value,bool side) private{\n        if (p_value!=0) {\n            update_height(p_value);\n            int p_bf=balance_factor(p_value);\n            int sign;\n            if (side)\n                sign=1;\n            else\n                sign=-1;\n            int bf=balance_factor(p_value);\n            if (bf==(2*sign)) {\n                Node storage p=nodes[p_value];\n                uint s_value=p.children[!side];\n                int s_bf=balance_factor(s_value);\n                if (s_bf == (-1 * sign))\n                    rotate(s_value,!side);\n                rotate(p_value,side);\n                if (s_bf!=0){\n                    p=nodes[p_value];\n                    rebalance_delete(p.parent,p.side);\n                }\n            }\n            else if (p_bf != sign){\n                p=nodes[p_value];\n                rebalance_delete(p.parent,p.side);\n            }\n        }\n    }\n\n    function fix_parents(uint parent,bool side) private {\n        if(parent!=0) {\n            update_count(parent);\n            update_counts(parent);\n            rebalance_delete(parent,side);\n        }\n    }\n\n    function insert_helper(uint p_value,bool side,uint value) private {\n        Node storage root=nodes[p_value];\n        uint c_value=root.children[side];\n        if (c_value==0){\n            root.children[side]=value;\n            Node storage child=nodes[value];\n            child.parent=p_value;\n            child.side=side;\n            child.height=1;\n            child.count=1;\n            update_counts(value);\n            rebalance_insert(value);\n        }\n        else if (c_value==value){\n            nodes[c_value].dupes++;\n            update_count(value);\n            update_counts(value);\n        }\n        else{\n            bool side_new=(value >= c_value);\n            insert_helper(c_value,side_new,value);\n        }\n    }\n\n    function insert(uint value) public {\n        if (value==0)\n            nodes[value].dupes++;\n        else{\n            insert_helper(0,true,value);\n        }\n    }\n\n    function rightmost_leaf(uint value) constant private returns (uint leaf) {\n        uint child=nodes[value].children[true];\n        if (child!=0)\n            return rightmost_leaf(child);\n        else\n            return value;\n    }\n\n    function zero_out(uint value) private {\n        Node storage n=nodes[value];\n        n.parent=0;\n        n.side=false;\n        n.children[false]=0;\n        n.children[true]=0;\n        n.count=0;\n        n.height=0;\n        n.dupes=0;\n    }\n\n    function remove_branch(uint value,uint left,uint right) private {\n        uint ipn=rightmost_leaf(left);\n        Node storage i=nodes[ipn];\n        uint dupes=i.dupes;\n        remove_helper(ipn);\n        Node storage n=nodes[value];\n        uint parent=n.parent;\n        Node storage p=nodes[parent];\n        uint height=n.height;\n        bool side=n.side;\n        uint count=n.count;\n        right=n.children[true];\n        left=n.children[false];\n        p.children[side]=ipn;\n        i.parent=parent;\n        i.side=side;\n        i.count=count+dupes-n.dupes;\n        i.height=height;\n        i.dupes=dupes;\n        if (left!=0) {\n            i.children[false]=left;\n            nodes[left].parent=ipn;\n        }\n        if (right!=0) {\n            i.children[true]=right;\n            nodes[right].parent=ipn;\n        }\n        zero_out(value);\n        update_counts(ipn);\n    }\n\n    function remove_helper(uint value) private {\n        Node storage n=nodes[value];\n        uint parent=n.parent;\n        bool side=n.side;\n        Node storage p=nodes[parent];\n        uint left=n.children[false];\n        uint right=n.children[true];\n        if ((left == 0) && (right == 0)) {\n            p.children[side]=0;\n            zero_out(value);\n            fix_parents(parent,side);\n        }\n        else if ((left !=0) && (right != 0)) {\n            remove_branch(value,left,right);\n        }\n        else {\n            uint child=left+right;\n            Node storage c=nodes[child];\n            p.children[side]=child;\n            c.parent=parent;\n            c.side=side;\n            zero_out(value);\n            fix_parents(parent,side);\n        }\n    }\n\n    function remove(uint value) public {\n        Node storage n=nodes[value];\n        if (value==0){\n            if (n.dupes==0)\n                return;\n        }\n        else{\n            if (n.count==0)\n                return;\n        }\n        if (n.dupes>0) {\n            n.dupes--;\n            if(value!=0)\n                n.count--;\n            fix_parents(n.parent,n.side);\n        }\n        else\n            remove_helper(value);\n    }\n\n    function rank(uint value) public constant returns (uint smaller){\n        if(value!=0){\n            smaller=nodes[0].dupes;\n            uint cur=nodes[0].children[true];\n            Node storage cur_node=nodes[cur];\n            while(true){\n                if (cur<=value){\n                    if(cur<value)\n                        smaller+=1+cur_node.dupes;\n                    uint left_child=cur_node.children[false];\n                    if (left_child!=0)\n                        smaller+=nodes[left_child].count;\n                }\n                if (cur==value)\n                    break;\n                cur=cur_node.children[cur<value];\n            }\n        }\n    }\n\n    function select_at(uint pos) public constant returns (uint value){\n        uint zeroes=nodes[0].dupes;\n        if (pos<zeroes)\n            return 0;\n        else {\n            uint pos_new=pos-zeroes;\n            uint cur=nodes[0].children[true];\n            Node storage cur_node=nodes[cur];\n            while(true){\n                uint left=cur_node.children[false];\n                uint cur_num=cur_node.dupes+1;\n                if (left!=0) {\n                    Node storage left_node=nodes[left];\n                    uint left_count=left_node.count;\n                }\n                else {\n                    left_count=0;\n                }\n                if (pos_new<left_count) {\n                    cur=left;\n                    cur_node=left_node;\n                }\n                else if (pos_new<left_count+cur_num){\n                    return cur;\n                }\n                else {\n                    cur=cur_node.children[true];\n                    cur_node=nodes[cur];\n                    pos_new-=left_count+cur_num;\n                }\n            }\n        }\n    }\n\n    function duplicates(uint value) public constant returns (uint n){\n        return nodes[value].dupes+1;\n    }\n    \n    function count() public constant returns (uint result){\n        Node storage root=nodes[0];\n        Node storage child=nodes[root.children[true]];\n        return root.dupes+child.count;\n    }\n\n    function in_top_n(uint value,uint n) public constant returns (bool truth){\n        uint pos=rank(value);\n        uint num=count();\n        return (num-pos-1<n);\n    }\n\n    function percentile(uint value) public constant returns (uint k){\n        uint pos=rank(value);\n        uint same=nodes[value].dupes;\n        uint num=count();\n        return (pos*100+(same*100+100)/2)/num;\n    }\n\n    function at_percentile(uint perc) public constant returns (uint value){\n        uint n=count();\n        return select_at(perc*n/100);\n    }\n\n    function permille(uint value) public constant returns (uint k){\n        uint pos=rank(value);\n        uint same=nodes[value].dupes;\n        uint num=count();\n        return (pos*1000+(same*1000+1000)/2)/num;\n    }\n\n    function at_permille(uint perm) public constant returns (uint value){\n        uint n=count();\n        return select_at(perm*n/1000);\n    }\n\n    function median() public constant returns (uint value){\n        return at_percentile(50);\n    }\n\n    function node_left_child(uint value) public constant returns (uint child){\n        child=nodes[value].children[false];\n    }\n\n    function node_right_child(uint value) public constant returns (uint child){\n        child=nodes[value].children[true];\n    }\n\n    function node_parent(uint value) public constant returns (uint parent){\n        parent=nodes[value].parent;\n    }\n\n    function node_side(uint value) public constant returns (bool side){\n        side=nodes[value].side;\n    }\n\n    function node_height(uint value) public constant returns (uint height){\n        height=nodes[value].height;\n    }\n\n    function node_count(uint value) public constant returns (uint result){\n        result=nodes[value].count;\n    }\n\n    function node_dupes(uint value) public constant returns (uint dupes){\n        dupes=nodes[value].dupes;\n    }\n\n    struct Node {\n        mapping (bool => uint) children;\n        uint parent;\n        bool side;\n        uint height;\n        uint count;\n        uint dupes;\n    }\n\n    mapping(uint => Node) nodes;\n}",
  "sourcePath": "/Users/mfcalvanese/dev/eth/tidbit-eth/contracts/Utils/OrderStatisticTree.sol",
  "ast": {
    "absolutePath": "/Users/mfcalvanese/dev/eth/tidbit-eth/contracts/Utils/OrderStatisticTree.sol",
    "exportedSymbols": {
      "OrderStatisticTree": [
        2794
      ]
    },
    "id": 2795,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1147,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:24"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2794,
        "linearizedBaseContracts": [
          2794
        ],
        "name": "OrderStatisticTree",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 1183,
              "nodeType": "Block",
              "src": "795:132:24",
              "statements": [
                {
                  "assignments": [
                    1153
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1153,
                      "name": "n",
                      "nodeType": "VariableDeclaration",
                      "scope": 1184,
                      "src": "805:14:24",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1152,
                        "name": "Node",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2789,
                        "src": "805:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1157,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1154,
                      "name": "nodes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2793,
                      "src": "820:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                      }
                    },
                    "id": 1156,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1155,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1149,
                      "src": "826:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "820:12:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                      "typeString": "struct OrderStatisticTree.Node storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "805:27:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1181,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1158,
                        "name": "n",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1153,
                        "src": "842:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1160,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "count",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2786,
                      "src": "842:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1180,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1177,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1169,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 1161,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "850:1:24",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1162,
                                "name": "nodes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2793,
                                "src": "852:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                                  "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                                }
                              },
                              "id": 1167,
                              "indexExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1163,
                                    "name": "n",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1153,
                                    "src": "858:1:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                      "typeString": "struct OrderStatisticTree.Node storage pointer"
                                    }
                                  },
                                  "id": 1164,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "children",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2778,
                                  "src": "858:10:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                                    "typeString": "mapping(bool => uint256)"
                                  }
                                },
                                "id": 1166,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "66616c7365",
                                  "id": 1165,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "869:5:24",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "false"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "858:17:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "852:24:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$2789_storage",
                                "typeString": "struct OrderStatisticTree.Node storage ref"
                              }
                            },
                            "id": 1168,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "count",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2786,
                            "src": "852:30:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "850:32:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1170,
                              "name": "nodes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2793,
                              "src": "883:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                                "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                              }
                            },
                            "id": 1175,
                            "indexExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1171,
                                  "name": "n",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1153,
                                  "src": "889:1:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                    "typeString": "struct OrderStatisticTree.Node storage pointer"
                                  }
                                },
                                "id": 1172,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "children",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2778,
                                "src": "889:10:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                                  "typeString": "mapping(bool => uint256)"
                                }
                              },
                              "id": 1174,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "74727565",
                                "id": 1173,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "900:4:24",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "889:16:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "883:23:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Node_$2789_storage",
                              "typeString": "struct OrderStatisticTree.Node storage ref"
                            }
                          },
                          "id": 1176,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "count",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2786,
                          "src": "883:29:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "850:62:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1178,
                          "name": "n",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1153,
                          "src": "913:1:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                            "typeString": "struct OrderStatisticTree.Node storage pointer"
                          }
                        },
                        "id": 1179,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "dupes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2788,
                        "src": "913:7:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "850:70:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "842:78:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1182,
                  "nodeType": "ExpressionStatement",
                  "src": "842:78:24"
                }
              ]
            },
            "documentation": null,
            "id": 1184,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "update_count",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1150,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1149,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1184,
                  "src": "775:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1148,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "775:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "774:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 1151,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "795:0:24"
            },
            "scope": 2794,
            "src": "753:174:24",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1212,
              "nodeType": "Block",
              "src": "976:161:24",
              "statements": [
                {
                  "assignments": [
                    1190
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1190,
                      "name": "parent",
                      "nodeType": "VariableDeclaration",
                      "scope": 1213,
                      "src": "986:11:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1189,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "986:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1195,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1191,
                        "name": "nodes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2793,
                        "src": "998:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                          "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                        }
                      },
                      "id": 1193,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1192,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1186,
                        "src": "1004:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "998:12:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage",
                        "typeString": "struct OrderStatisticTree.Node storage ref"
                      }
                    },
                    "id": 1194,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "parent",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2780,
                    "src": "998:19:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "986:31:24"
                },
                {
                  "body": {
                    "id": 1210,
                    "nodeType": "Block",
                    "src": "1045:86:24",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1200,
                              "name": "parent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1190,
                              "src": "1072:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1199,
                            "name": "update_count",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1184,
                            "src": "1059:12:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 1201,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1059:20:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1202,
                        "nodeType": "ExpressionStatement",
                        "src": "1059:20:24"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1208,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1203,
                            "name": "parent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1190,
                            "src": "1093:6:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1204,
                                "name": "nodes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2793,
                                "src": "1100:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                                  "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                                }
                              },
                              "id": 1206,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1205,
                                "name": "parent",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1190,
                                "src": "1106:6:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1100:13:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$2789_storage",
                                "typeString": "struct OrderStatisticTree.Node storage ref"
                              }
                            },
                            "id": 1207,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "parent",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2780,
                            "src": "1100:20:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1093:27:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1209,
                        "nodeType": "ExpressionStatement",
                        "src": "1093:27:24"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1198,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1196,
                      "name": "parent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1190,
                      "src": "1034:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1197,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1042:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1034:9:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1211,
                  "nodeType": "WhileStatement",
                  "src": "1027:104:24"
                }
              ]
            },
            "documentation": null,
            "id": 1213,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "update_counts",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1187,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1186,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1213,
                  "src": "956:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1185,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "956:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "955:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 1188,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "976:0:24"
            },
            "scope": 2794,
            "src": "933:204:24",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1264,
              "nodeType": "Block",
              "src": "1186:284:24",
              "statements": [
                {
                  "assignments": [
                    1219
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1219,
                      "name": "n",
                      "nodeType": "VariableDeclaration",
                      "scope": 1265,
                      "src": "1196:14:24",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1218,
                        "name": "Node",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2789,
                        "src": "1196:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1223,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1220,
                      "name": "nodes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2793,
                      "src": "1211:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                      }
                    },
                    "id": 1222,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1221,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1215,
                      "src": "1217:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1211:12:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                      "typeString": "struct OrderStatisticTree.Node storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1196:27:24"
                },
                {
                  "assignments": [
                    1225
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1225,
                      "name": "height_left",
                      "nodeType": "VariableDeclaration",
                      "scope": 1265,
                      "src": "1233:16:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1224,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1233:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1233,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1226,
                        "name": "nodes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2793,
                        "src": "1250:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                          "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                        }
                      },
                      "id": 1231,
                      "indexExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1227,
                            "name": "n",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1219,
                            "src": "1256:1:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                              "typeString": "struct OrderStatisticTree.Node storage pointer"
                            }
                          },
                          "id": 1228,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "children",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2778,
                          "src": "1256:10:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                            "typeString": "mapping(bool => uint256)"
                          }
                        },
                        "id": 1230,
                        "indexExpression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 1229,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1267:5:24",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1256:17:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1250:24:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage",
                        "typeString": "struct OrderStatisticTree.Node storage ref"
                      }
                    },
                    "id": 1232,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "height",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2784,
                    "src": "1250:31:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1233:48:24"
                },
                {
                  "assignments": [
                    1235
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1235,
                      "name": "height_right",
                      "nodeType": "VariableDeclaration",
                      "scope": 1265,
                      "src": "1291:17:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1234,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1291:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1243,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1236,
                        "name": "nodes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2793,
                        "src": "1309:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                          "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                        }
                      },
                      "id": 1241,
                      "indexExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1237,
                            "name": "n",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1219,
                            "src": "1315:1:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                              "typeString": "struct OrderStatisticTree.Node storage pointer"
                            }
                          },
                          "id": 1238,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "children",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2778,
                          "src": "1315:10:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                            "typeString": "mapping(bool => uint256)"
                          }
                        },
                        "id": 1240,
                        "indexExpression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 1239,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1326:4:24",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1315:16:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1309:23:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage",
                        "typeString": "struct OrderStatisticTree.Node storage ref"
                      }
                    },
                    "id": 1242,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "height",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2784,
                    "src": "1309:30:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1291:48:24"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1246,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1244,
                      "name": "height_left",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1225,
                      "src": "1353:11:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 1245,
                      "name": "height_right",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1235,
                      "src": "1365:12:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1353:24:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1261,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1255,
                          "name": "n",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1219,
                          "src": "1440:1:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                            "typeString": "struct OrderStatisticTree.Node storage pointer"
                          }
                        },
                        "id": 1257,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "memberName": "height",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2784,
                        "src": "1440:8:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1260,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1258,
                          "name": "height_right",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1235,
                          "src": "1449:12:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 1259,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1462:1:24",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "1449:14:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "1440:23:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1262,
                    "nodeType": "ExpressionStatement",
                    "src": "1440:23:24"
                  },
                  "id": 1263,
                  "nodeType": "IfStatement",
                  "src": "1349:114:24",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1253,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1247,
                          "name": "n",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1219,
                          "src": "1391:1:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                            "typeString": "struct OrderStatisticTree.Node storage pointer"
                          }
                        },
                        "id": 1249,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "memberName": "height",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2784,
                        "src": "1391:8:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1252,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1250,
                          "name": "height_left",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1225,
                          "src": "1400:11:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 1251,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1412:1:24",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "1400:13:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "1391:22:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1254,
                    "nodeType": "ExpressionStatement",
                    "src": "1391:22:24"
                  }
                }
              ]
            },
            "documentation": null,
            "id": 1265,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "update_height",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1216,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1215,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1265,
                  "src": "1166:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1214,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1166:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1165:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 1217,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1186:0:24"
            },
            "scope": 2794,
            "src": "1143:327:24",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1298,
              "nodeType": "Block",
              "src": "1546:133:24",
              "statements": [
                {
                  "assignments": [
                    1273
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1273,
                      "name": "n",
                      "nodeType": "VariableDeclaration",
                      "scope": 1299,
                      "src": "1556:14:24",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1272,
                        "name": "Node",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2789,
                        "src": "1556:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1277,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1274,
                      "name": "nodes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2793,
                      "src": "1571:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                      }
                    },
                    "id": 1276,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1275,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1267,
                      "src": "1577:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1571:12:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                      "typeString": "struct OrderStatisticTree.Node storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1556:27:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "id": 1296,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1279,
                              "name": "nodes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2793,
                              "src": "1604:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                                "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                              }
                            },
                            "id": 1284,
                            "indexExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1280,
                                  "name": "n",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1273,
                                  "src": "1610:1:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                    "typeString": "struct OrderStatisticTree.Node storage pointer"
                                  }
                                },
                                "id": 1281,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "children",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2778,
                                "src": "1610:10:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                                  "typeString": "mapping(bool => uint256)"
                                }
                              },
                              "id": 1283,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 1282,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1621:5:24",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1610:17:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1604:24:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Node_$2789_storage",
                              "typeString": "struct OrderStatisticTree.Node storage ref"
                            }
                          },
                          "id": 1285,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "height",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2784,
                          "src": "1604:31:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1278,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1600:3:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_int256_$",
                          "typeString": "type(int256)"
                        },
                        "typeName": "int"
                      },
                      "id": 1286,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1600:36:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1288,
                              "name": "nodes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2793,
                              "src": "1641:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                                "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                              }
                            },
                            "id": 1293,
                            "indexExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1289,
                                  "name": "n",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1273,
                                  "src": "1647:1:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                    "typeString": "struct OrderStatisticTree.Node storage pointer"
                                  }
                                },
                                "id": 1290,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "children",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2778,
                                "src": "1647:10:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                                  "typeString": "mapping(bool => uint256)"
                                }
                              },
                              "id": 1292,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "74727565",
                                "id": 1291,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1658:4:24",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1647:16:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1641:23:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Node_$2789_storage",
                              "typeString": "struct OrderStatisticTree.Node storage ref"
                            }
                          },
                          "id": 1294,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "height",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2784,
                          "src": "1641:30:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1287,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1637:3:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_int256_$",
                          "typeString": "type(int256)"
                        },
                        "typeName": "int"
                      },
                      "id": 1295,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1637:35:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "1600:72:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 1271,
                  "id": 1297,
                  "nodeType": "Return",
                  "src": "1593:79:24"
                }
              ]
            },
            "documentation": null,
            "id": 1299,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "balance_factor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1268,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1267,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1299,
                  "src": "1500:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1266,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1500:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1499:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 1271,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1270,
                  "name": "bf",
                  "nodeType": "VariableDeclaration",
                  "scope": 1299,
                  "src": "1538:6:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 1269,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "1538:3:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1537:8:24"
            },
            "scope": 2794,
            "src": "1476:203:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1435,
              "nodeType": "Block",
              "src": "1730:725:24",
              "statements": [
                {
                  "assignments": [
                    1307
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1307,
                      "name": "other_dir",
                      "nodeType": "VariableDeclaration",
                      "scope": 1436,
                      "src": "1740:14:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1306,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1740:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1310,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 1309,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "1755:4:24",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 1308,
                      "name": "dir",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1303,
                      "src": "1756:3:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1740:19:24"
                },
                {
                  "assignments": [
                    1312
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1312,
                      "name": "n",
                      "nodeType": "VariableDeclaration",
                      "scope": 1436,
                      "src": "1769:14:24",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1311,
                        "name": "Node",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2789,
                        "src": "1769:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1316,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1313,
                      "name": "nodes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2793,
                      "src": "1784:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                      }
                    },
                    "id": 1315,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1314,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1301,
                      "src": "1790:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1784:12:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                      "typeString": "struct OrderStatisticTree.Node storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1769:27:24"
                },
                {
                  "assignments": [
                    1318
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1318,
                      "name": "side",
                      "nodeType": "VariableDeclaration",
                      "scope": 1436,
                      "src": "1807:9:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1317,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1807:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1321,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 1319,
                      "name": "n",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1312,
                      "src": "1817:1:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node storage pointer"
                      }
                    },
                    "id": 1320,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "side",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2782,
                    "src": "1817:6:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1807:16:24"
                },
                {
                  "assignments": [
                    1323
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1323,
                      "name": "parent",
                      "nodeType": "VariableDeclaration",
                      "scope": 1436,
                      "src": "1833:11:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1322,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1833:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1326,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 1324,
                      "name": "n",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1312,
                      "src": "1845:1:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node storage pointer"
                      }
                    },
                    "id": 1325,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "parent",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2780,
                    "src": "1845:8:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1833:20:24"
                },
                {
                  "assignments": [
                    1328
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1328,
                      "name": "value_new",
                      "nodeType": "VariableDeclaration",
                      "scope": 1436,
                      "src": "1863:14:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1327,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1863:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1333,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1329,
                        "name": "n",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1312,
                        "src": "1878:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1330,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "children",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2778,
                      "src": "1878:10:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                        "typeString": "mapping(bool => uint256)"
                      }
                    },
                    "id": 1332,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1331,
                      "name": "other_dir",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1307,
                      "src": "1889:9:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1878:21:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1863:36:24"
                },
                {
                  "assignments": [
                    1335
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1335,
                      "name": "n_new",
                      "nodeType": "VariableDeclaration",
                      "scope": 1436,
                      "src": "1909:18:24",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1334,
                        "name": "Node",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2789,
                        "src": "1909:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1339,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1336,
                      "name": "nodes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2793,
                      "src": "1928:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                      }
                    },
                    "id": 1338,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1337,
                      "name": "value_new",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1328,
                      "src": "1934:9:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1928:16:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                      "typeString": "struct OrderStatisticTree.Node storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1909:35:24"
                },
                {
                  "assignments": [
                    1341
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1341,
                      "name": "orphan",
                      "nodeType": "VariableDeclaration",
                      "scope": 1436,
                      "src": "1954:11:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1340,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1954:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1346,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1342,
                        "name": "n_new",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1335,
                        "src": "1966:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1343,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "children",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2778,
                      "src": "1966:14:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                        "typeString": "mapping(bool => uint256)"
                      }
                    },
                    "id": 1345,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1344,
                      "name": "dir",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1303,
                      "src": "1981:3:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1966:19:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1954:31:24"
                },
                {
                  "assignments": [
                    1348
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1348,
                      "name": "p",
                      "nodeType": "VariableDeclaration",
                      "scope": 1436,
                      "src": "1995:14:24",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1347,
                        "name": "Node",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2789,
                        "src": "1995:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1352,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1349,
                      "name": "nodes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2793,
                      "src": "2010:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                      }
                    },
                    "id": 1351,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1350,
                      "name": "parent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1323,
                      "src": "2016:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2010:13:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                      "typeString": "struct OrderStatisticTree.Node storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1995:28:24"
                },
                {
                  "assignments": [
                    1354
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1354,
                      "name": "o",
                      "nodeType": "VariableDeclaration",
                      "scope": 1436,
                      "src": "2033:14:24",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1353,
                        "name": "Node",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2789,
                        "src": "2033:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1358,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1355,
                      "name": "nodes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2793,
                      "src": "2048:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                      }
                    },
                    "id": 1357,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1356,
                      "name": "orphan",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1341,
                      "src": "2054:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2048:13:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                      "typeString": "struct OrderStatisticTree.Node storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2033:28:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1365,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1359,
                          "name": "p",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1348,
                          "src": "2071:1:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                            "typeString": "struct OrderStatisticTree.Node storage pointer"
                          }
                        },
                        "id": 1362,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "children",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2778,
                        "src": "2071:10:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                          "typeString": "mapping(bool => uint256)"
                        }
                      },
                      "id": 1363,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1361,
                        "name": "side",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1318,
                        "src": "2082:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2071:16:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1364,
                      "name": "value_new",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1328,
                      "src": "2088:9:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2071:26:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1366,
                  "nodeType": "ExpressionStatement",
                  "src": "2071:26:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1371,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1367,
                        "name": "n_new",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1335,
                        "src": "2107:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1369,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "side",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2782,
                      "src": "2107:10:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1370,
                      "name": "side",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1318,
                      "src": "2118:4:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "2107:15:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1372,
                  "nodeType": "ExpressionStatement",
                  "src": "2107:15:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1377,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1373,
                        "name": "n_new",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1335,
                        "src": "2132:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1375,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "parent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2780,
                      "src": "2132:12:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1376,
                      "name": "parent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1323,
                      "src": "2145:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2132:19:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1378,
                  "nodeType": "ExpressionStatement",
                  "src": "2132:19:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1385,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1379,
                          "name": "n_new",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1335,
                          "src": "2161:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                            "typeString": "struct OrderStatisticTree.Node storage pointer"
                          }
                        },
                        "id": 1382,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "children",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2778,
                        "src": "2161:14:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                          "typeString": "mapping(bool => uint256)"
                        }
                      },
                      "id": 1383,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1381,
                        "name": "dir",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1303,
                        "src": "2176:3:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2161:19:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1384,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1301,
                      "src": "2181:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2161:25:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1386,
                  "nodeType": "ExpressionStatement",
                  "src": "2161:25:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1391,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1387,
                        "name": "n",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1312,
                        "src": "2196:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1389,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "parent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2780,
                      "src": "2196:8:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1390,
                      "name": "value_new",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1328,
                      "src": "2205:9:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2196:18:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1392,
                  "nodeType": "ExpressionStatement",
                  "src": "2196:18:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1397,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1393,
                        "name": "n",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1312,
                        "src": "2224:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1395,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "side",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2782,
                      "src": "2224:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1396,
                      "name": "dir",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1303,
                      "src": "2231:3:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "2224:10:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1398,
                  "nodeType": "ExpressionStatement",
                  "src": "2224:10:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1405,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1399,
                          "name": "n",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1312,
                          "src": "2244:1:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                            "typeString": "struct OrderStatisticTree.Node storage pointer"
                          }
                        },
                        "id": 1402,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "children",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2778,
                        "src": "2244:10:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                          "typeString": "mapping(bool => uint256)"
                        }
                      },
                      "id": 1403,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1401,
                        "name": "other_dir",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1307,
                        "src": "2255:9:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2244:21:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1404,
                      "name": "orphan",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1341,
                      "src": "2266:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2244:28:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1406,
                  "nodeType": "ExpressionStatement",
                  "src": "2244:28:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1411,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1407,
                        "name": "o",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1354,
                        "src": "2282:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1409,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "parent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2780,
                      "src": "2282:8:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1410,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1301,
                      "src": "2291:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2282:14:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1412,
                  "nodeType": "ExpressionStatement",
                  "src": "2282:14:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1417,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1413,
                        "name": "o",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1354,
                        "src": "2306:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1415,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "side",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2782,
                      "src": "2306:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1416,
                      "name": "other_dir",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1307,
                      "src": "2313:9:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "2306:16:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1418,
                  "nodeType": "ExpressionStatement",
                  "src": "2306:16:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1420,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1301,
                        "src": "2346:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1419,
                      "name": "update_height",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1265,
                      "src": "2332:13:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 1421,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2332:20:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1422,
                  "nodeType": "ExpressionStatement",
                  "src": "2332:20:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1424,
                        "name": "value_new",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1328,
                        "src": "2376:9:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1423,
                      "name": "update_height",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1265,
                      "src": "2362:13:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 1425,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2362:24:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1426,
                  "nodeType": "ExpressionStatement",
                  "src": "2362:24:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1428,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1301,
                        "src": "2409:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1427,
                      "name": "update_count",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1184,
                      "src": "2396:12:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 1429,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2396:19:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1430,
                  "nodeType": "ExpressionStatement",
                  "src": "2396:19:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1432,
                        "name": "value_new",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1328,
                        "src": "2438:9:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1431,
                      "name": "update_count",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1184,
                      "src": "2425:12:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 1433,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2425:23:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1434,
                  "nodeType": "ExpressionStatement",
                  "src": "2425:23:24"
                }
              ]
            },
            "documentation": null,
            "id": 1436,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "rotate",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1304,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1301,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1436,
                  "src": "1701:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1300,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1701:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1303,
                  "name": "dir",
                  "nodeType": "VariableDeclaration",
                  "scope": 1436,
                  "src": "1712:8:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1302,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1712:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1700:21:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 1305,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1730:0:24"
            },
            "scope": 2794,
            "src": "1685:770:24",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1522,
              "nodeType": "Block",
              "src": "2509:596:24",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1442,
                        "name": "n_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1438,
                        "src": "2533:7:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1441,
                      "name": "update_height",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1265,
                      "src": "2519:13:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 1443,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2519:22:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1444,
                  "nodeType": "ExpressionStatement",
                  "src": "2519:22:24"
                },
                {
                  "assignments": [
                    1446
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1446,
                      "name": "n",
                      "nodeType": "VariableDeclaration",
                      "scope": 1523,
                      "src": "2551:14:24",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1445,
                        "name": "Node",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2789,
                        "src": "2551:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1450,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1447,
                      "name": "nodes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2793,
                      "src": "2566:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                      }
                    },
                    "id": 1449,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1448,
                      "name": "n_value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1438,
                      "src": "2572:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2566:14:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                      "typeString": "struct OrderStatisticTree.Node storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2551:29:24"
                },
                {
                  "assignments": [
                    1452
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1452,
                      "name": "p_value",
                      "nodeType": "VariableDeclaration",
                      "scope": 1523,
                      "src": "2590:12:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1451,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2590:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1455,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 1453,
                      "name": "n",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1446,
                      "src": "2603:1:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node storage pointer"
                      }
                    },
                    "id": 1454,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "parent",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2780,
                    "src": "2603:8:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2590:21:24"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1458,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1456,
                      "name": "p_value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1452,
                      "src": "2625:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1457,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2634:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2625:10:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1521,
                  "nodeType": "IfStatement",
                  "src": "2621:478:24",
                  "trueBody": {
                    "id": 1520,
                    "nodeType": "Block",
                    "src": "2637:462:24",
                    "statements": [
                      {
                        "assignments": [
                          1460
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1460,
                            "name": "p_bf",
                            "nodeType": "VariableDeclaration",
                            "scope": 1523,
                            "src": "2651:8:24",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 1459,
                              "name": "int",
                              "nodeType": "ElementaryTypeName",
                              "src": "2651:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1464,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1462,
                              "name": "p_value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1452,
                              "src": "2675:7:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1461,
                            "name": "balance_factor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1299,
                            "src": "2660:14:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_int256_$",
                              "typeString": "function (uint256) view returns (int256)"
                            }
                          },
                          "id": 1463,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2660:23:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2651:32:24"
                      },
                      {
                        "assignments": [
                          1466
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1466,
                            "name": "side",
                            "nodeType": "VariableDeclaration",
                            "scope": 1523,
                            "src": "2697:9:24",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 1465,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "2697:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1469,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1467,
                            "name": "n",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1446,
                            "src": "2707:1:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                              "typeString": "struct OrderStatisticTree.Node storage pointer"
                            }
                          },
                          "id": 1468,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "side",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2782,
                          "src": "2707:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2697:16:24"
                      },
                      {
                        "assignments": [],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1471,
                            "name": "sign",
                            "nodeType": "VariableDeclaration",
                            "scope": 1523,
                            "src": "2727:8:24",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 1470,
                              "name": "int",
                              "nodeType": "ElementaryTypeName",
                              "src": "2727:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1472,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2727:8:24"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 1473,
                          "name": "side",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1466,
                          "src": "2753:4:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 1481,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 1479,
                              "name": "sign",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1471,
                              "src": "2817:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 1480,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2822:1:24",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "2817:6:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "id": 1482,
                          "nodeType": "ExpressionStatement",
                          "src": "2817:6:24"
                        },
                        "id": 1483,
                        "nodeType": "IfStatement",
                        "src": "2749:74:24",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 1477,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 1474,
                              "name": "sign",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1471,
                              "src": "2775:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "id": 1476,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "-",
                              "prefix": true,
                              "src": "2780:2:24",
                              "subExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 1475,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2781:1:24",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_-1_by_1",
                                "typeString": "int_const -1"
                              }
                            },
                            "src": "2775:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "id": 1478,
                          "nodeType": "ExpressionStatement",
                          "src": "2775:7:24"
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 1488,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1484,
                            "name": "p_bf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1460,
                            "src": "2841:4:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 1487,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1485,
                              "name": "sign",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1471,
                              "src": "2849:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 1486,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2854:1:24",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "2849:6:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "2841:14:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 1513,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1511,
                              "name": "p_bf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1460,
                              "src": "3035:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1512,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3043:1:24",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "3035:9:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": null,
                          "id": 1518,
                          "nodeType": "IfStatement",
                          "src": "3031:57:24",
                          "trueBody": {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1515,
                                  "name": "p_value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1452,
                                  "src": "3080:7:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1514,
                                "name": "rebalance_insert",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1523,
                                "src": "3063:16:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256)"
                                }
                              },
                              "id": 1516,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3063:25:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 1517,
                            "nodeType": "ExpressionStatement",
                            "src": "3063:25:24"
                          }
                        },
                        "id": 1519,
                        "nodeType": "IfStatement",
                        "src": "2837:251:24",
                        "trueBody": {
                          "id": 1510,
                          "nodeType": "Block",
                          "src": "2857:156:24",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 1497,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1490,
                                      "name": "n_value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1438,
                                      "src": "2894:7:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 1489,
                                    "name": "balance_factor",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1299,
                                    "src": "2879:14:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_int256_$",
                                      "typeString": "function (uint256) view returns (int256)"
                                    }
                                  },
                                  "id": 1491,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2879:23:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 1495,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 1493,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "-",
                                        "prefix": true,
                                        "src": "2907:2:24",
                                        "subExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 1492,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "2908:1:24",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_-1_by_1",
                                          "typeString": "int_const -1"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 1494,
                                        "name": "sign",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1471,
                                        "src": "2912:4:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "2907:9:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "id": 1496,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "2906:11:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "src": "2879:38:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 1503,
                              "nodeType": "IfStatement",
                              "src": "2875:84:24",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1499,
                                      "name": "n_value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1438,
                                      "src": "2946:7:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 1500,
                                      "name": "side",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1466,
                                      "src": "2954:4:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "id": 1498,
                                    "name": "rotate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1436,
                                    "src": "2939:6:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bool_$returns$__$",
                                      "typeString": "function (uint256,bool)"
                                    }
                                  },
                                  "id": 1501,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2939:20:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 1502,
                                "nodeType": "ExpressionStatement",
                                "src": "2939:20:24"
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1505,
                                    "name": "p_value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1452,
                                    "src": "2984:7:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1507,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "!",
                                    "prefix": true,
                                    "src": "2992:5:24",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "id": 1506,
                                      "name": "side",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1466,
                                      "src": "2993:4:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 1504,
                                  "name": "rotate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1436,
                                  "src": "2977:6:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bool_$returns$__$",
                                    "typeString": "function (uint256,bool)"
                                  }
                                },
                                "id": 1508,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2977:21:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1509,
                              "nodeType": "ExpressionStatement",
                              "src": "2977:21:24"
                            }
                          ]
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 1523,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "rebalance_insert",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1439,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1438,
                  "name": "n_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1523,
                  "src": "2487:12:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1437,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2487:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2486:14:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 1440,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2509:0:24"
            },
            "scope": 2794,
            "src": "2461:644:24",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1648,
              "nodeType": "Block",
              "src": "3168:868:24",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1532,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1530,
                      "name": "p_value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1525,
                      "src": "3182:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1531,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3191:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3182:10:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1647,
                  "nodeType": "IfStatement",
                  "src": "3178:852:24",
                  "trueBody": {
                    "id": 1646,
                    "nodeType": "Block",
                    "src": "3194:836:24",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1534,
                              "name": "p_value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1525,
                              "src": "3222:7:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1533,
                            "name": "update_height",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1265,
                            "src": "3208:13:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 1535,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3208:22:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1536,
                        "nodeType": "ExpressionStatement",
                        "src": "3208:22:24"
                      },
                      {
                        "assignments": [
                          1538
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1538,
                            "name": "p_bf",
                            "nodeType": "VariableDeclaration",
                            "scope": 1649,
                            "src": "3244:8:24",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 1537,
                              "name": "int",
                              "nodeType": "ElementaryTypeName",
                              "src": "3244:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1542,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1540,
                              "name": "p_value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1525,
                              "src": "3268:7:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1539,
                            "name": "balance_factor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1299,
                            "src": "3253:14:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_int256_$",
                              "typeString": "function (uint256) view returns (int256)"
                            }
                          },
                          "id": 1541,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3253:23:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3244:32:24"
                      },
                      {
                        "assignments": [],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1544,
                            "name": "sign",
                            "nodeType": "VariableDeclaration",
                            "scope": 1649,
                            "src": "3290:8:24",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 1543,
                              "name": "int",
                              "nodeType": "ElementaryTypeName",
                              "src": "3290:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1545,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3290:8:24"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 1546,
                          "name": "side",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1527,
                          "src": "3316:4:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 1554,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 1551,
                              "name": "sign",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1544,
                              "src": "3379:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "id": 1553,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "-",
                              "prefix": true,
                              "src": "3384:2:24",
                              "subExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 1552,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3385:1:24",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_-1_by_1",
                                "typeString": "int_const -1"
                              }
                            },
                            "src": "3379:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "id": 1555,
                          "nodeType": "ExpressionStatement",
                          "src": "3379:7:24"
                        },
                        "id": 1556,
                        "nodeType": "IfStatement",
                        "src": "3312:74:24",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 1549,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 1547,
                              "name": "sign",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1544,
                              "src": "3338:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 1548,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3343:1:24",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "3338:6:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "id": 1550,
                          "nodeType": "ExpressionStatement",
                          "src": "3338:6:24"
                        }
                      },
                      {
                        "assignments": [
                          1558
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1558,
                            "name": "bf",
                            "nodeType": "VariableDeclaration",
                            "scope": 1649,
                            "src": "3400:6:24",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 1557,
                              "name": "int",
                              "nodeType": "ElementaryTypeName",
                              "src": "3400:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1562,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1560,
                              "name": "p_value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1525,
                              "src": "3422:7:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1559,
                            "name": "balance_factor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1299,
                            "src": "3407:14:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_int256_$",
                              "typeString": "function (uint256) view returns (int256)"
                            }
                          },
                          "id": 1561,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3407:23:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3400:30:24"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 1568,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1563,
                            "name": "bf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1558,
                            "src": "3448:2:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 1566,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "32",
                                  "id": 1564,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3453:1:24",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 1565,
                                  "name": "sign",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1544,
                                  "src": "3455:4:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "src": "3453:6:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "id": 1567,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "3452:8:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "3448:12:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 1629,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1627,
                              "name": "p_bf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1538,
                              "src": "3907:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1628,
                              "name": "sign",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1544,
                              "src": "3915:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "src": "3907:12:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": null,
                          "id": 1644,
                          "nodeType": "IfStatement",
                          "src": "3903:117:24",
                          "trueBody": {
                            "id": 1643,
                            "nodeType": "Block",
                            "src": "3920:100:24",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1634,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 1630,
                                    "name": "p",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1570,
                                    "src": "3938:1:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                      "typeString": "struct OrderStatisticTree.Node storage pointer"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 1631,
                                      "name": "nodes",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2793,
                                      "src": "3940:5:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                                      }
                                    },
                                    "id": 1633,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 1632,
                                      "name": "p_value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1525,
                                      "src": "3946:7:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3940:14:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                                      "typeString": "struct OrderStatisticTree.Node storage ref"
                                    }
                                  },
                                  "src": "3938:16:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                    "typeString": "struct OrderStatisticTree.Node storage pointer"
                                  }
                                },
                                "id": 1635,
                                "nodeType": "ExpressionStatement",
                                "src": "3938:16:24"
                              },
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1637,
                                        "name": "p",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1570,
                                        "src": "3989:1:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                                        }
                                      },
                                      "id": 1638,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "parent",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2780,
                                      "src": "3989:8:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1639,
                                        "name": "p",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1570,
                                        "src": "3998:1:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                                        }
                                      },
                                      "id": 1640,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "side",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2782,
                                      "src": "3998:6:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "id": 1636,
                                    "name": "rebalance_delete",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1649,
                                    "src": "3972:16:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bool_$returns$__$",
                                      "typeString": "function (uint256,bool)"
                                    }
                                  },
                                  "id": 1641,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3972:33:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 1642,
                                "nodeType": "ExpressionStatement",
                                "src": "3972:33:24"
                              }
                            ]
                          }
                        },
                        "id": 1645,
                        "nodeType": "IfStatement",
                        "src": "3444:576:24",
                        "trueBody": {
                          "id": 1626,
                          "nodeType": "Block",
                          "src": "3462:423:24",
                          "statements": [
                            {
                              "assignments": [
                                1570
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1570,
                                  "name": "p",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1649,
                                  "src": "3480:14:24",
                                  "stateVariable": false,
                                  "storageLocation": "storage",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                    "typeString": "struct OrderStatisticTree.Node"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 1569,
                                    "name": "Node",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 2789,
                                    "src": "3480:4:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                      "typeString": "struct OrderStatisticTree.Node"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1574,
                              "initialValue": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1571,
                                  "name": "nodes",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2793,
                                  "src": "3495:5:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                                    "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                                  }
                                },
                                "id": 1573,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1572,
                                  "name": "p_value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1525,
                                  "src": "3501:7:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3495:14:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Node_$2789_storage",
                                  "typeString": "struct OrderStatisticTree.Node storage ref"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3480:29:24"
                            },
                            {
                              "assignments": [
                                1576
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1576,
                                  "name": "s_value",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1649,
                                  "src": "3527:12:24",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 1575,
                                    "name": "uint",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3527:4:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1582,
                              "initialValue": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1577,
                                    "name": "p",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1570,
                                    "src": "3540:1:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                      "typeString": "struct OrderStatisticTree.Node storage pointer"
                                    }
                                  },
                                  "id": 1578,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "children",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2778,
                                  "src": "3540:10:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                                    "typeString": "mapping(bool => uint256)"
                                  }
                                },
                                "id": 1581,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1580,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "!",
                                  "prefix": true,
                                  "src": "3551:5:24",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 1579,
                                    "name": "side",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1527,
                                    "src": "3552:4:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3540:17:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3527:30:24"
                            },
                            {
                              "assignments": [
                                1584
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1584,
                                  "name": "s_bf",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1649,
                                  "src": "3575:8:24",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "typeName": {
                                    "id": 1583,
                                    "name": "int",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3575:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1588,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1586,
                                    "name": "s_value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1576,
                                    "src": "3599:7:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 1585,
                                  "name": "balance_factor",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1299,
                                  "src": "3584:14:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_int256_$",
                                    "typeString": "function (uint256) view returns (int256)"
                                  }
                                },
                                "id": 1587,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3584:23:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3575:32:24"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 1595,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1589,
                                  "name": "s_bf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1584,
                                  "src": "3629:4:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 1593,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 1591,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "-",
                                        "prefix": true,
                                        "src": "3638:2:24",
                                        "subExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 1590,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3639:1:24",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_-1_by_1",
                                          "typeString": "int_const -1"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 1592,
                                        "name": "sign",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1544,
                                        "src": "3643:4:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "3638:9:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "id": 1594,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "3637:11:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "src": "3629:19:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 1602,
                              "nodeType": "IfStatement",
                              "src": "3625:66:24",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1597,
                                      "name": "s_value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1576,
                                      "src": "3677:7:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 1599,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "!",
                                      "prefix": true,
                                      "src": "3685:5:24",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 1598,
                                        "name": "side",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1527,
                                        "src": "3686:4:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "id": 1596,
                                    "name": "rotate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1436,
                                    "src": "3670:6:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bool_$returns$__$",
                                      "typeString": "function (uint256,bool)"
                                    }
                                  },
                                  "id": 1600,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3670:21:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 1601,
                                "nodeType": "ExpressionStatement",
                                "src": "3670:21:24"
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1604,
                                    "name": "p_value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1525,
                                    "src": "3716:7:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1605,
                                    "name": "side",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1527,
                                    "src": "3724:4:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 1603,
                                  "name": "rotate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1436,
                                  "src": "3709:6:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bool_$returns$__$",
                                    "typeString": "function (uint256,bool)"
                                  }
                                },
                                "id": 1606,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3709:20:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1607,
                              "nodeType": "ExpressionStatement",
                              "src": "3709:20:24"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 1610,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1608,
                                  "name": "s_bf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1584,
                                  "src": "3751:4:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 1609,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3757:1:24",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "3751:7:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 1625,
                              "nodeType": "IfStatement",
                              "src": "3747:124:24",
                              "trueBody": {
                                "id": 1624,
                                "nodeType": "Block",
                                "src": "3759:112:24",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1615,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 1611,
                                        "name": "p",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1570,
                                        "src": "3781:1:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 1612,
                                          "name": "nodes",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2793,
                                          "src": "3783:5:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                                            "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                                          }
                                        },
                                        "id": 1614,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 1613,
                                          "name": "p_value",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1525,
                                          "src": "3789:7:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "3783:14:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Node_$2789_storage",
                                          "typeString": "struct OrderStatisticTree.Node storage ref"
                                        }
                                      },
                                      "src": "3781:16:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                        "typeString": "struct OrderStatisticTree.Node storage pointer"
                                      }
                                    },
                                    "id": 1616,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3781:16:24"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 1618,
                                            "name": "p",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1570,
                                            "src": "3836:1:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                              "typeString": "struct OrderStatisticTree.Node storage pointer"
                                            }
                                          },
                                          "id": 1619,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "parent",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2780,
                                          "src": "3836:8:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 1620,
                                            "name": "p",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1570,
                                            "src": "3845:1:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                              "typeString": "struct OrderStatisticTree.Node storage pointer"
                                            }
                                          },
                                          "id": 1621,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "side",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2782,
                                          "src": "3845:6:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        ],
                                        "id": 1617,
                                        "name": "rebalance_delete",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1649,
                                        "src": "3819:16:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bool_$returns$__$",
                                          "typeString": "function (uint256,bool)"
                                        }
                                      },
                                      "id": 1622,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3819:33:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 1623,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3819:33:24"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 1649,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "rebalance_delete",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1528,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1525,
                  "name": "p_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1649,
                  "src": "3137:12:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1524,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3137:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1527,
                  "name": "side",
                  "nodeType": "VariableDeclaration",
                  "scope": 1649,
                  "src": "3150:9:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1526,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3150:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3136:24:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 1529,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3168:0:24"
            },
            "scope": 2794,
            "src": "3111:925:24",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1674,
              "nodeType": "Block",
              "src": "4094:153:24",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1658,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1656,
                      "name": "parent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1651,
                      "src": "4107:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1657,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4115:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "4107:9:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1673,
                  "nodeType": "IfStatement",
                  "src": "4104:137:24",
                  "trueBody": {
                    "id": 1672,
                    "nodeType": "Block",
                    "src": "4118:123:24",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1660,
                              "name": "parent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1651,
                              "src": "4145:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1659,
                            "name": "update_count",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1184,
                            "src": "4132:12:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 1661,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4132:20:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1662,
                        "nodeType": "ExpressionStatement",
                        "src": "4132:20:24"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1664,
                              "name": "parent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1651,
                              "src": "4180:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1663,
                            "name": "update_counts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1213,
                            "src": "4166:13:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 1665,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4166:21:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1666,
                        "nodeType": "ExpressionStatement",
                        "src": "4166:21:24"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1668,
                              "name": "parent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1651,
                              "src": "4218:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1669,
                              "name": "side",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1653,
                              "src": "4225:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 1667,
                            "name": "rebalance_delete",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1649,
                            "src": "4201:16:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bool_$returns$__$",
                              "typeString": "function (uint256,bool)"
                            }
                          },
                          "id": 1670,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4201:29:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1671,
                        "nodeType": "ExpressionStatement",
                        "src": "4201:29:24"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 1675,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "fix_parents",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1654,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1651,
                  "name": "parent",
                  "nodeType": "VariableDeclaration",
                  "scope": 1675,
                  "src": "4063:11:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1650,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4063:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1653,
                  "name": "side",
                  "nodeType": "VariableDeclaration",
                  "scope": 1675,
                  "src": "4075:9:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1652,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4075:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4062:23:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 1655,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4094:0:24"
            },
            "scope": 2794,
            "src": "4042:205:24",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1781,
              "nodeType": "Block",
              "src": "4319:667:24",
              "statements": [
                {
                  "assignments": [
                    1685
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1685,
                      "name": "root",
                      "nodeType": "VariableDeclaration",
                      "scope": 1782,
                      "src": "4329:17:24",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1684,
                        "name": "Node",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2789,
                        "src": "4329:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1689,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1686,
                      "name": "nodes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2793,
                      "src": "4347:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                      }
                    },
                    "id": 1688,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1687,
                      "name": "p_value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1677,
                      "src": "4353:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4347:14:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                      "typeString": "struct OrderStatisticTree.Node storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4329:32:24"
                },
                {
                  "assignments": [
                    1691
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1691,
                      "name": "c_value",
                      "nodeType": "VariableDeclaration",
                      "scope": 1782,
                      "src": "4371:12:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1690,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4371:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1696,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1692,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1685,
                        "src": "4384:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1693,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "children",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2778,
                      "src": "4384:13:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                        "typeString": "mapping(bool => uint256)"
                      }
                    },
                    "id": 1695,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1694,
                      "name": "side",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1679,
                      "src": "4398:4:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4384:19:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4371:32:24"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1699,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1697,
                      "name": "c_value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1691,
                      "src": "4417:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1698,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4426:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "4417:10:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1749,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 1747,
                        "name": "c_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1691,
                        "src": "4730:7:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 1748,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1681,
                        "src": "4739:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "4730:14:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "id": 1778,
                      "nodeType": "Block",
                      "src": "4872:108:24",
                      "statements": [
                        {
                          "assignments": [
                            1766
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1766,
                              "name": "side_new",
                              "nodeType": "VariableDeclaration",
                              "scope": 1782,
                              "src": "4886:13:24",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "typeName": {
                                "id": 1765,
                                "name": "bool",
                                "nodeType": "ElementaryTypeName",
                                "src": "4886:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 1771,
                          "initialValue": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1769,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1767,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1681,
                                  "src": "4901:5:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 1768,
                                  "name": "c_value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1691,
                                  "src": "4910:7:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4901:16:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 1770,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "4900:18:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "4886:32:24"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1773,
                                "name": "c_value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1691,
                                "src": "4946:7:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1774,
                                "name": "side_new",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1766,
                                "src": "4954:8:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1775,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1681,
                                "src": "4963:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1772,
                              "name": "insert_helper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1782,
                              "src": "4932:13:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bool_$_t_uint256_$returns$__$",
                                "typeString": "function (uint256,bool,uint256)"
                              }
                            },
                            "id": 1776,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4932:37:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 1777,
                          "nodeType": "ExpressionStatement",
                          "src": "4932:37:24"
                        }
                      ]
                    },
                    "id": 1779,
                    "nodeType": "IfStatement",
                    "src": "4726:254:24",
                    "trueBody": {
                      "id": 1764,
                      "nodeType": "Block",
                      "src": "4745:114:24",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 1754,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "4759:22:24",
                            "subExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1750,
                                  "name": "nodes",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2793,
                                  "src": "4759:5:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                                    "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                                  }
                                },
                                "id": 1752,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1751,
                                  "name": "c_value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1691,
                                  "src": "4765:7:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4759:14:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Node_$2789_storage",
                                  "typeString": "struct OrderStatisticTree.Node storage ref"
                                }
                              },
                              "id": 1753,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberName": "dupes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2788,
                              "src": "4759:20:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1755,
                          "nodeType": "ExpressionStatement",
                          "src": "4759:22:24"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1757,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1681,
                                "src": "4808:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1756,
                              "name": "update_count",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1184,
                              "src": "4795:12:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                                "typeString": "function (uint256)"
                              }
                            },
                            "id": 1758,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4795:19:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 1759,
                          "nodeType": "ExpressionStatement",
                          "src": "4795:19:24"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1761,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1681,
                                "src": "4842:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1760,
                              "name": "update_counts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1213,
                              "src": "4828:13:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                                "typeString": "function (uint256)"
                              }
                            },
                            "id": 1762,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4828:20:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 1763,
                          "nodeType": "ExpressionStatement",
                          "src": "4828:20:24"
                        }
                      ]
                    }
                  },
                  "id": 1780,
                  "nodeType": "IfStatement",
                  "src": "4413:567:24",
                  "trueBody": {
                    "id": 1746,
                    "nodeType": "Block",
                    "src": "4428:284:24",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1706,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1700,
                                "name": "root",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1685,
                                "src": "4442:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                  "typeString": "struct OrderStatisticTree.Node storage pointer"
                                }
                              },
                              "id": 1703,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "children",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2778,
                              "src": "4442:13:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                                "typeString": "mapping(bool => uint256)"
                              }
                            },
                            "id": 1704,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1702,
                              "name": "side",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1679,
                              "src": "4456:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4442:19:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1705,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1681,
                            "src": "4462:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4442:25:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1707,
                        "nodeType": "ExpressionStatement",
                        "src": "4442:25:24"
                      },
                      {
                        "assignments": [
                          1709
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1709,
                            "name": "child",
                            "nodeType": "VariableDeclaration",
                            "scope": 1782,
                            "src": "4481:18:24",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                              "typeString": "struct OrderStatisticTree.Node"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1708,
                              "name": "Node",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2789,
                              "src": "4481:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                "typeString": "struct OrderStatisticTree.Node"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1713,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1710,
                            "name": "nodes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2793,
                            "src": "4500:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                              "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                            }
                          },
                          "id": 1712,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1711,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1681,
                            "src": "4506:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4500:12:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage",
                            "typeString": "struct OrderStatisticTree.Node storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4481:31:24"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1718,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1714,
                              "name": "child",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1709,
                              "src": "4526:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                "typeString": "struct OrderStatisticTree.Node storage pointer"
                              }
                            },
                            "id": 1716,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "parent",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2780,
                            "src": "4526:12:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1717,
                            "name": "p_value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1677,
                            "src": "4539:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4526:20:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1719,
                        "nodeType": "ExpressionStatement",
                        "src": "4526:20:24"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1724,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1720,
                              "name": "child",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1709,
                              "src": "4560:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                "typeString": "struct OrderStatisticTree.Node storage pointer"
                              }
                            },
                            "id": 1722,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "side",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2782,
                            "src": "4560:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1723,
                            "name": "side",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1679,
                            "src": "4571:4:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "4560:15:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1725,
                        "nodeType": "ExpressionStatement",
                        "src": "4560:15:24"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1730,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1726,
                              "name": "child",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1709,
                              "src": "4589:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                "typeString": "struct OrderStatisticTree.Node storage pointer"
                              }
                            },
                            "id": 1728,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "height",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2784,
                            "src": "4589:12:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 1729,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4602:1:24",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "4589:14:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1731,
                        "nodeType": "ExpressionStatement",
                        "src": "4589:14:24"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1736,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1732,
                              "name": "child",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1709,
                              "src": "4617:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                "typeString": "struct OrderStatisticTree.Node storage pointer"
                              }
                            },
                            "id": 1734,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "count",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2786,
                            "src": "4617:11:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 1735,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4629:1:24",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "4617:13:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1737,
                        "nodeType": "ExpressionStatement",
                        "src": "4617:13:24"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1739,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1681,
                              "src": "4658:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1738,
                            "name": "update_counts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1213,
                            "src": "4644:13:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 1740,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4644:20:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1741,
                        "nodeType": "ExpressionStatement",
                        "src": "4644:20:24"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1743,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1681,
                              "src": "4695:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1742,
                            "name": "rebalance_insert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1523,
                            "src": "4678:16:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 1744,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4678:23:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1745,
                        "nodeType": "ExpressionStatement",
                        "src": "4678:23:24"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 1782,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "insert_helper",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1682,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1677,
                  "name": "p_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1782,
                  "src": "4276:12:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1676,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4276:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1679,
                  "name": "side",
                  "nodeType": "VariableDeclaration",
                  "scope": 1782,
                  "src": "4289:9:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1678,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4289:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1681,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1782,
                  "src": "4299:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1680,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4299:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4275:35:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 1683,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4319:0:24"
            },
            "scope": 2794,
            "src": "4253:733:24",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1804,
              "nodeType": "Block",
              "src": "5027:128:24",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1789,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1787,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1784,
                      "src": "5041:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1788,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5048:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5041:8:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 1802,
                    "nodeType": "Block",
                    "src": "5097:52:24",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1797,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5125:1:24",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 1798,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5127:4:24",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            {
                              "argumentTypes": null,
                              "id": 1799,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1784,
                              "src": "5132:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1796,
                            "name": "insert_helper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1782,
                            "src": "5111:13:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bool_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,bool,uint256)"
                            }
                          },
                          "id": 1800,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5111:27:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1801,
                        "nodeType": "ExpressionStatement",
                        "src": "5111:27:24"
                      }
                    ]
                  },
                  "id": 1803,
                  "nodeType": "IfStatement",
                  "src": "5037:112:24",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1794,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "5063:20:24",
                      "subExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1790,
                            "name": "nodes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2793,
                            "src": "5063:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                              "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                            }
                          },
                          "id": 1792,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1791,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1784,
                            "src": "5069:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5063:12:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage",
                            "typeString": "struct OrderStatisticTree.Node storage ref"
                          }
                        },
                        "id": 1793,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "memberName": "dupes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2788,
                        "src": "5063:18:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1795,
                    "nodeType": "ExpressionStatement",
                    "src": "5063:20:24"
                  }
                }
              ]
            },
            "documentation": null,
            "id": 1805,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "insert",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1785,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1784,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1805,
                  "src": "5008:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1783,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5008:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5007:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 1786,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5027:0:24"
            },
            "scope": 2794,
            "src": "4992:163:24",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1831,
              "nodeType": "Block",
              "src": "5234:158:24",
              "statements": [
                {
                  "assignments": [
                    1813
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1813,
                      "name": "child",
                      "nodeType": "VariableDeclaration",
                      "scope": 1832,
                      "src": "5244:10:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1812,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5244:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1820,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1814,
                          "name": "nodes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2793,
                          "src": "5255:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                            "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                          }
                        },
                        "id": 1816,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1815,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1807,
                          "src": "5261:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5255:12:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage",
                          "typeString": "struct OrderStatisticTree.Node storage ref"
                        }
                      },
                      "id": 1817,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "children",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2778,
                      "src": "5255:21:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                        "typeString": "mapping(bool => uint256)"
                      }
                    },
                    "id": 1819,
                    "indexExpression": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 1818,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5277:4:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5255:27:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5244:38:24"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1823,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1821,
                      "name": "child",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1813,
                      "src": "5296:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1822,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5303:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5296:8:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1828,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1807,
                      "src": "5380:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "functionReturnParameters": 1811,
                    "id": 1829,
                    "nodeType": "Return",
                    "src": "5373:12:24"
                  },
                  "id": 1830,
                  "nodeType": "IfStatement",
                  "src": "5292:93:24",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1825,
                          "name": "child",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1813,
                          "src": "5340:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1824,
                        "name": "rightmost_leaf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1832,
                        "src": "5325:14:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint256) view returns (uint256)"
                        }
                      },
                      "id": 1826,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5325:21:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "functionReturnParameters": 1811,
                    "id": 1827,
                    "nodeType": "Return",
                    "src": "5318:28:24"
                  }
                }
              ]
            },
            "documentation": null,
            "id": 1832,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "rightmost_leaf",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1808,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1807,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1832,
                  "src": "5185:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1806,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5185:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5184:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 1811,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1810,
                  "name": "leaf",
                  "nodeType": "VariableDeclaration",
                  "scope": 1832,
                  "src": "5223:9:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1809,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5223:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5222:11:24"
            },
            "scope": 2794,
            "src": "5161:231:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1889,
              "nodeType": "Block",
              "src": "5436:201:24",
              "statements": [
                {
                  "assignments": [
                    1838
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1838,
                      "name": "n",
                      "nodeType": "VariableDeclaration",
                      "scope": 1890,
                      "src": "5446:14:24",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1837,
                        "name": "Node",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2789,
                        "src": "5446:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1842,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1839,
                      "name": "nodes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2793,
                      "src": "5461:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                      }
                    },
                    "id": 1841,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1840,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1834,
                      "src": "5467:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5461:12:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                      "typeString": "struct OrderStatisticTree.Node storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5446:27:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1847,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1843,
                        "name": "n",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1838,
                        "src": "5483:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1845,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "parent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2780,
                      "src": "5483:8:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1846,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5492:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5483:10:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1848,
                  "nodeType": "ExpressionStatement",
                  "src": "5483:10:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1853,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1849,
                        "name": "n",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1838,
                        "src": "5503:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1851,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "side",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2782,
                      "src": "5503:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 1852,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5510:5:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "5503:12:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1854,
                  "nodeType": "ExpressionStatement",
                  "src": "5503:12:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1861,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1855,
                          "name": "n",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1838,
                          "src": "5525:1:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                            "typeString": "struct OrderStatisticTree.Node storage pointer"
                          }
                        },
                        "id": 1858,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "children",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2778,
                        "src": "5525:10:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                          "typeString": "mapping(bool => uint256)"
                        }
                      },
                      "id": 1859,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 1857,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5536:5:24",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5525:17:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1860,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5543:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5525:19:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1862,
                  "nodeType": "ExpressionStatement",
                  "src": "5525:19:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1869,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1863,
                          "name": "n",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1838,
                          "src": "5554:1:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                            "typeString": "struct OrderStatisticTree.Node storage pointer"
                          }
                        },
                        "id": 1866,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "children",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2778,
                        "src": "5554:10:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                          "typeString": "mapping(bool => uint256)"
                        }
                      },
                      "id": 1867,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 1865,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5565:4:24",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5554:16:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1868,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5571:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5554:18:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1870,
                  "nodeType": "ExpressionStatement",
                  "src": "5554:18:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1875,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1871,
                        "name": "n",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1838,
                        "src": "5582:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1873,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "count",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2786,
                      "src": "5582:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1874,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5590:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5582:9:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1876,
                  "nodeType": "ExpressionStatement",
                  "src": "5582:9:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1881,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1877,
                        "name": "n",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1838,
                        "src": "5601:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1879,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "height",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2784,
                      "src": "5601:8:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1880,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5610:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5601:10:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1882,
                  "nodeType": "ExpressionStatement",
                  "src": "5601:10:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1887,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1883,
                        "name": "n",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1838,
                        "src": "5621:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1885,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "dupes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2788,
                      "src": "5621:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1886,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5629:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5621:9:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1888,
                  "nodeType": "ExpressionStatement",
                  "src": "5621:9:24"
                }
              ]
            },
            "documentation": null,
            "id": 1890,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "zero_out",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1835,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1834,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1890,
                  "src": "5416:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1833,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5416:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5415:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 1836,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5436:0:24"
            },
            "scope": 2794,
            "src": "5398:239:24",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 2057,
              "nodeType": "Block",
              "src": "5707:816:24",
              "statements": [
                {
                  "assignments": [
                    1900
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1900,
                      "name": "ipn",
                      "nodeType": "VariableDeclaration",
                      "scope": 2058,
                      "src": "5717:8:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1899,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5717:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1904,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1902,
                        "name": "left",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1894,
                        "src": "5741:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1901,
                      "name": "rightmost_leaf",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1832,
                      "src": "5726:14:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256) view returns (uint256)"
                      }
                    },
                    "id": 1903,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5726:20:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5717:29:24"
                },
                {
                  "assignments": [
                    1906
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1906,
                      "name": "i",
                      "nodeType": "VariableDeclaration",
                      "scope": 2058,
                      "src": "5756:14:24",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1905,
                        "name": "Node",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2789,
                        "src": "5756:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1910,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1907,
                      "name": "nodes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2793,
                      "src": "5771:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                      }
                    },
                    "id": 1909,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1908,
                      "name": "ipn",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1900,
                      "src": "5777:3:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5771:10:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                      "typeString": "struct OrderStatisticTree.Node storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5756:25:24"
                },
                {
                  "assignments": [
                    1912
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1912,
                      "name": "dupes",
                      "nodeType": "VariableDeclaration",
                      "scope": 2058,
                      "src": "5791:10:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1911,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5791:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1915,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 1913,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1906,
                      "src": "5802:1:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node storage pointer"
                      }
                    },
                    "id": 1914,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "dupes",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2788,
                    "src": "5802:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5791:18:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1917,
                        "name": "ipn",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1900,
                        "src": "5833:3:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1916,
                      "name": "remove_helper",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2187,
                      "src": "5819:13:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 1918,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5819:18:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1919,
                  "nodeType": "ExpressionStatement",
                  "src": "5819:18:24"
                },
                {
                  "assignments": [
                    1921
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1921,
                      "name": "n",
                      "nodeType": "VariableDeclaration",
                      "scope": 2058,
                      "src": "5847:14:24",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1920,
                        "name": "Node",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2789,
                        "src": "5847:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1925,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1922,
                      "name": "nodes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2793,
                      "src": "5862:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                      }
                    },
                    "id": 1924,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1923,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1892,
                      "src": "5868:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5862:12:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                      "typeString": "struct OrderStatisticTree.Node storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5847:27:24"
                },
                {
                  "assignments": [
                    1927
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1927,
                      "name": "parent",
                      "nodeType": "VariableDeclaration",
                      "scope": 2058,
                      "src": "5884:11:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1926,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5884:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1930,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 1928,
                      "name": "n",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1921,
                      "src": "5896:1:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node storage pointer"
                      }
                    },
                    "id": 1929,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "parent",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2780,
                    "src": "5896:8:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5884:20:24"
                },
                {
                  "assignments": [
                    1932
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1932,
                      "name": "p",
                      "nodeType": "VariableDeclaration",
                      "scope": 2058,
                      "src": "5914:14:24",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1931,
                        "name": "Node",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2789,
                        "src": "5914:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1936,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1933,
                      "name": "nodes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2793,
                      "src": "5929:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                      }
                    },
                    "id": 1935,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1934,
                      "name": "parent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1927,
                      "src": "5935:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5929:13:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                      "typeString": "struct OrderStatisticTree.Node storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5914:28:24"
                },
                {
                  "assignments": [
                    1938
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1938,
                      "name": "height",
                      "nodeType": "VariableDeclaration",
                      "scope": 2058,
                      "src": "5952:11:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1937,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5952:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1941,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 1939,
                      "name": "n",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1921,
                      "src": "5964:1:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node storage pointer"
                      }
                    },
                    "id": 1940,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "height",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2784,
                    "src": "5964:8:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5952:20:24"
                },
                {
                  "assignments": [
                    1943
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1943,
                      "name": "side",
                      "nodeType": "VariableDeclaration",
                      "scope": 2058,
                      "src": "5982:9:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1942,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "5982:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1946,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 1944,
                      "name": "n",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1921,
                      "src": "5992:1:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node storage pointer"
                      }
                    },
                    "id": 1945,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "side",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2782,
                    "src": "5992:6:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5982:16:24"
                },
                {
                  "assignments": [
                    1948
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1948,
                      "name": "count",
                      "nodeType": "VariableDeclaration",
                      "scope": 2058,
                      "src": "6008:10:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1947,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6008:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1951,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 1949,
                      "name": "n",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1921,
                      "src": "6019:1:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node storage pointer"
                      }
                    },
                    "id": 1950,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "count",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2786,
                    "src": "6019:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6008:18:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1957,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1952,
                      "name": "right",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1896,
                      "src": "6036:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1953,
                          "name": "n",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1921,
                          "src": "6042:1:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                            "typeString": "struct OrderStatisticTree.Node storage pointer"
                          }
                        },
                        "id": 1954,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "children",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2778,
                        "src": "6042:10:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                          "typeString": "mapping(bool => uint256)"
                        }
                      },
                      "id": 1956,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 1955,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6053:4:24",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "6042:16:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6036:22:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1958,
                  "nodeType": "ExpressionStatement",
                  "src": "6036:22:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1964,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1959,
                      "name": "left",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1894,
                      "src": "6068:4:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1960,
                          "name": "n",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1921,
                          "src": "6073:1:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                            "typeString": "struct OrderStatisticTree.Node storage pointer"
                          }
                        },
                        "id": 1961,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "children",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2778,
                        "src": "6073:10:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                          "typeString": "mapping(bool => uint256)"
                        }
                      },
                      "id": 1963,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 1962,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6084:5:24",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "6073:17:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6068:22:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1965,
                  "nodeType": "ExpressionStatement",
                  "src": "6068:22:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1972,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1966,
                          "name": "p",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1932,
                          "src": "6100:1:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                            "typeString": "struct OrderStatisticTree.Node storage pointer"
                          }
                        },
                        "id": 1969,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "children",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2778,
                        "src": "6100:10:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                          "typeString": "mapping(bool => uint256)"
                        }
                      },
                      "id": 1970,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1968,
                        "name": "side",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1943,
                        "src": "6111:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "6100:16:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1971,
                      "name": "ipn",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1900,
                      "src": "6117:3:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6100:20:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1973,
                  "nodeType": "ExpressionStatement",
                  "src": "6100:20:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1978,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1974,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1906,
                        "src": "6130:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1976,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "parent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2780,
                      "src": "6130:8:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1977,
                      "name": "parent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1927,
                      "src": "6139:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6130:15:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1979,
                  "nodeType": "ExpressionStatement",
                  "src": "6130:15:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1984,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1980,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1906,
                        "src": "6155:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1982,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "side",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2782,
                      "src": "6155:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1983,
                      "name": "side",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1943,
                      "src": "6162:4:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "6155:11:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1985,
                  "nodeType": "ExpressionStatement",
                  "src": "6155:11:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1995,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1986,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1906,
                        "src": "6176:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1988,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "count",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2786,
                      "src": "6176:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1994,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1991,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1989,
                          "name": "count",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1948,
                          "src": "6184:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1990,
                          "name": "dupes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1912,
                          "src": "6190:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6184:11:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1992,
                          "name": "n",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1921,
                          "src": "6196:1:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                            "typeString": "struct OrderStatisticTree.Node storage pointer"
                          }
                        },
                        "id": 1993,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "dupes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2788,
                        "src": "6196:7:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "6184:19:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6176:27:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1996,
                  "nodeType": "ExpressionStatement",
                  "src": "6176:27:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2001,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1997,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1906,
                        "src": "6213:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1999,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "height",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2784,
                      "src": "6213:8:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2000,
                      "name": "height",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1938,
                      "src": "6222:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6213:15:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2002,
                  "nodeType": "ExpressionStatement",
                  "src": "6213:15:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2007,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2003,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1906,
                        "src": "6238:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 2005,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "dupes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2788,
                      "src": "6238:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2006,
                      "name": "dupes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1912,
                      "src": "6246:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6238:13:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2008,
                  "nodeType": "ExpressionStatement",
                  "src": "6238:13:24"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2011,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2009,
                      "name": "left",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1894,
                      "src": "6265:4:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2010,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6271:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "6265:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2028,
                  "nodeType": "IfStatement",
                  "src": "6261:96:24",
                  "trueBody": {
                    "id": 2027,
                    "nodeType": "Block",
                    "src": "6274:83:24",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2018,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2012,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1906,
                                "src": "6288:1:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                  "typeString": "struct OrderStatisticTree.Node storage pointer"
                                }
                              },
                              "id": 2015,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "children",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2778,
                              "src": "6288:10:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                                "typeString": "mapping(bool => uint256)"
                              }
                            },
                            "id": 2016,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 2014,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6299:5:24",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6288:17:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2017,
                            "name": "left",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1894,
                            "src": "6306:4:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6288:22:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2019,
                        "nodeType": "ExpressionStatement",
                        "src": "6288:22:24"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2025,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2020,
                                "name": "nodes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2793,
                                "src": "6324:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                                  "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                                }
                              },
                              "id": 2022,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2021,
                                "name": "left",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1894,
                                "src": "6330:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6324:11:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$2789_storage",
                                "typeString": "struct OrderStatisticTree.Node storage ref"
                              }
                            },
                            "id": 2023,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "parent",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2780,
                            "src": "6324:18:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2024,
                            "name": "ipn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1900,
                            "src": "6343:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6324:22:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2026,
                        "nodeType": "ExpressionStatement",
                        "src": "6324:22:24"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2031,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2029,
                      "name": "right",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1896,
                      "src": "6370:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2030,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6377:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "6370:8:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2048,
                  "nodeType": "IfStatement",
                  "src": "6366:98:24",
                  "trueBody": {
                    "id": 2047,
                    "nodeType": "Block",
                    "src": "6380:84:24",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2038,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2032,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1906,
                                "src": "6394:1:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                  "typeString": "struct OrderStatisticTree.Node storage pointer"
                                }
                              },
                              "id": 2035,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "children",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2778,
                              "src": "6394:10:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                                "typeString": "mapping(bool => uint256)"
                              }
                            },
                            "id": 2036,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 2034,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6405:4:24",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6394:16:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2037,
                            "name": "right",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1896,
                            "src": "6411:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6394:22:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2039,
                        "nodeType": "ExpressionStatement",
                        "src": "6394:22:24"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2045,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2040,
                                "name": "nodes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2793,
                                "src": "6430:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                                  "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                                }
                              },
                              "id": 2042,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2041,
                                "name": "right",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1896,
                                "src": "6436:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6430:12:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$2789_storage",
                                "typeString": "struct OrderStatisticTree.Node storage ref"
                              }
                            },
                            "id": 2043,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "parent",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2780,
                            "src": "6430:19:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2044,
                            "name": "ipn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1900,
                            "src": "6450:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6430:23:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2046,
                        "nodeType": "ExpressionStatement",
                        "src": "6430:23:24"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2050,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1892,
                        "src": "6482:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2049,
                      "name": "zero_out",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1890,
                      "src": "6473:8:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 2051,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6473:15:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2052,
                  "nodeType": "ExpressionStatement",
                  "src": "6473:15:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2054,
                        "name": "ipn",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1900,
                        "src": "6512:3:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2053,
                      "name": "update_counts",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1213,
                      "src": "6498:13:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 2055,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6498:18:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2056,
                  "nodeType": "ExpressionStatement",
                  "src": "6498:18:24"
                }
              ]
            },
            "documentation": null,
            "id": 2058,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "remove_branch",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1897,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1892,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2058,
                  "src": "5666:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1891,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5666:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1894,
                  "name": "left",
                  "nodeType": "VariableDeclaration",
                  "scope": 2058,
                  "src": "5677:9:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1893,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5677:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1896,
                  "name": "right",
                  "nodeType": "VariableDeclaration",
                  "scope": 2058,
                  "src": "5687:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1895,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5687:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5665:33:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 1898,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5707:0:24"
            },
            "scope": 2794,
            "src": "5643:880:24",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 2186,
              "nodeType": "Block",
              "src": "6572:724:24",
              "statements": [
                {
                  "assignments": [
                    2064
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2064,
                      "name": "n",
                      "nodeType": "VariableDeclaration",
                      "scope": 2187,
                      "src": "6582:14:24",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2063,
                        "name": "Node",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2789,
                        "src": "6582:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2068,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2065,
                      "name": "nodes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2793,
                      "src": "6597:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                      }
                    },
                    "id": 2067,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2066,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2060,
                      "src": "6603:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6597:12:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                      "typeString": "struct OrderStatisticTree.Node storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6582:27:24"
                },
                {
                  "assignments": [
                    2070
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2070,
                      "name": "parent",
                      "nodeType": "VariableDeclaration",
                      "scope": 2187,
                      "src": "6619:11:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2069,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6619:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2073,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 2071,
                      "name": "n",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2064,
                      "src": "6631:1:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node storage pointer"
                      }
                    },
                    "id": 2072,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "parent",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2780,
                    "src": "6631:8:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6619:20:24"
                },
                {
                  "assignments": [
                    2075
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2075,
                      "name": "side",
                      "nodeType": "VariableDeclaration",
                      "scope": 2187,
                      "src": "6649:9:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2074,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "6649:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2078,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 2076,
                      "name": "n",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2064,
                      "src": "6659:1:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node storage pointer"
                      }
                    },
                    "id": 2077,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "side",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2782,
                    "src": "6659:6:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6649:16:24"
                },
                {
                  "assignments": [
                    2080
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2080,
                      "name": "p",
                      "nodeType": "VariableDeclaration",
                      "scope": 2187,
                      "src": "6675:14:24",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2079,
                        "name": "Node",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2789,
                        "src": "6675:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2084,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2081,
                      "name": "nodes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2793,
                      "src": "6690:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                      }
                    },
                    "id": 2083,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2082,
                      "name": "parent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2070,
                      "src": "6696:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6690:13:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                      "typeString": "struct OrderStatisticTree.Node storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6675:28:24"
                },
                {
                  "assignments": [
                    2086
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2086,
                      "name": "left",
                      "nodeType": "VariableDeclaration",
                      "scope": 2187,
                      "src": "6713:9:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2085,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6713:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2091,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2087,
                        "name": "n",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2064,
                        "src": "6723:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 2088,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "children",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2778,
                      "src": "6723:10:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                        "typeString": "mapping(bool => uint256)"
                      }
                    },
                    "id": 2090,
                    "indexExpression": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 2089,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6734:5:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6723:17:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6713:27:24"
                },
                {
                  "assignments": [
                    2093
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2093,
                      "name": "right",
                      "nodeType": "VariableDeclaration",
                      "scope": 2187,
                      "src": "6750:10:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2092,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6750:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2098,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2094,
                        "name": "n",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2064,
                        "src": "6761:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 2095,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "children",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2778,
                      "src": "6761:10:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                        "typeString": "mapping(bool => uint256)"
                      }
                    },
                    "id": 2097,
                    "indexExpression": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 2096,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6772:4:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6761:16:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6750:27:24"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 2107,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2101,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2099,
                            "name": "left",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2086,
                            "src": "6792:4:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2100,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6800:1:24",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6792:9:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 2102,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "6791:11:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2105,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2103,
                            "name": "right",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2093,
                            "src": "6807:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2104,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6816:1:24",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6807:10:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 2106,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "6806:12:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "6791:27:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 2134,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2128,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2126,
                              "name": "left",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2086,
                              "src": "6949:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2127,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6956:1:24",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "6949:8:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "id": 2129,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "6948:10:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2132,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2130,
                              "name": "right",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2093,
                              "src": "6963:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2131,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6972:1:24",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "6963:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "id": 2133,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "6962:12:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "6948:26:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "id": 2183,
                      "nodeType": "Block",
                      "src": "7046:244:24",
                      "statements": [
                        {
                          "assignments": [
                            2143
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 2143,
                              "name": "child",
                              "nodeType": "VariableDeclaration",
                              "scope": 2187,
                              "src": "7060:10:24",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 2142,
                                "name": "uint",
                                "nodeType": "ElementaryTypeName",
                                "src": "7060:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 2147,
                          "initialValue": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2146,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2144,
                              "name": "left",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2086,
                              "src": "7071:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2145,
                              "name": "right",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2093,
                              "src": "7076:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "7071:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "7060:21:24"
                        },
                        {
                          "assignments": [
                            2149
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 2149,
                              "name": "c",
                              "nodeType": "VariableDeclaration",
                              "scope": 2187,
                              "src": "7095:14:24",
                              "stateVariable": false,
                              "storageLocation": "storage",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                "typeString": "struct OrderStatisticTree.Node"
                              },
                              "typeName": {
                                "contractScope": null,
                                "id": 2148,
                                "name": "Node",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 2789,
                                "src": "7095:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                  "typeString": "struct OrderStatisticTree.Node"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 2153,
                          "initialValue": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2150,
                              "name": "nodes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2793,
                              "src": "7110:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                                "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                              }
                            },
                            "id": 2152,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2151,
                              "name": "child",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2143,
                              "src": "7116:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7110:12:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Node_$2789_storage",
                              "typeString": "struct OrderStatisticTree.Node storage ref"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "7095:27:24"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 2160,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2154,
                                  "name": "p",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2080,
                                  "src": "7136:1:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                    "typeString": "struct OrderStatisticTree.Node storage pointer"
                                  }
                                },
                                "id": 2157,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "children",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2778,
                                "src": "7136:10:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                                  "typeString": "mapping(bool => uint256)"
                                }
                              },
                              "id": 2158,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2156,
                                "name": "side",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2075,
                                "src": "7147:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "nodeType": "IndexAccess",
                              "src": "7136:16:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "id": 2159,
                              "name": "child",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2143,
                              "src": "7153:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "7136:22:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2161,
                          "nodeType": "ExpressionStatement",
                          "src": "7136:22:24"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 2166,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2162,
                                "name": "c",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2149,
                                "src": "7172:1:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                  "typeString": "struct OrderStatisticTree.Node storage pointer"
                                }
                              },
                              "id": 2164,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberName": "parent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2780,
                              "src": "7172:8:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "id": 2165,
                              "name": "parent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2070,
                              "src": "7181:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "7172:15:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2167,
                          "nodeType": "ExpressionStatement",
                          "src": "7172:15:24"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 2172,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2168,
                                "name": "c",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2149,
                                "src": "7201:1:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                  "typeString": "struct OrderStatisticTree.Node storage pointer"
                                }
                              },
                              "id": 2170,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberName": "side",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2782,
                              "src": "7201:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "id": 2171,
                              "name": "side",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2075,
                              "src": "7208:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "7201:11:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 2173,
                          "nodeType": "ExpressionStatement",
                          "src": "7201:11:24"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2175,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2060,
                                "src": "7235:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 2174,
                              "name": "zero_out",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1890,
                              "src": "7226:8:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                                "typeString": "function (uint256)"
                              }
                            },
                            "id": 2176,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7226:15:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 2177,
                          "nodeType": "ExpressionStatement",
                          "src": "7226:15:24"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2179,
                                "name": "parent",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2070,
                                "src": "7267:6:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2180,
                                "name": "side",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2075,
                                "src": "7274:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "id": 2178,
                              "name": "fix_parents",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1675,
                              "src": "7255:11:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bool_$returns$__$",
                                "typeString": "function (uint256,bool)"
                              }
                            },
                            "id": 2181,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7255:24:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 2182,
                          "nodeType": "ExpressionStatement",
                          "src": "7255:24:24"
                        }
                      ]
                    },
                    "id": 2184,
                    "nodeType": "IfStatement",
                    "src": "6944:346:24",
                    "trueBody": {
                      "id": 2141,
                      "nodeType": "Block",
                      "src": "6976:56:24",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2136,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2060,
                                "src": "7004:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2137,
                                "name": "left",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2086,
                                "src": "7010:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2138,
                                "name": "right",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2093,
                                "src": "7015:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 2135,
                              "name": "remove_branch",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2058,
                              "src": "6990:13:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                "typeString": "function (uint256,uint256,uint256)"
                              }
                            },
                            "id": 2139,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6990:31:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 2140,
                          "nodeType": "ExpressionStatement",
                          "src": "6990:31:24"
                        }
                      ]
                    }
                  },
                  "id": 2185,
                  "nodeType": "IfStatement",
                  "src": "6787:503:24",
                  "trueBody": {
                    "id": 2125,
                    "nodeType": "Block",
                    "src": "6820:110:24",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2114,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2108,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2080,
                                "src": "6834:1:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                  "typeString": "struct OrderStatisticTree.Node storage pointer"
                                }
                              },
                              "id": 2111,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "children",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2778,
                              "src": "6834:10:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                                "typeString": "mapping(bool => uint256)"
                              }
                            },
                            "id": 2112,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2110,
                              "name": "side",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2075,
                              "src": "6845:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6834:16:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2113,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6851:1:24",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6834:18:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2115,
                        "nodeType": "ExpressionStatement",
                        "src": "6834:18:24"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2117,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2060,
                              "src": "6875:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2116,
                            "name": "zero_out",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1890,
                            "src": "6866:8:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 2118,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6866:15:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2119,
                        "nodeType": "ExpressionStatement",
                        "src": "6866:15:24"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2121,
                              "name": "parent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2070,
                              "src": "6907:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2122,
                              "name": "side",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2075,
                              "src": "6914:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 2120,
                            "name": "fix_parents",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1675,
                            "src": "6895:11:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bool_$returns$__$",
                              "typeString": "function (uint256,bool)"
                            }
                          },
                          "id": 2123,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6895:24:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2124,
                        "nodeType": "ExpressionStatement",
                        "src": "6895:24:24"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 2187,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "remove_helper",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2061,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2060,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2187,
                  "src": "6552:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2059,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6552:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6551:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2062,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6572:0:24"
            },
            "scope": 2794,
            "src": "6529:767:24",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 2247,
              "nodeType": "Block",
              "src": "7337:404:24",
              "statements": [
                {
                  "assignments": [
                    2193
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2193,
                      "name": "n",
                      "nodeType": "VariableDeclaration",
                      "scope": 2248,
                      "src": "7347:14:24",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2192,
                        "name": "Node",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2789,
                        "src": "7347:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2197,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2194,
                      "name": "nodes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2793,
                      "src": "7362:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                      }
                    },
                    "id": 2196,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2195,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2189,
                      "src": "7368:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "7362:12:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                      "typeString": "struct OrderStatisticTree.Node storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7347:27:24"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2200,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2198,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2189,
                      "src": "7388:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2199,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7395:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7388:8:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 2214,
                    "nodeType": "Block",
                    "src": "7473:63:24",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2211,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2208,
                              "name": "n",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2193,
                              "src": "7491:1:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                "typeString": "struct OrderStatisticTree.Node storage pointer"
                              }
                            },
                            "id": 2209,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "count",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2786,
                            "src": "7491:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2210,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7500:1:24",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "7491:10:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2213,
                        "nodeType": "IfStatement",
                        "src": "7487:39:24",
                        "trueBody": {
                          "expression": null,
                          "functionReturnParameters": 2191,
                          "id": 2212,
                          "nodeType": "Return",
                          "src": "7519:7:24"
                        }
                      }
                    ]
                  },
                  "id": 2215,
                  "nodeType": "IfStatement",
                  "src": "7384:152:24",
                  "trueBody": {
                    "id": 2207,
                    "nodeType": "Block",
                    "src": "7397:63:24",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2204,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2201,
                              "name": "n",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2193,
                              "src": "7415:1:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                "typeString": "struct OrderStatisticTree.Node storage pointer"
                              }
                            },
                            "id": 2202,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "dupes",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2788,
                            "src": "7415:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2203,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7424:1:24",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "7415:10:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2206,
                        "nodeType": "IfStatement",
                        "src": "7411:39:24",
                        "trueBody": {
                          "expression": null,
                          "functionReturnParameters": 2191,
                          "id": 2205,
                          "nodeType": "Return",
                          "src": "7443:7:24"
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2219,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2216,
                        "name": "n",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2193,
                        "src": "7549:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 2217,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "dupes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2788,
                      "src": "7549:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2218,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7557:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7549:9:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2243,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2189,
                          "src": "7728:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 2242,
                        "name": "remove_helper",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2187,
                        "src": "7714:13:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                          "typeString": "function (uint256)"
                        }
                      },
                      "id": 2244,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7714:20:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 2245,
                    "nodeType": "ExpressionStatement",
                    "src": "7714:20:24"
                  },
                  "id": 2246,
                  "nodeType": "IfStatement",
                  "src": "7545:189:24",
                  "trueBody": {
                    "id": 2241,
                    "nodeType": "Block",
                    "src": "7560:128:24",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2223,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "--",
                          "prefix": false,
                          "src": "7574:9:24",
                          "subExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2220,
                              "name": "n",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2193,
                              "src": "7574:1:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                "typeString": "struct OrderStatisticTree.Node storage pointer"
                              }
                            },
                            "id": 2222,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "dupes",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2788,
                            "src": "7574:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2224,
                        "nodeType": "ExpressionStatement",
                        "src": "7574:9:24"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2227,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2225,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2189,
                            "src": "7600:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2226,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7607:1:24",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "7600:8:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2233,
                        "nodeType": "IfStatement",
                        "src": "7597:38:24",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 2231,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "--",
                            "prefix": false,
                            "src": "7626:9:24",
                            "subExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2228,
                                "name": "n",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2193,
                                "src": "7626:1:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                  "typeString": "struct OrderStatisticTree.Node storage pointer"
                                }
                              },
                              "id": 2230,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberName": "count",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2786,
                              "src": "7626:7:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2232,
                          "nodeType": "ExpressionStatement",
                          "src": "7626:9:24"
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2235,
                                "name": "n",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2193,
                                "src": "7661:1:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                  "typeString": "struct OrderStatisticTree.Node storage pointer"
                                }
                              },
                              "id": 2236,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "parent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2780,
                              "src": "7661:8:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2237,
                                "name": "n",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2193,
                                "src": "7670:1:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                  "typeString": "struct OrderStatisticTree.Node storage pointer"
                                }
                              },
                              "id": 2238,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "side",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2782,
                              "src": "7670:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 2234,
                            "name": "fix_parents",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1675,
                            "src": "7649:11:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bool_$returns$__$",
                              "typeString": "function (uint256,bool)"
                            }
                          },
                          "id": 2239,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7649:28:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2240,
                        "nodeType": "ExpressionStatement",
                        "src": "7649:28:24"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 2248,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "remove",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2190,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2189,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2248,
                  "src": "7318:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2188,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7318:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7317:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2191,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7337:0:24"
            },
            "scope": 2794,
            "src": "7302:439:24",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2333,
              "nodeType": "Block",
              "src": "7811:610:24",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2257,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2255,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2250,
                      "src": "7824:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2256,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7831:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7824:8:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2332,
                  "nodeType": "IfStatement",
                  "src": "7821:594:24",
                  "trueBody": {
                    "id": 2331,
                    "nodeType": "Block",
                    "src": "7833:582:24",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2263,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2258,
                            "name": "smaller",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2253,
                            "src": "7847:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2259,
                                "name": "nodes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2793,
                                "src": "7855:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                                  "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                                }
                              },
                              "id": 2261,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2260,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7861:1:24",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7855:8:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$2789_storage",
                                "typeString": "struct OrderStatisticTree.Node storage ref"
                              }
                            },
                            "id": 2262,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "dupes",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2788,
                            "src": "7855:14:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7847:22:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2264,
                        "nodeType": "ExpressionStatement",
                        "src": "7847:22:24"
                      },
                      {
                        "assignments": [
                          2266
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2266,
                            "name": "cur",
                            "nodeType": "VariableDeclaration",
                            "scope": 2334,
                            "src": "7883:8:24",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2265,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "7883:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2273,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2267,
                                "name": "nodes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2793,
                                "src": "7892:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                                  "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                                }
                              },
                              "id": 2269,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2268,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7898:1:24",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7892:8:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$2789_storage",
                                "typeString": "struct OrderStatisticTree.Node storage ref"
                              }
                            },
                            "id": 2270,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "children",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2778,
                            "src": "7892:17:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                              "typeString": "mapping(bool => uint256)"
                            }
                          },
                          "id": 2272,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 2271,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7910:4:24",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7892:23:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7883:32:24"
                      },
                      {
                        "assignments": [
                          2275
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2275,
                            "name": "cur_node",
                            "nodeType": "VariableDeclaration",
                            "scope": 2334,
                            "src": "7929:21:24",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                              "typeString": "struct OrderStatisticTree.Node"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2274,
                              "name": "Node",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2789,
                              "src": "7929:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                "typeString": "struct OrderStatisticTree.Node"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2279,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2276,
                            "name": "nodes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2793,
                            "src": "7951:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                              "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                            }
                          },
                          "id": 2278,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2277,
                            "name": "cur",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2266,
                            "src": "7957:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7951:10:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage",
                            "typeString": "struct OrderStatisticTree.Node storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7929:32:24"
                      },
                      {
                        "body": {
                          "id": 2329,
                          "nodeType": "Block",
                          "src": "7986:419:24",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2283,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2281,
                                  "name": "cur",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2266,
                                  "src": "8008:3:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2282,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2250,
                                  "src": "8013:5:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8008:10:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 2314,
                              "nodeType": "IfStatement",
                              "src": "8004:278:24",
                              "trueBody": {
                                "id": 2313,
                                "nodeType": "Block",
                                "src": "8019:263:24",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 2286,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 2284,
                                        "name": "cur",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2266,
                                        "src": "8044:3:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 2285,
                                        "name": "value",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2250,
                                        "src": "8048:5:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "8044:9:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 2294,
                                    "nodeType": "IfStatement",
                                    "src": "8041:63:24",
                                    "trueBody": {
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2292,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "argumentTypes": null,
                                          "id": 2287,
                                          "name": "smaller",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2253,
                                          "src": "8079:7:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "+=",
                                        "rightHandSide": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 2291,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 2288,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "8088:1:24",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 2289,
                                              "name": "cur_node",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2275,
                                              "src": "8090:8:24",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                                "typeString": "struct OrderStatisticTree.Node storage pointer"
                                              }
                                            },
                                            "id": 2290,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "dupes",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2788,
                                            "src": "8090:14:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "8088:16:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "8079:25:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 2293,
                                      "nodeType": "ExpressionStatement",
                                      "src": "8079:25:24"
                                    }
                                  },
                                  {
                                    "assignments": [
                                      2296
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 2296,
                                        "name": "left_child",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 2334,
                                        "src": "8126:15:24",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 2295,
                                          "name": "uint",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "8126:4:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 2301,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 2297,
                                          "name": "cur_node",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2275,
                                          "src": "8142:8:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                            "typeString": "struct OrderStatisticTree.Node storage pointer"
                                          }
                                        },
                                        "id": 2298,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "children",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2778,
                                        "src": "8142:17:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                                          "typeString": "mapping(bool => uint256)"
                                        }
                                      },
                                      "id": 2300,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "66616c7365",
                                        "id": 2299,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8160:5:24",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "8142:24:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "8126:40:24"
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 2304,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 2302,
                                        "name": "left_child",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2296,
                                        "src": "8192:10:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 2303,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8204:1:24",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "8192:13:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 2312,
                                    "nodeType": "IfStatement",
                                    "src": "8188:75:24",
                                    "trueBody": {
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2310,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "argumentTypes": null,
                                          "id": 2305,
                                          "name": "smaller",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2253,
                                          "src": "8231:7:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "+=",
                                        "rightHandSide": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 2306,
                                              "name": "nodes",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2793,
                                              "src": "8240:5:24",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                                                "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                                              }
                                            },
                                            "id": 2308,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 2307,
                                              "name": "left_child",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2296,
                                              "src": "8246:10:24",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "8240:17:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Node_$2789_storage",
                                              "typeString": "struct OrderStatisticTree.Node storage ref"
                                            }
                                          },
                                          "id": 2309,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "count",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2786,
                                          "src": "8240:23:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "8231:32:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 2311,
                                      "nodeType": "ExpressionStatement",
                                      "src": "8231:32:24"
                                    }
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2317,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2315,
                                  "name": "cur",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2266,
                                  "src": "8303:3:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2316,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2250,
                                  "src": "8308:5:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8303:10:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 2319,
                              "nodeType": "IfStatement",
                              "src": "8299:41:24",
                              "trueBody": {
                                "id": 2318,
                                "nodeType": "Break",
                                "src": "8335:5:24"
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2327,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 2320,
                                  "name": "cur",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2266,
                                  "src": "8358:3:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2321,
                                      "name": "cur_node",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2275,
                                      "src": "8362:8:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                        "typeString": "struct OrderStatisticTree.Node storage pointer"
                                      }
                                    },
                                    "id": 2322,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "children",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2778,
                                    "src": "8362:17:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                                      "typeString": "mapping(bool => uint256)"
                                    }
                                  },
                                  "id": 2326,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2325,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 2323,
                                      "name": "cur",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2266,
                                      "src": "8380:3:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 2324,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2250,
                                      "src": "8384:5:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "8380:9:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "8362:28:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8358:32:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2328,
                              "nodeType": "ExpressionStatement",
                              "src": "8358:32:24"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 2280,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7981:4:24",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "id": 2330,
                        "nodeType": "WhileStatement",
                        "src": "7975:430:24"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 2334,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "rank",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2251,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2250,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2334,
                  "src": "7761:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2249,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7761:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7760:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2254,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2253,
                  "name": "smaller",
                  "nodeType": "VariableDeclaration",
                  "scope": 2334,
                  "src": "7798:12:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2252,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7798:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7797:14:24"
            },
            "scope": 2794,
            "src": "7747:674:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2456,
              "nodeType": "Block",
              "src": "8492:1028:24",
              "statements": [
                {
                  "assignments": [
                    2342
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2342,
                      "name": "zeroes",
                      "nodeType": "VariableDeclaration",
                      "scope": 2457,
                      "src": "8502:11:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2341,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8502:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2347,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2343,
                        "name": "nodes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2793,
                        "src": "8514:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                          "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                        }
                      },
                      "id": 2345,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2344,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8520:1:24",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "8514:8:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage",
                        "typeString": "struct OrderStatisticTree.Node storage ref"
                      }
                    },
                    "id": 2346,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "dupes",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2788,
                    "src": "8514:14:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8502:26:24"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2350,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2348,
                      "name": "pos",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2336,
                      "src": "8542:3:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2349,
                      "name": "zeroes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2342,
                      "src": "8546:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8542:10:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 2454,
                    "nodeType": "Block",
                    "src": "8589:925:24",
                    "statements": [
                      {
                        "assignments": [
                          2354
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2354,
                            "name": "pos_new",
                            "nodeType": "VariableDeclaration",
                            "scope": 2457,
                            "src": "8603:12:24",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2353,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "8603:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2358,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2357,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2355,
                            "name": "pos",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2336,
                            "src": "8616:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2356,
                            "name": "zeroes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2342,
                            "src": "8620:6:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8616:10:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8603:23:24"
                      },
                      {
                        "assignments": [
                          2360
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2360,
                            "name": "cur",
                            "nodeType": "VariableDeclaration",
                            "scope": 2457,
                            "src": "8640:8:24",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2359,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "8640:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2367,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2361,
                                "name": "nodes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2793,
                                "src": "8649:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                                  "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                                }
                              },
                              "id": 2363,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2362,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8655:1:24",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8649:8:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$2789_storage",
                                "typeString": "struct OrderStatisticTree.Node storage ref"
                              }
                            },
                            "id": 2364,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "children",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2778,
                            "src": "8649:17:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                              "typeString": "mapping(bool => uint256)"
                            }
                          },
                          "id": 2366,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 2365,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8667:4:24",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8649:23:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8640:32:24"
                      },
                      {
                        "assignments": [
                          2369
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2369,
                            "name": "cur_node",
                            "nodeType": "VariableDeclaration",
                            "scope": 2457,
                            "src": "8686:21:24",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                              "typeString": "struct OrderStatisticTree.Node"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2368,
                              "name": "Node",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2789,
                              "src": "8686:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                "typeString": "struct OrderStatisticTree.Node"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2373,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2370,
                            "name": "nodes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2793,
                            "src": "8708:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                              "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                            }
                          },
                          "id": 2372,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2371,
                            "name": "cur",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2360,
                            "src": "8714:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8708:10:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage",
                            "typeString": "struct OrderStatisticTree.Node storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8686:32:24"
                      },
                      {
                        "body": {
                          "id": 2452,
                          "nodeType": "Block",
                          "src": "8743:761:24",
                          "statements": [
                            {
                              "assignments": [
                                2376
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2376,
                                  "name": "left",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2457,
                                  "src": "8761:9:24",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2375,
                                    "name": "uint",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8761:4:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2381,
                              "initialValue": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2377,
                                    "name": "cur_node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2369,
                                    "src": "8771:8:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                      "typeString": "struct OrderStatisticTree.Node storage pointer"
                                    }
                                  },
                                  "id": 2378,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "children",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2778,
                                  "src": "8771:17:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                                    "typeString": "mapping(bool => uint256)"
                                  }
                                },
                                "id": 2380,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "66616c7365",
                                  "id": 2379,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8789:5:24",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "false"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "8771:24:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8761:34:24"
                            },
                            {
                              "assignments": [
                                2383
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2383,
                                  "name": "cur_num",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2457,
                                  "src": "8813:12:24",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2382,
                                    "name": "uint",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8813:4:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2388,
                              "initialValue": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2387,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2384,
                                    "name": "cur_node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2369,
                                    "src": "8826:8:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                      "typeString": "struct OrderStatisticTree.Node storage pointer"
                                    }
                                  },
                                  "id": 2385,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "dupes",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2788,
                                  "src": "8826:14:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 2386,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8841:1:24",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "8826:16:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8813:29:24"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2391,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2389,
                                  "name": "left",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2376,
                                  "src": "8864:4:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2390,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8870:1:24",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "8864:7:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 2408,
                                "nodeType": "Block",
                                "src": "9023:53:24",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2406,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 2404,
                                        "name": "left_count",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2399,
                                        "src": "9045:10:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 2405,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9056:1:24",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "9045:12:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2407,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9045:12:24"
                                  }
                                ]
                              },
                              "id": 2409,
                              "nodeType": "IfStatement",
                              "src": "8860:216:24",
                              "trueBody": {
                                "id": 2403,
                                "nodeType": "Block",
                                "src": "8873:128:24",
                                "statements": [
                                  {
                                    "assignments": [
                                      2393
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 2393,
                                        "name": "left_node",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 2457,
                                        "src": "8895:22:24",
                                        "stateVariable": false,
                                        "storageLocation": "storage",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                          "typeString": "struct OrderStatisticTree.Node"
                                        },
                                        "typeName": {
                                          "contractScope": null,
                                          "id": 2392,
                                          "name": "Node",
                                          "nodeType": "UserDefinedTypeName",
                                          "referencedDeclaration": 2789,
                                          "src": "8895:4:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                            "typeString": "struct OrderStatisticTree.Node"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 2397,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 2394,
                                        "name": "nodes",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2793,
                                        "src": "8918:5:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                                          "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                                        }
                                      },
                                      "id": 2396,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 2395,
                                        "name": "left",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2376,
                                        "src": "8924:4:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "8918:11:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Node_$2789_storage",
                                        "typeString": "struct OrderStatisticTree.Node storage ref"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "8895:34:24"
                                  },
                                  {
                                    "assignments": [
                                      2399
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 2399,
                                        "name": "left_count",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 2457,
                                        "src": "8951:15:24",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 2398,
                                          "name": "uint",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "8951:4:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 2402,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2400,
                                        "name": "left_node",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2393,
                                        "src": "8967:9:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                                        }
                                      },
                                      "id": 2401,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "count",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2786,
                                      "src": "8967:15:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "8951:31:24"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2412,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2410,
                                  "name": "pos_new",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2354,
                                  "src": "9097:7:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2411,
                                  "name": "left_count",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2399,
                                  "src": "9105:10:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9097:18:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2426,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2422,
                                    "name": "pos_new",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2354,
                                    "src": "9232:7:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2425,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 2423,
                                      "name": "left_count",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2399,
                                      "src": "9240:10:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 2424,
                                      "name": "cur_num",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2383,
                                      "src": "9251:7:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "9240:18:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "9232:26:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "id": 2449,
                                  "nodeType": "Block",
                                  "src": "9332:158:24",
                                  "statements": [
                                    {
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2435,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "argumentTypes": null,
                                          "id": 2430,
                                          "name": "cur",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2360,
                                          "src": "9354:3:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 2431,
                                              "name": "cur_node",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2369,
                                              "src": "9358:8:24",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                                "typeString": "struct OrderStatisticTree.Node storage pointer"
                                              }
                                            },
                                            "id": 2432,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "children",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2778,
                                            "src": "9358:17:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                                              "typeString": "mapping(bool => uint256)"
                                            }
                                          },
                                          "id": 2434,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "74727565",
                                            "id": 2433,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "bool",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "9376:4:24",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            "value": "true"
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "9358:23:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "9354:27:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 2436,
                                      "nodeType": "ExpressionStatement",
                                      "src": "9354:27:24"
                                    },
                                    {
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2441,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "argumentTypes": null,
                                          "id": 2437,
                                          "name": "cur_node",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2369,
                                          "src": "9403:8:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                            "typeString": "struct OrderStatisticTree.Node storage pointer"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 2438,
                                            "name": "nodes",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2793,
                                            "src": "9412:5:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                                              "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                                            }
                                          },
                                          "id": 2440,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 2439,
                                            "name": "cur",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2360,
                                            "src": "9418:3:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "9412:10:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Node_$2789_storage",
                                            "typeString": "struct OrderStatisticTree.Node storage ref"
                                          }
                                        },
                                        "src": "9403:19:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                                        }
                                      },
                                      "id": 2442,
                                      "nodeType": "ExpressionStatement",
                                      "src": "9403:19:24"
                                    },
                                    {
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2447,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "argumentTypes": null,
                                          "id": 2443,
                                          "name": "pos_new",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2354,
                                          "src": "9444:7:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "-=",
                                        "rightHandSide": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 2446,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 2444,
                                            "name": "left_count",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2399,
                                            "src": "9453:10:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 2445,
                                            "name": "cur_num",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2383,
                                            "src": "9464:7:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "9453:18:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "9444:27:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 2448,
                                      "nodeType": "ExpressionStatement",
                                      "src": "9444:27:24"
                                    }
                                  ]
                                },
                                "id": 2450,
                                "nodeType": "IfStatement",
                                "src": "9228:262:24",
                                "trueBody": {
                                  "id": 2429,
                                  "nodeType": "Block",
                                  "src": "9259:51:24",
                                  "statements": [
                                    {
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2427,
                                        "name": "cur",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2360,
                                        "src": "9288:3:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "functionReturnParameters": 2340,
                                      "id": 2428,
                                      "nodeType": "Return",
                                      "src": "9281:10:24"
                                    }
                                  ]
                                }
                              },
                              "id": 2451,
                              "nodeType": "IfStatement",
                              "src": "9093:397:24",
                              "trueBody": {
                                "id": 2421,
                                "nodeType": "Block",
                                "src": "9117:89:24",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2415,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 2413,
                                        "name": "cur",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2360,
                                        "src": "9139:3:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 2414,
                                        "name": "left",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2376,
                                        "src": "9143:4:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "9139:8:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2416,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9139:8:24"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2419,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 2417,
                                        "name": "cur_node",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2369,
                                        "src": "9169:8:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 2418,
                                        "name": "left_node",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2393,
                                        "src": "9178:9:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                                        }
                                      },
                                      "src": "9169:18:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                        "typeString": "struct OrderStatisticTree.Node storage pointer"
                                      }
                                    },
                                    "id": 2420,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9169:18:24"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 2374,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8738:4:24",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "id": 2453,
                        "nodeType": "WhileStatement",
                        "src": "8732:772:24"
                      }
                    ]
                  },
                  "id": 2455,
                  "nodeType": "IfStatement",
                  "src": "8538:976:24",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2351,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8573:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 2340,
                    "id": 2352,
                    "nodeType": "Return",
                    "src": "8566:8:24"
                  }
                }
              ]
            },
            "documentation": null,
            "id": 2457,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "select_at",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2337,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2336,
                  "name": "pos",
                  "nodeType": "VariableDeclaration",
                  "scope": 2457,
                  "src": "8446:8:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2335,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "8446:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8445:10:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2340,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2339,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2457,
                  "src": "8481:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2338,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "8481:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8480:12:24"
            },
            "scope": 2794,
            "src": "8427:1093:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2471,
              "nodeType": "Block",
              "src": "9590:44:24",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2469,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2464,
                          "name": "nodes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2793,
                          "src": "9607:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                            "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                          }
                        },
                        "id": 2466,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2465,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2459,
                          "src": "9613:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "9607:12:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage",
                          "typeString": "struct OrderStatisticTree.Node storage ref"
                        }
                      },
                      "id": 2467,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "dupes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2788,
                      "src": "9607:18:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 2468,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9626:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "9607:20:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2463,
                  "id": 2470,
                  "nodeType": "Return",
                  "src": "9600:27:24"
                }
              ]
            },
            "documentation": null,
            "id": 2472,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "duplicates",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2460,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2459,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2472,
                  "src": "9546:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2458,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "9546:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9545:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2463,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2462,
                  "name": "n",
                  "nodeType": "VariableDeclaration",
                  "scope": 2472,
                  "src": "9583:6:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2461,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "9583:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9582:8:24"
            },
            "scope": 2794,
            "src": "9526:108:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2498,
              "nodeType": "Block",
              "src": "9698:137:24",
              "statements": [
                {
                  "assignments": [
                    2478
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2478,
                      "name": "root",
                      "nodeType": "VariableDeclaration",
                      "scope": 2499,
                      "src": "9708:17:24",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2477,
                        "name": "Node",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2789,
                        "src": "9708:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2482,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2479,
                      "name": "nodes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2793,
                      "src": "9726:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                      }
                    },
                    "id": 2481,
                    "indexExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2480,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9732:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9726:8:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                      "typeString": "struct OrderStatisticTree.Node storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9708:26:24"
                },
                {
                  "assignments": [
                    2484
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2484,
                      "name": "child",
                      "nodeType": "VariableDeclaration",
                      "scope": 2499,
                      "src": "9744:18:24",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2483,
                        "name": "Node",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2789,
                        "src": "9744:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2491,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2485,
                      "name": "nodes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2793,
                      "src": "9763:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                      }
                    },
                    "id": 2490,
                    "indexExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2486,
                          "name": "root",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2478,
                          "src": "9769:4:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                            "typeString": "struct OrderStatisticTree.Node storage pointer"
                          }
                        },
                        "id": 2487,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "children",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2778,
                        "src": "9769:13:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                          "typeString": "mapping(bool => uint256)"
                        }
                      },
                      "id": 2489,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 2488,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9783:4:24",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "9769:19:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9763:26:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                      "typeString": "struct OrderStatisticTree.Node storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9744:45:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2496,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2492,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2478,
                        "src": "9806:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 2493,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "dupes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2788,
                      "src": "9806:10:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2494,
                        "name": "child",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2484,
                        "src": "9817:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 2495,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "count",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2786,
                      "src": "9817:11:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9806:22:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2476,
                  "id": 2497,
                  "nodeType": "Return",
                  "src": "9799:29:24"
                }
              ]
            },
            "documentation": null,
            "id": 2499,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "count",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2473,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9658:2:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2476,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2475,
                  "name": "result",
                  "nodeType": "VariableDeclaration",
                  "scope": 2499,
                  "src": "9686:11:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2474,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "9686:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9685:13:24"
            },
            "scope": 2794,
            "src": "9644:191:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2528,
              "nodeType": "Block",
              "src": "9914:93:24",
              "statements": [
                {
                  "assignments": [
                    2509
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2509,
                      "name": "pos",
                      "nodeType": "VariableDeclaration",
                      "scope": 2529,
                      "src": "9924:8:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2508,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9924:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2513,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2511,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2501,
                        "src": "9938:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2510,
                      "name": "rank",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2334,
                      "src": "9933:4:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256) view returns (uint256)"
                      }
                    },
                    "id": 2512,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9933:11:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9924:20:24"
                },
                {
                  "assignments": [
                    2515
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2515,
                      "name": "num",
                      "nodeType": "VariableDeclaration",
                      "scope": 2529,
                      "src": "9954:8:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2514,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9954:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2518,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2516,
                      "name": "count",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2499,
                      "src": "9963:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 2517,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9963:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9954:16:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2525,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2523,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2521,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2519,
                              "name": "num",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2515,
                              "src": "9988:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2520,
                              "name": "pos",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2509,
                              "src": "9992:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "9988:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 2522,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9996:1:24",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "9988:9:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2524,
                          "name": "n",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2503,
                          "src": "9998:1:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9988:11:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 2526,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "9987:13:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 2507,
                  "id": 2527,
                  "nodeType": "Return",
                  "src": "9980:20:24"
                }
              ]
            },
            "documentation": null,
            "id": 2529,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "in_top_n",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2504,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2501,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2529,
                  "src": "9859:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2500,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "9859:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2503,
                  "name": "n",
                  "nodeType": "VariableDeclaration",
                  "scope": 2529,
                  "src": "9870:6:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2502,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "9870:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9858:19:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2507,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2506,
                  "name": "truth",
                  "nodeType": "VariableDeclaration",
                  "scope": 2529,
                  "src": "9903:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2505,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9903:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9902:12:24"
            },
            "scope": 2794,
            "src": "9841:166:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2570,
              "nodeType": "Block",
              "src": "10077:148:24",
              "statements": [
                {
                  "assignments": [
                    2537
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2537,
                      "name": "pos",
                      "nodeType": "VariableDeclaration",
                      "scope": 2571,
                      "src": "10087:8:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2536,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10087:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2541,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2539,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2531,
                        "src": "10101:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2538,
                      "name": "rank",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2334,
                      "src": "10096:4:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256) view returns (uint256)"
                      }
                    },
                    "id": 2540,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10096:11:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10087:20:24"
                },
                {
                  "assignments": [
                    2543
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2543,
                      "name": "same",
                      "nodeType": "VariableDeclaration",
                      "scope": 2571,
                      "src": "10117:9:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2542,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10117:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2548,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2544,
                        "name": "nodes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2793,
                        "src": "10127:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                          "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                        }
                      },
                      "id": 2546,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2545,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2531,
                        "src": "10133:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "10127:12:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage",
                        "typeString": "struct OrderStatisticTree.Node storage ref"
                      }
                    },
                    "id": 2547,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "dupes",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2788,
                    "src": "10127:18:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10117:28:24"
                },
                {
                  "assignments": [
                    2550
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2550,
                      "name": "num",
                      "nodeType": "VariableDeclaration",
                      "scope": 2571,
                      "src": "10155:8:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2549,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10155:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2553,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2551,
                      "name": "count",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2499,
                      "src": "10164:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 2552,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10164:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10155:16:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2568,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2565,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2556,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2554,
                              "name": "pos",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2537,
                              "src": "10189:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "313030",
                              "id": 2555,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10193:3:24",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_100_by_1",
                                "typeString": "int_const 100"
                              },
                              "value": "100"
                            },
                            "src": "10189:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2564,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2561,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2559,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 2557,
                                      "name": "same",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2543,
                                      "src": "10198:4:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "313030",
                                      "id": 2558,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "10203:3:24",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_100_by_1",
                                        "typeString": "int_const 100"
                                      },
                                      "value": "100"
                                    },
                                    "src": "10198:8:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "313030",
                                    "id": 2560,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10207:3:24",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_100_by_1",
                                      "typeString": "int_const 100"
                                    },
                                    "value": "100"
                                  },
                                  "src": "10198:12:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 2562,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "10197:14:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 2563,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10212:1:24",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "10197:16:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10189:24:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 2566,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "10188:26:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2567,
                      "name": "num",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2550,
                      "src": "10215:3:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10188:30:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2535,
                  "id": 2569,
                  "nodeType": "Return",
                  "src": "10181:37:24"
                }
              ]
            },
            "documentation": null,
            "id": 2571,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "percentile",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2532,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2531,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2571,
                  "src": "10033:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2530,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10033:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10032:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2535,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2534,
                  "name": "k",
                  "nodeType": "VariableDeclaration",
                  "scope": 2571,
                  "src": "10070:6:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2533,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10070:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10069:8:24"
            },
            "scope": 2794,
            "src": "10013:212:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2591,
              "nodeType": "Block",
              "src": "10301:69:24",
              "statements": [
                {
                  "assignments": [
                    2579
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2579,
                      "name": "n",
                      "nodeType": "VariableDeclaration",
                      "scope": 2592,
                      "src": "10311:6:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2578,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10311:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2582,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2580,
                      "name": "count",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2499,
                      "src": "10318:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 2581,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10318:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10311:14:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2588,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2586,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2584,
                            "name": "perc",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2573,
                            "src": "10352:4:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2585,
                            "name": "n",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2579,
                            "src": "10357:1:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10352:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "/",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "313030",
                          "id": 2587,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10359:3:24",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_100_by_1",
                            "typeString": "int_const 100"
                          },
                          "value": "100"
                        },
                        "src": "10352:10:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2583,
                      "name": "select_at",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2457,
                      "src": "10342:9:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256) view returns (uint256)"
                      }
                    },
                    "id": 2589,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10342:21:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2577,
                  "id": 2590,
                  "nodeType": "Return",
                  "src": "10335:28:24"
                }
              ]
            },
            "documentation": null,
            "id": 2592,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "at_percentile",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2574,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2573,
                  "name": "perc",
                  "nodeType": "VariableDeclaration",
                  "scope": 2592,
                  "src": "10254:9:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2572,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10254:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10253:11:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2577,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2576,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2592,
                  "src": "10290:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2575,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10290:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10289:12:24"
            },
            "scope": 2794,
            "src": "10231:139:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2633,
              "nodeType": "Block",
              "src": "10438:151:24",
              "statements": [
                {
                  "assignments": [
                    2600
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2600,
                      "name": "pos",
                      "nodeType": "VariableDeclaration",
                      "scope": 2634,
                      "src": "10448:8:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2599,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10448:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2604,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2602,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2594,
                        "src": "10462:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2601,
                      "name": "rank",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2334,
                      "src": "10457:4:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256) view returns (uint256)"
                      }
                    },
                    "id": 2603,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10457:11:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10448:20:24"
                },
                {
                  "assignments": [
                    2606
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2606,
                      "name": "same",
                      "nodeType": "VariableDeclaration",
                      "scope": 2634,
                      "src": "10478:9:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2605,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10478:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2611,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2607,
                        "name": "nodes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2793,
                        "src": "10488:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                          "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                        }
                      },
                      "id": 2609,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2608,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2594,
                        "src": "10494:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "10488:12:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage",
                        "typeString": "struct OrderStatisticTree.Node storage ref"
                      }
                    },
                    "id": 2610,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "dupes",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2788,
                    "src": "10488:18:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10478:28:24"
                },
                {
                  "assignments": [
                    2613
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2613,
                      "name": "num",
                      "nodeType": "VariableDeclaration",
                      "scope": 2634,
                      "src": "10516:8:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2612,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10516:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2616,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2614,
                      "name": "count",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2499,
                      "src": "10525:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 2615,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10525:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10516:16:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2631,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2628,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2619,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2617,
                              "name": "pos",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2600,
                              "src": "10550:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31303030",
                              "id": 2618,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10554:4:24",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1000_by_1",
                                "typeString": "int_const 1000"
                              },
                              "value": "1000"
                            },
                            "src": "10550:8:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2627,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2624,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2622,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 2620,
                                      "name": "same",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2606,
                                      "src": "10560:4:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31303030",
                                      "id": 2621,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "10565:4:24",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1000_by_1",
                                        "typeString": "int_const 1000"
                                      },
                                      "value": "1000"
                                    },
                                    "src": "10560:9:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31303030",
                                    "id": 2623,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10570:4:24",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1000_by_1",
                                      "typeString": "int_const 1000"
                                    },
                                    "value": "1000"
                                  },
                                  "src": "10560:14:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 2625,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "10559:16:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 2626,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10576:1:24",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "10559:18:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10550:27:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 2629,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "10549:29:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2630,
                      "name": "num",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2613,
                      "src": "10579:3:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10549:33:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2598,
                  "id": 2632,
                  "nodeType": "Return",
                  "src": "10542:40:24"
                }
              ]
            },
            "documentation": null,
            "id": 2634,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "permille",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2595,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2594,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2634,
                  "src": "10394:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2593,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10394:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10393:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2598,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2597,
                  "name": "k",
                  "nodeType": "VariableDeclaration",
                  "scope": 2634,
                  "src": "10431:6:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2596,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10431:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10430:8:24"
            },
            "scope": 2794,
            "src": "10376:213:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2654,
              "nodeType": "Block",
              "src": "10663:70:24",
              "statements": [
                {
                  "assignments": [
                    2642
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2642,
                      "name": "n",
                      "nodeType": "VariableDeclaration",
                      "scope": 2655,
                      "src": "10673:6:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2641,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10673:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2645,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2643,
                      "name": "count",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2499,
                      "src": "10680:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 2644,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10680:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10673:14:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2651,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2649,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2647,
                            "name": "perm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2636,
                            "src": "10714:4:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2648,
                            "name": "n",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2642,
                            "src": "10719:1:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10714:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "/",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31303030",
                          "id": 2650,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10721:4:24",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1000_by_1",
                            "typeString": "int_const 1000"
                          },
                          "value": "1000"
                        },
                        "src": "10714:11:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2646,
                      "name": "select_at",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2457,
                      "src": "10704:9:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256) view returns (uint256)"
                      }
                    },
                    "id": 2652,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10704:22:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2640,
                  "id": 2653,
                  "nodeType": "Return",
                  "src": "10697:29:24"
                }
              ]
            },
            "documentation": null,
            "id": 2655,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "at_permille",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2637,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2636,
                  "name": "perm",
                  "nodeType": "VariableDeclaration",
                  "scope": 2655,
                  "src": "10616:9:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2635,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10616:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10615:11:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2640,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2639,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2655,
                  "src": "10652:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2638,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10652:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10651:12:24"
            },
            "scope": 2794,
            "src": "10595:138:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2664,
              "nodeType": "Block",
              "src": "10793:41:24",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "3530",
                        "id": 2661,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10824:2:24",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_50_by_1",
                          "typeString": "int_const 50"
                        },
                        "value": "50"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_50_by_1",
                          "typeString": "int_const 50"
                        }
                      ],
                      "id": 2660,
                      "name": "at_percentile",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2592,
                      "src": "10810:13:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256) view returns (uint256)"
                      }
                    },
                    "id": 2662,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10810:17:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2659,
                  "id": 2663,
                  "nodeType": "Return",
                  "src": "10803:24:24"
                }
              ]
            },
            "documentation": null,
            "id": 2665,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "median",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2656,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10754:2:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2659,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2658,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2665,
                  "src": "10782:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2657,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10782:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10781:12:24"
            },
            "scope": 2794,
            "src": "10739:95:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2681,
              "nodeType": "Block",
              "src": "10913:51:24",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2679,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2672,
                      "name": "child",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2670,
                      "src": "10923:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2673,
                            "name": "nodes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2793,
                            "src": "10929:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                              "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                            }
                          },
                          "id": 2675,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2674,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2667,
                            "src": "10935:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10929:12:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage",
                            "typeString": "struct OrderStatisticTree.Node storage ref"
                          }
                        },
                        "id": 2676,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "children",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2778,
                        "src": "10929:21:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                          "typeString": "mapping(bool => uint256)"
                        }
                      },
                      "id": 2678,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 2677,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10951:5:24",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "10929:28:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10923:34:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2680,
                  "nodeType": "ExpressionStatement",
                  "src": "10923:34:24"
                }
              ]
            },
            "documentation": null,
            "id": 2682,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "node_left_child",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2668,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2667,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2682,
                  "src": "10865:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2666,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10865:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10864:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2671,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2670,
                  "name": "child",
                  "nodeType": "VariableDeclaration",
                  "scope": 2682,
                  "src": "10902:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2669,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10902:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10901:12:24"
            },
            "scope": 2794,
            "src": "10840:124:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2698,
              "nodeType": "Block",
              "src": "11044:50:24",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2696,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2689,
                      "name": "child",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2687,
                      "src": "11054:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2690,
                            "name": "nodes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2793,
                            "src": "11060:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                              "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                            }
                          },
                          "id": 2692,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2691,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2684,
                            "src": "11066:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11060:12:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage",
                            "typeString": "struct OrderStatisticTree.Node storage ref"
                          }
                        },
                        "id": 2693,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "children",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2778,
                        "src": "11060:21:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                          "typeString": "mapping(bool => uint256)"
                        }
                      },
                      "id": 2695,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 2694,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11082:4:24",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "11060:27:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11054:33:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2697,
                  "nodeType": "ExpressionStatement",
                  "src": "11054:33:24"
                }
              ]
            },
            "documentation": null,
            "id": 2699,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "node_right_child",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2685,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2684,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2699,
                  "src": "10996:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2683,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10996:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10995:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2688,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2687,
                  "name": "child",
                  "nodeType": "VariableDeclaration",
                  "scope": 2699,
                  "src": "11033:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2686,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11033:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11032:12:24"
            },
            "scope": 2794,
            "src": "10970:124:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2713,
              "nodeType": "Block",
              "src": "11170:43:24",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2711,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2706,
                      "name": "parent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2704,
                      "src": "11180:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2707,
                          "name": "nodes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2793,
                          "src": "11187:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                            "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                          }
                        },
                        "id": 2709,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2708,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2701,
                          "src": "11193:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "11187:12:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage",
                          "typeString": "struct OrderStatisticTree.Node storage ref"
                        }
                      },
                      "id": 2710,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "parent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2780,
                      "src": "11187:19:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11180:26:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2712,
                  "nodeType": "ExpressionStatement",
                  "src": "11180:26:24"
                }
              ]
            },
            "documentation": null,
            "id": 2714,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "node_parent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2702,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2701,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2714,
                  "src": "11121:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2700,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11121:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11120:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2705,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2704,
                  "name": "parent",
                  "nodeType": "VariableDeclaration",
                  "scope": 2714,
                  "src": "11158:11:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2703,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11158:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11157:13:24"
            },
            "scope": 2794,
            "src": "11100:113:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2728,
              "nodeType": "Block",
              "src": "11285:39:24",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2726,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2721,
                      "name": "side",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2719,
                      "src": "11295:4:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2722,
                          "name": "nodes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2793,
                          "src": "11300:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                            "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                          }
                        },
                        "id": 2724,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2723,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2716,
                          "src": "11306:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "11300:12:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage",
                          "typeString": "struct OrderStatisticTree.Node storage ref"
                        }
                      },
                      "id": 2725,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "side",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2782,
                      "src": "11300:17:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "11295:22:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2727,
                  "nodeType": "ExpressionStatement",
                  "src": "11295:22:24"
                }
              ]
            },
            "documentation": null,
            "id": 2729,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "node_side",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2717,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2716,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2729,
                  "src": "11238:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2715,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11238:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11237:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2720,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2719,
                  "name": "side",
                  "nodeType": "VariableDeclaration",
                  "scope": 2729,
                  "src": "11275:9:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2718,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "11275:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11274:11:24"
            },
            "scope": 2794,
            "src": "11219:105:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2743,
              "nodeType": "Block",
              "src": "11400:43:24",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2741,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2736,
                      "name": "height",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2734,
                      "src": "11410:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2737,
                          "name": "nodes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2793,
                          "src": "11417:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                            "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                          }
                        },
                        "id": 2739,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2738,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2731,
                          "src": "11423:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "11417:12:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage",
                          "typeString": "struct OrderStatisticTree.Node storage ref"
                        }
                      },
                      "id": 2740,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "height",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2784,
                      "src": "11417:19:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11410:26:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2742,
                  "nodeType": "ExpressionStatement",
                  "src": "11410:26:24"
                }
              ]
            },
            "documentation": null,
            "id": 2744,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "node_height",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2732,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2731,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2744,
                  "src": "11351:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2730,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11351:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11350:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2735,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2734,
                  "name": "height",
                  "nodeType": "VariableDeclaration",
                  "scope": 2744,
                  "src": "11388:11:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2733,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11388:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11387:13:24"
            },
            "scope": 2794,
            "src": "11330:113:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2758,
              "nodeType": "Block",
              "src": "11518:42:24",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2756,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2751,
                      "name": "result",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2749,
                      "src": "11528:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2752,
                          "name": "nodes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2793,
                          "src": "11535:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                            "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                          }
                        },
                        "id": 2754,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2753,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2746,
                          "src": "11541:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "11535:12:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage",
                          "typeString": "struct OrderStatisticTree.Node storage ref"
                        }
                      },
                      "id": 2755,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "count",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2786,
                      "src": "11535:18:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11528:25:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2757,
                  "nodeType": "ExpressionStatement",
                  "src": "11528:25:24"
                }
              ]
            },
            "documentation": null,
            "id": 2759,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "node_count",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2747,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2746,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2759,
                  "src": "11469:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2745,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11469:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11468:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2750,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2749,
                  "name": "result",
                  "nodeType": "VariableDeclaration",
                  "scope": 2759,
                  "src": "11506:11:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2748,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11506:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11505:13:24"
            },
            "scope": 2794,
            "src": "11449:111:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2773,
              "nodeType": "Block",
              "src": "11634:41:24",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2771,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2766,
                      "name": "dupes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2764,
                      "src": "11644:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2767,
                          "name": "nodes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2793,
                          "src": "11650:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                            "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                          }
                        },
                        "id": 2769,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2768,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2761,
                          "src": "11656:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "11650:12:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage",
                          "typeString": "struct OrderStatisticTree.Node storage ref"
                        }
                      },
                      "id": 2770,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "dupes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2788,
                      "src": "11650:18:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11644:24:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2772,
                  "nodeType": "ExpressionStatement",
                  "src": "11644:24:24"
                }
              ]
            },
            "documentation": null,
            "id": 2774,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "node_dupes",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2762,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2761,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2774,
                  "src": "11586:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2760,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11586:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11585:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2765,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2764,
                  "name": "dupes",
                  "nodeType": "VariableDeclaration",
                  "scope": 2774,
                  "src": "11623:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2763,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11623:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11622:12:24"
            },
            "scope": 2794,
            "src": "11566:109:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "canonicalName": "OrderStatisticTree.Node",
            "id": 2789,
            "members": [
              {
                "constant": false,
                "id": 2778,
                "name": "children",
                "nodeType": "VariableDeclaration",
                "scope": 2789,
                "src": "11703:31:24",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                  "typeString": "mapping(bool => uint256)"
                },
                "typeName": {
                  "id": 2777,
                  "keyType": {
                    "id": 2775,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "11712:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "11703:22:24",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                    "typeString": "mapping(bool => uint256)"
                  },
                  "valueType": {
                    "id": 2776,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11720:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2780,
                "name": "parent",
                "nodeType": "VariableDeclaration",
                "scope": 2789,
                "src": "11744:11:24",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2779,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "11744:4:24",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2782,
                "name": "side",
                "nodeType": "VariableDeclaration",
                "scope": 2789,
                "src": "11765:9:24",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 2781,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "11765:4:24",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2784,
                "name": "height",
                "nodeType": "VariableDeclaration",
                "scope": 2789,
                "src": "11784:11:24",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2783,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "11784:4:24",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2786,
                "name": "count",
                "nodeType": "VariableDeclaration",
                "scope": 2789,
                "src": "11805:10:24",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2785,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "11805:4:24",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2788,
                "name": "dupes",
                "nodeType": "VariableDeclaration",
                "scope": 2789,
                "src": "11825:10:24",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2787,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "11825:4:24",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Node",
            "nodeType": "StructDefinition",
            "scope": 2794,
            "src": "11681:161:24",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2793,
            "name": "nodes",
            "nodeType": "VariableDeclaration",
            "scope": 2794,
            "src": "11848:27:24",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
              "typeString": "mapping(uint256 => struct OrderStatisticTree.Node)"
            },
            "typeName": {
              "id": 2792,
              "keyType": {
                "id": 2790,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "11856:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "11848:21:24",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                "typeString": "mapping(uint256 => struct OrderStatisticTree.Node)"
              },
              "valueType": {
                "contractScope": null,
                "id": 2791,
                "name": "Node",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 2789,
                "src": "11864:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                  "typeString": "struct OrderStatisticTree.Node"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          }
        ],
        "scope": 2795,
        "src": "718:11160:24"
      }
    ],
    "src": "0:11878:24"
  },
  "legacyAST": {
    "absolutePath": "/Users/mfcalvanese/dev/eth/tidbit-eth/contracts/Utils/OrderStatisticTree.sol",
    "exportedSymbols": {
      "OrderStatisticTree": [
        2794
      ]
    },
    "id": 2795,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1147,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:24"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2794,
        "linearizedBaseContracts": [
          2794
        ],
        "name": "OrderStatisticTree",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 1183,
              "nodeType": "Block",
              "src": "795:132:24",
              "statements": [
                {
                  "assignments": [
                    1153
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1153,
                      "name": "n",
                      "nodeType": "VariableDeclaration",
                      "scope": 1184,
                      "src": "805:14:24",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1152,
                        "name": "Node",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2789,
                        "src": "805:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1157,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1154,
                      "name": "nodes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2793,
                      "src": "820:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                      }
                    },
                    "id": 1156,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1155,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1149,
                      "src": "826:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "820:12:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                      "typeString": "struct OrderStatisticTree.Node storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "805:27:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1181,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1158,
                        "name": "n",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1153,
                        "src": "842:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1160,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "count",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2786,
                      "src": "842:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1180,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1177,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1169,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 1161,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "850:1:24",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1162,
                                "name": "nodes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2793,
                                "src": "852:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                                  "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                                }
                              },
                              "id": 1167,
                              "indexExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1163,
                                    "name": "n",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1153,
                                    "src": "858:1:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                      "typeString": "struct OrderStatisticTree.Node storage pointer"
                                    }
                                  },
                                  "id": 1164,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "children",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2778,
                                  "src": "858:10:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                                    "typeString": "mapping(bool => uint256)"
                                  }
                                },
                                "id": 1166,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "66616c7365",
                                  "id": 1165,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "869:5:24",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "false"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "858:17:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "852:24:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$2789_storage",
                                "typeString": "struct OrderStatisticTree.Node storage ref"
                              }
                            },
                            "id": 1168,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "count",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2786,
                            "src": "852:30:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "850:32:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1170,
                              "name": "nodes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2793,
                              "src": "883:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                                "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                              }
                            },
                            "id": 1175,
                            "indexExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1171,
                                  "name": "n",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1153,
                                  "src": "889:1:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                    "typeString": "struct OrderStatisticTree.Node storage pointer"
                                  }
                                },
                                "id": 1172,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "children",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2778,
                                "src": "889:10:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                                  "typeString": "mapping(bool => uint256)"
                                }
                              },
                              "id": 1174,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "74727565",
                                "id": 1173,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "900:4:24",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "889:16:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "883:23:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Node_$2789_storage",
                              "typeString": "struct OrderStatisticTree.Node storage ref"
                            }
                          },
                          "id": 1176,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "count",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2786,
                          "src": "883:29:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "850:62:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1178,
                          "name": "n",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1153,
                          "src": "913:1:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                            "typeString": "struct OrderStatisticTree.Node storage pointer"
                          }
                        },
                        "id": 1179,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "dupes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2788,
                        "src": "913:7:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "850:70:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "842:78:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1182,
                  "nodeType": "ExpressionStatement",
                  "src": "842:78:24"
                }
              ]
            },
            "documentation": null,
            "id": 1184,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "update_count",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1150,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1149,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1184,
                  "src": "775:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1148,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "775:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "774:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 1151,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "795:0:24"
            },
            "scope": 2794,
            "src": "753:174:24",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1212,
              "nodeType": "Block",
              "src": "976:161:24",
              "statements": [
                {
                  "assignments": [
                    1190
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1190,
                      "name": "parent",
                      "nodeType": "VariableDeclaration",
                      "scope": 1213,
                      "src": "986:11:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1189,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "986:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1195,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1191,
                        "name": "nodes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2793,
                        "src": "998:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                          "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                        }
                      },
                      "id": 1193,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1192,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1186,
                        "src": "1004:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "998:12:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage",
                        "typeString": "struct OrderStatisticTree.Node storage ref"
                      }
                    },
                    "id": 1194,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "parent",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2780,
                    "src": "998:19:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "986:31:24"
                },
                {
                  "body": {
                    "id": 1210,
                    "nodeType": "Block",
                    "src": "1045:86:24",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1200,
                              "name": "parent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1190,
                              "src": "1072:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1199,
                            "name": "update_count",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1184,
                            "src": "1059:12:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 1201,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1059:20:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1202,
                        "nodeType": "ExpressionStatement",
                        "src": "1059:20:24"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1208,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1203,
                            "name": "parent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1190,
                            "src": "1093:6:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1204,
                                "name": "nodes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2793,
                                "src": "1100:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                                  "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                                }
                              },
                              "id": 1206,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1205,
                                "name": "parent",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1190,
                                "src": "1106:6:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1100:13:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$2789_storage",
                                "typeString": "struct OrderStatisticTree.Node storage ref"
                              }
                            },
                            "id": 1207,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "parent",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2780,
                            "src": "1100:20:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1093:27:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1209,
                        "nodeType": "ExpressionStatement",
                        "src": "1093:27:24"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1198,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1196,
                      "name": "parent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1190,
                      "src": "1034:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1197,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1042:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1034:9:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1211,
                  "nodeType": "WhileStatement",
                  "src": "1027:104:24"
                }
              ]
            },
            "documentation": null,
            "id": 1213,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "update_counts",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1187,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1186,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1213,
                  "src": "956:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1185,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "956:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "955:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 1188,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "976:0:24"
            },
            "scope": 2794,
            "src": "933:204:24",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1264,
              "nodeType": "Block",
              "src": "1186:284:24",
              "statements": [
                {
                  "assignments": [
                    1219
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1219,
                      "name": "n",
                      "nodeType": "VariableDeclaration",
                      "scope": 1265,
                      "src": "1196:14:24",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1218,
                        "name": "Node",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2789,
                        "src": "1196:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1223,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1220,
                      "name": "nodes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2793,
                      "src": "1211:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                      }
                    },
                    "id": 1222,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1221,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1215,
                      "src": "1217:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1211:12:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                      "typeString": "struct OrderStatisticTree.Node storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1196:27:24"
                },
                {
                  "assignments": [
                    1225
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1225,
                      "name": "height_left",
                      "nodeType": "VariableDeclaration",
                      "scope": 1265,
                      "src": "1233:16:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1224,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1233:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1233,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1226,
                        "name": "nodes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2793,
                        "src": "1250:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                          "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                        }
                      },
                      "id": 1231,
                      "indexExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1227,
                            "name": "n",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1219,
                            "src": "1256:1:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                              "typeString": "struct OrderStatisticTree.Node storage pointer"
                            }
                          },
                          "id": 1228,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "children",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2778,
                          "src": "1256:10:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                            "typeString": "mapping(bool => uint256)"
                          }
                        },
                        "id": 1230,
                        "indexExpression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 1229,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1267:5:24",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1256:17:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1250:24:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage",
                        "typeString": "struct OrderStatisticTree.Node storage ref"
                      }
                    },
                    "id": 1232,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "height",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2784,
                    "src": "1250:31:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1233:48:24"
                },
                {
                  "assignments": [
                    1235
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1235,
                      "name": "height_right",
                      "nodeType": "VariableDeclaration",
                      "scope": 1265,
                      "src": "1291:17:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1234,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1291:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1243,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1236,
                        "name": "nodes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2793,
                        "src": "1309:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                          "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                        }
                      },
                      "id": 1241,
                      "indexExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1237,
                            "name": "n",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1219,
                            "src": "1315:1:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                              "typeString": "struct OrderStatisticTree.Node storage pointer"
                            }
                          },
                          "id": 1238,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "children",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2778,
                          "src": "1315:10:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                            "typeString": "mapping(bool => uint256)"
                          }
                        },
                        "id": 1240,
                        "indexExpression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 1239,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1326:4:24",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1315:16:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1309:23:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage",
                        "typeString": "struct OrderStatisticTree.Node storage ref"
                      }
                    },
                    "id": 1242,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "height",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2784,
                    "src": "1309:30:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1291:48:24"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1246,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1244,
                      "name": "height_left",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1225,
                      "src": "1353:11:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 1245,
                      "name": "height_right",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1235,
                      "src": "1365:12:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1353:24:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1261,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1255,
                          "name": "n",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1219,
                          "src": "1440:1:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                            "typeString": "struct OrderStatisticTree.Node storage pointer"
                          }
                        },
                        "id": 1257,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "memberName": "height",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2784,
                        "src": "1440:8:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1260,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1258,
                          "name": "height_right",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1235,
                          "src": "1449:12:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 1259,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1462:1:24",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "1449:14:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "1440:23:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1262,
                    "nodeType": "ExpressionStatement",
                    "src": "1440:23:24"
                  },
                  "id": 1263,
                  "nodeType": "IfStatement",
                  "src": "1349:114:24",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1253,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1247,
                          "name": "n",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1219,
                          "src": "1391:1:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                            "typeString": "struct OrderStatisticTree.Node storage pointer"
                          }
                        },
                        "id": 1249,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "memberName": "height",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2784,
                        "src": "1391:8:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1252,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1250,
                          "name": "height_left",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1225,
                          "src": "1400:11:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 1251,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1412:1:24",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "1400:13:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "1391:22:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1254,
                    "nodeType": "ExpressionStatement",
                    "src": "1391:22:24"
                  }
                }
              ]
            },
            "documentation": null,
            "id": 1265,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "update_height",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1216,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1215,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1265,
                  "src": "1166:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1214,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1166:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1165:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 1217,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1186:0:24"
            },
            "scope": 2794,
            "src": "1143:327:24",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1298,
              "nodeType": "Block",
              "src": "1546:133:24",
              "statements": [
                {
                  "assignments": [
                    1273
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1273,
                      "name": "n",
                      "nodeType": "VariableDeclaration",
                      "scope": 1299,
                      "src": "1556:14:24",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1272,
                        "name": "Node",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2789,
                        "src": "1556:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1277,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1274,
                      "name": "nodes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2793,
                      "src": "1571:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                      }
                    },
                    "id": 1276,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1275,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1267,
                      "src": "1577:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1571:12:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                      "typeString": "struct OrderStatisticTree.Node storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1556:27:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "id": 1296,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1279,
                              "name": "nodes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2793,
                              "src": "1604:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                                "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                              }
                            },
                            "id": 1284,
                            "indexExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1280,
                                  "name": "n",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1273,
                                  "src": "1610:1:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                    "typeString": "struct OrderStatisticTree.Node storage pointer"
                                  }
                                },
                                "id": 1281,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "children",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2778,
                                "src": "1610:10:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                                  "typeString": "mapping(bool => uint256)"
                                }
                              },
                              "id": 1283,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 1282,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1621:5:24",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1610:17:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1604:24:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Node_$2789_storage",
                              "typeString": "struct OrderStatisticTree.Node storage ref"
                            }
                          },
                          "id": 1285,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "height",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2784,
                          "src": "1604:31:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1278,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1600:3:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_int256_$",
                          "typeString": "type(int256)"
                        },
                        "typeName": "int"
                      },
                      "id": 1286,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1600:36:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1288,
                              "name": "nodes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2793,
                              "src": "1641:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                                "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                              }
                            },
                            "id": 1293,
                            "indexExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1289,
                                  "name": "n",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1273,
                                  "src": "1647:1:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                    "typeString": "struct OrderStatisticTree.Node storage pointer"
                                  }
                                },
                                "id": 1290,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "children",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2778,
                                "src": "1647:10:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                                  "typeString": "mapping(bool => uint256)"
                                }
                              },
                              "id": 1292,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "74727565",
                                "id": 1291,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1658:4:24",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1647:16:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1641:23:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Node_$2789_storage",
                              "typeString": "struct OrderStatisticTree.Node storage ref"
                            }
                          },
                          "id": 1294,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "height",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2784,
                          "src": "1641:30:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1287,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1637:3:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_int256_$",
                          "typeString": "type(int256)"
                        },
                        "typeName": "int"
                      },
                      "id": 1295,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1637:35:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "1600:72:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 1271,
                  "id": 1297,
                  "nodeType": "Return",
                  "src": "1593:79:24"
                }
              ]
            },
            "documentation": null,
            "id": 1299,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "balance_factor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1268,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1267,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1299,
                  "src": "1500:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1266,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1500:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1499:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 1271,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1270,
                  "name": "bf",
                  "nodeType": "VariableDeclaration",
                  "scope": 1299,
                  "src": "1538:6:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 1269,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "1538:3:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1537:8:24"
            },
            "scope": 2794,
            "src": "1476:203:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1435,
              "nodeType": "Block",
              "src": "1730:725:24",
              "statements": [
                {
                  "assignments": [
                    1307
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1307,
                      "name": "other_dir",
                      "nodeType": "VariableDeclaration",
                      "scope": 1436,
                      "src": "1740:14:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1306,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1740:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1310,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 1309,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "1755:4:24",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 1308,
                      "name": "dir",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1303,
                      "src": "1756:3:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1740:19:24"
                },
                {
                  "assignments": [
                    1312
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1312,
                      "name": "n",
                      "nodeType": "VariableDeclaration",
                      "scope": 1436,
                      "src": "1769:14:24",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1311,
                        "name": "Node",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2789,
                        "src": "1769:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1316,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1313,
                      "name": "nodes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2793,
                      "src": "1784:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                      }
                    },
                    "id": 1315,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1314,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1301,
                      "src": "1790:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1784:12:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                      "typeString": "struct OrderStatisticTree.Node storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1769:27:24"
                },
                {
                  "assignments": [
                    1318
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1318,
                      "name": "side",
                      "nodeType": "VariableDeclaration",
                      "scope": 1436,
                      "src": "1807:9:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1317,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1807:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1321,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 1319,
                      "name": "n",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1312,
                      "src": "1817:1:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node storage pointer"
                      }
                    },
                    "id": 1320,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "side",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2782,
                    "src": "1817:6:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1807:16:24"
                },
                {
                  "assignments": [
                    1323
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1323,
                      "name": "parent",
                      "nodeType": "VariableDeclaration",
                      "scope": 1436,
                      "src": "1833:11:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1322,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1833:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1326,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 1324,
                      "name": "n",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1312,
                      "src": "1845:1:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node storage pointer"
                      }
                    },
                    "id": 1325,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "parent",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2780,
                    "src": "1845:8:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1833:20:24"
                },
                {
                  "assignments": [
                    1328
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1328,
                      "name": "value_new",
                      "nodeType": "VariableDeclaration",
                      "scope": 1436,
                      "src": "1863:14:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1327,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1863:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1333,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1329,
                        "name": "n",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1312,
                        "src": "1878:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1330,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "children",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2778,
                      "src": "1878:10:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                        "typeString": "mapping(bool => uint256)"
                      }
                    },
                    "id": 1332,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1331,
                      "name": "other_dir",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1307,
                      "src": "1889:9:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1878:21:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1863:36:24"
                },
                {
                  "assignments": [
                    1335
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1335,
                      "name": "n_new",
                      "nodeType": "VariableDeclaration",
                      "scope": 1436,
                      "src": "1909:18:24",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1334,
                        "name": "Node",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2789,
                        "src": "1909:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1339,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1336,
                      "name": "nodes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2793,
                      "src": "1928:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                      }
                    },
                    "id": 1338,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1337,
                      "name": "value_new",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1328,
                      "src": "1934:9:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1928:16:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                      "typeString": "struct OrderStatisticTree.Node storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1909:35:24"
                },
                {
                  "assignments": [
                    1341
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1341,
                      "name": "orphan",
                      "nodeType": "VariableDeclaration",
                      "scope": 1436,
                      "src": "1954:11:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1340,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1954:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1346,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1342,
                        "name": "n_new",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1335,
                        "src": "1966:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1343,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "children",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2778,
                      "src": "1966:14:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                        "typeString": "mapping(bool => uint256)"
                      }
                    },
                    "id": 1345,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1344,
                      "name": "dir",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1303,
                      "src": "1981:3:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1966:19:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1954:31:24"
                },
                {
                  "assignments": [
                    1348
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1348,
                      "name": "p",
                      "nodeType": "VariableDeclaration",
                      "scope": 1436,
                      "src": "1995:14:24",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1347,
                        "name": "Node",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2789,
                        "src": "1995:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1352,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1349,
                      "name": "nodes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2793,
                      "src": "2010:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                      }
                    },
                    "id": 1351,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1350,
                      "name": "parent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1323,
                      "src": "2016:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2010:13:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                      "typeString": "struct OrderStatisticTree.Node storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1995:28:24"
                },
                {
                  "assignments": [
                    1354
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1354,
                      "name": "o",
                      "nodeType": "VariableDeclaration",
                      "scope": 1436,
                      "src": "2033:14:24",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1353,
                        "name": "Node",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2789,
                        "src": "2033:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1358,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1355,
                      "name": "nodes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2793,
                      "src": "2048:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                      }
                    },
                    "id": 1357,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1356,
                      "name": "orphan",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1341,
                      "src": "2054:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2048:13:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                      "typeString": "struct OrderStatisticTree.Node storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2033:28:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1365,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1359,
                          "name": "p",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1348,
                          "src": "2071:1:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                            "typeString": "struct OrderStatisticTree.Node storage pointer"
                          }
                        },
                        "id": 1362,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "children",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2778,
                        "src": "2071:10:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                          "typeString": "mapping(bool => uint256)"
                        }
                      },
                      "id": 1363,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1361,
                        "name": "side",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1318,
                        "src": "2082:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2071:16:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1364,
                      "name": "value_new",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1328,
                      "src": "2088:9:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2071:26:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1366,
                  "nodeType": "ExpressionStatement",
                  "src": "2071:26:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1371,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1367,
                        "name": "n_new",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1335,
                        "src": "2107:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1369,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "side",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2782,
                      "src": "2107:10:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1370,
                      "name": "side",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1318,
                      "src": "2118:4:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "2107:15:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1372,
                  "nodeType": "ExpressionStatement",
                  "src": "2107:15:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1377,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1373,
                        "name": "n_new",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1335,
                        "src": "2132:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1375,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "parent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2780,
                      "src": "2132:12:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1376,
                      "name": "parent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1323,
                      "src": "2145:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2132:19:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1378,
                  "nodeType": "ExpressionStatement",
                  "src": "2132:19:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1385,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1379,
                          "name": "n_new",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1335,
                          "src": "2161:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                            "typeString": "struct OrderStatisticTree.Node storage pointer"
                          }
                        },
                        "id": 1382,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "children",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2778,
                        "src": "2161:14:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                          "typeString": "mapping(bool => uint256)"
                        }
                      },
                      "id": 1383,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1381,
                        "name": "dir",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1303,
                        "src": "2176:3:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2161:19:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1384,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1301,
                      "src": "2181:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2161:25:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1386,
                  "nodeType": "ExpressionStatement",
                  "src": "2161:25:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1391,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1387,
                        "name": "n",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1312,
                        "src": "2196:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1389,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "parent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2780,
                      "src": "2196:8:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1390,
                      "name": "value_new",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1328,
                      "src": "2205:9:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2196:18:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1392,
                  "nodeType": "ExpressionStatement",
                  "src": "2196:18:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1397,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1393,
                        "name": "n",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1312,
                        "src": "2224:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1395,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "side",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2782,
                      "src": "2224:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1396,
                      "name": "dir",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1303,
                      "src": "2231:3:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "2224:10:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1398,
                  "nodeType": "ExpressionStatement",
                  "src": "2224:10:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1405,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1399,
                          "name": "n",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1312,
                          "src": "2244:1:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                            "typeString": "struct OrderStatisticTree.Node storage pointer"
                          }
                        },
                        "id": 1402,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "children",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2778,
                        "src": "2244:10:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                          "typeString": "mapping(bool => uint256)"
                        }
                      },
                      "id": 1403,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1401,
                        "name": "other_dir",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1307,
                        "src": "2255:9:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2244:21:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1404,
                      "name": "orphan",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1341,
                      "src": "2266:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2244:28:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1406,
                  "nodeType": "ExpressionStatement",
                  "src": "2244:28:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1411,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1407,
                        "name": "o",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1354,
                        "src": "2282:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1409,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "parent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2780,
                      "src": "2282:8:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1410,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1301,
                      "src": "2291:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2282:14:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1412,
                  "nodeType": "ExpressionStatement",
                  "src": "2282:14:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1417,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1413,
                        "name": "o",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1354,
                        "src": "2306:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1415,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "side",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2782,
                      "src": "2306:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1416,
                      "name": "other_dir",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1307,
                      "src": "2313:9:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "2306:16:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1418,
                  "nodeType": "ExpressionStatement",
                  "src": "2306:16:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1420,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1301,
                        "src": "2346:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1419,
                      "name": "update_height",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1265,
                      "src": "2332:13:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 1421,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2332:20:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1422,
                  "nodeType": "ExpressionStatement",
                  "src": "2332:20:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1424,
                        "name": "value_new",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1328,
                        "src": "2376:9:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1423,
                      "name": "update_height",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1265,
                      "src": "2362:13:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 1425,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2362:24:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1426,
                  "nodeType": "ExpressionStatement",
                  "src": "2362:24:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1428,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1301,
                        "src": "2409:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1427,
                      "name": "update_count",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1184,
                      "src": "2396:12:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 1429,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2396:19:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1430,
                  "nodeType": "ExpressionStatement",
                  "src": "2396:19:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1432,
                        "name": "value_new",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1328,
                        "src": "2438:9:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1431,
                      "name": "update_count",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1184,
                      "src": "2425:12:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 1433,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2425:23:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1434,
                  "nodeType": "ExpressionStatement",
                  "src": "2425:23:24"
                }
              ]
            },
            "documentation": null,
            "id": 1436,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "rotate",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1304,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1301,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1436,
                  "src": "1701:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1300,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1701:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1303,
                  "name": "dir",
                  "nodeType": "VariableDeclaration",
                  "scope": 1436,
                  "src": "1712:8:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1302,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1712:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1700:21:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 1305,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1730:0:24"
            },
            "scope": 2794,
            "src": "1685:770:24",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1522,
              "nodeType": "Block",
              "src": "2509:596:24",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1442,
                        "name": "n_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1438,
                        "src": "2533:7:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1441,
                      "name": "update_height",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1265,
                      "src": "2519:13:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 1443,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2519:22:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1444,
                  "nodeType": "ExpressionStatement",
                  "src": "2519:22:24"
                },
                {
                  "assignments": [
                    1446
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1446,
                      "name": "n",
                      "nodeType": "VariableDeclaration",
                      "scope": 1523,
                      "src": "2551:14:24",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1445,
                        "name": "Node",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2789,
                        "src": "2551:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1450,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1447,
                      "name": "nodes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2793,
                      "src": "2566:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                      }
                    },
                    "id": 1449,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1448,
                      "name": "n_value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1438,
                      "src": "2572:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2566:14:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                      "typeString": "struct OrderStatisticTree.Node storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2551:29:24"
                },
                {
                  "assignments": [
                    1452
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1452,
                      "name": "p_value",
                      "nodeType": "VariableDeclaration",
                      "scope": 1523,
                      "src": "2590:12:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1451,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2590:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1455,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 1453,
                      "name": "n",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1446,
                      "src": "2603:1:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node storage pointer"
                      }
                    },
                    "id": 1454,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "parent",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2780,
                    "src": "2603:8:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2590:21:24"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1458,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1456,
                      "name": "p_value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1452,
                      "src": "2625:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1457,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2634:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2625:10:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1521,
                  "nodeType": "IfStatement",
                  "src": "2621:478:24",
                  "trueBody": {
                    "id": 1520,
                    "nodeType": "Block",
                    "src": "2637:462:24",
                    "statements": [
                      {
                        "assignments": [
                          1460
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1460,
                            "name": "p_bf",
                            "nodeType": "VariableDeclaration",
                            "scope": 1523,
                            "src": "2651:8:24",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 1459,
                              "name": "int",
                              "nodeType": "ElementaryTypeName",
                              "src": "2651:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1464,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1462,
                              "name": "p_value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1452,
                              "src": "2675:7:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1461,
                            "name": "balance_factor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1299,
                            "src": "2660:14:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_int256_$",
                              "typeString": "function (uint256) view returns (int256)"
                            }
                          },
                          "id": 1463,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2660:23:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2651:32:24"
                      },
                      {
                        "assignments": [
                          1466
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1466,
                            "name": "side",
                            "nodeType": "VariableDeclaration",
                            "scope": 1523,
                            "src": "2697:9:24",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 1465,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "2697:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1469,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1467,
                            "name": "n",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1446,
                            "src": "2707:1:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                              "typeString": "struct OrderStatisticTree.Node storage pointer"
                            }
                          },
                          "id": 1468,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "side",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2782,
                          "src": "2707:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2697:16:24"
                      },
                      {
                        "assignments": [],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1471,
                            "name": "sign",
                            "nodeType": "VariableDeclaration",
                            "scope": 1523,
                            "src": "2727:8:24",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 1470,
                              "name": "int",
                              "nodeType": "ElementaryTypeName",
                              "src": "2727:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1472,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2727:8:24"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 1473,
                          "name": "side",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1466,
                          "src": "2753:4:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 1481,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 1479,
                              "name": "sign",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1471,
                              "src": "2817:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 1480,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2822:1:24",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "2817:6:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "id": 1482,
                          "nodeType": "ExpressionStatement",
                          "src": "2817:6:24"
                        },
                        "id": 1483,
                        "nodeType": "IfStatement",
                        "src": "2749:74:24",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 1477,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 1474,
                              "name": "sign",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1471,
                              "src": "2775:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "id": 1476,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "-",
                              "prefix": true,
                              "src": "2780:2:24",
                              "subExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 1475,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2781:1:24",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_-1_by_1",
                                "typeString": "int_const -1"
                              }
                            },
                            "src": "2775:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "id": 1478,
                          "nodeType": "ExpressionStatement",
                          "src": "2775:7:24"
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 1488,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1484,
                            "name": "p_bf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1460,
                            "src": "2841:4:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 1487,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1485,
                              "name": "sign",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1471,
                              "src": "2849:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 1486,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2854:1:24",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "2849:6:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "2841:14:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 1513,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1511,
                              "name": "p_bf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1460,
                              "src": "3035:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1512,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3043:1:24",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "3035:9:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": null,
                          "id": 1518,
                          "nodeType": "IfStatement",
                          "src": "3031:57:24",
                          "trueBody": {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1515,
                                  "name": "p_value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1452,
                                  "src": "3080:7:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1514,
                                "name": "rebalance_insert",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1523,
                                "src": "3063:16:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256)"
                                }
                              },
                              "id": 1516,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3063:25:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 1517,
                            "nodeType": "ExpressionStatement",
                            "src": "3063:25:24"
                          }
                        },
                        "id": 1519,
                        "nodeType": "IfStatement",
                        "src": "2837:251:24",
                        "trueBody": {
                          "id": 1510,
                          "nodeType": "Block",
                          "src": "2857:156:24",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 1497,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1490,
                                      "name": "n_value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1438,
                                      "src": "2894:7:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 1489,
                                    "name": "balance_factor",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1299,
                                    "src": "2879:14:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_int256_$",
                                      "typeString": "function (uint256) view returns (int256)"
                                    }
                                  },
                                  "id": 1491,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2879:23:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 1495,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 1493,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "-",
                                        "prefix": true,
                                        "src": "2907:2:24",
                                        "subExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 1492,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "2908:1:24",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_-1_by_1",
                                          "typeString": "int_const -1"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 1494,
                                        "name": "sign",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1471,
                                        "src": "2912:4:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "2907:9:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "id": 1496,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "2906:11:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "src": "2879:38:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 1503,
                              "nodeType": "IfStatement",
                              "src": "2875:84:24",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1499,
                                      "name": "n_value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1438,
                                      "src": "2946:7:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 1500,
                                      "name": "side",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1466,
                                      "src": "2954:4:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "id": 1498,
                                    "name": "rotate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1436,
                                    "src": "2939:6:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bool_$returns$__$",
                                      "typeString": "function (uint256,bool)"
                                    }
                                  },
                                  "id": 1501,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2939:20:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 1502,
                                "nodeType": "ExpressionStatement",
                                "src": "2939:20:24"
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1505,
                                    "name": "p_value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1452,
                                    "src": "2984:7:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1507,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "!",
                                    "prefix": true,
                                    "src": "2992:5:24",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "id": 1506,
                                      "name": "side",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1466,
                                      "src": "2993:4:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 1504,
                                  "name": "rotate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1436,
                                  "src": "2977:6:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bool_$returns$__$",
                                    "typeString": "function (uint256,bool)"
                                  }
                                },
                                "id": 1508,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2977:21:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1509,
                              "nodeType": "ExpressionStatement",
                              "src": "2977:21:24"
                            }
                          ]
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 1523,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "rebalance_insert",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1439,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1438,
                  "name": "n_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1523,
                  "src": "2487:12:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1437,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2487:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2486:14:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 1440,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2509:0:24"
            },
            "scope": 2794,
            "src": "2461:644:24",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1648,
              "nodeType": "Block",
              "src": "3168:868:24",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1532,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1530,
                      "name": "p_value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1525,
                      "src": "3182:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1531,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3191:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3182:10:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1647,
                  "nodeType": "IfStatement",
                  "src": "3178:852:24",
                  "trueBody": {
                    "id": 1646,
                    "nodeType": "Block",
                    "src": "3194:836:24",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1534,
                              "name": "p_value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1525,
                              "src": "3222:7:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1533,
                            "name": "update_height",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1265,
                            "src": "3208:13:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 1535,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3208:22:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1536,
                        "nodeType": "ExpressionStatement",
                        "src": "3208:22:24"
                      },
                      {
                        "assignments": [
                          1538
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1538,
                            "name": "p_bf",
                            "nodeType": "VariableDeclaration",
                            "scope": 1649,
                            "src": "3244:8:24",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 1537,
                              "name": "int",
                              "nodeType": "ElementaryTypeName",
                              "src": "3244:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1542,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1540,
                              "name": "p_value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1525,
                              "src": "3268:7:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1539,
                            "name": "balance_factor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1299,
                            "src": "3253:14:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_int256_$",
                              "typeString": "function (uint256) view returns (int256)"
                            }
                          },
                          "id": 1541,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3253:23:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3244:32:24"
                      },
                      {
                        "assignments": [],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1544,
                            "name": "sign",
                            "nodeType": "VariableDeclaration",
                            "scope": 1649,
                            "src": "3290:8:24",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 1543,
                              "name": "int",
                              "nodeType": "ElementaryTypeName",
                              "src": "3290:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1545,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3290:8:24"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 1546,
                          "name": "side",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1527,
                          "src": "3316:4:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 1554,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 1551,
                              "name": "sign",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1544,
                              "src": "3379:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "id": 1553,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "-",
                              "prefix": true,
                              "src": "3384:2:24",
                              "subExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 1552,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3385:1:24",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_-1_by_1",
                                "typeString": "int_const -1"
                              }
                            },
                            "src": "3379:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "id": 1555,
                          "nodeType": "ExpressionStatement",
                          "src": "3379:7:24"
                        },
                        "id": 1556,
                        "nodeType": "IfStatement",
                        "src": "3312:74:24",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 1549,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 1547,
                              "name": "sign",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1544,
                              "src": "3338:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 1548,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3343:1:24",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "3338:6:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "id": 1550,
                          "nodeType": "ExpressionStatement",
                          "src": "3338:6:24"
                        }
                      },
                      {
                        "assignments": [
                          1558
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1558,
                            "name": "bf",
                            "nodeType": "VariableDeclaration",
                            "scope": 1649,
                            "src": "3400:6:24",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 1557,
                              "name": "int",
                              "nodeType": "ElementaryTypeName",
                              "src": "3400:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1562,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1560,
                              "name": "p_value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1525,
                              "src": "3422:7:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1559,
                            "name": "balance_factor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1299,
                            "src": "3407:14:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_int256_$",
                              "typeString": "function (uint256) view returns (int256)"
                            }
                          },
                          "id": 1561,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3407:23:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3400:30:24"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 1568,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1563,
                            "name": "bf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1558,
                            "src": "3448:2:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 1566,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "32",
                                  "id": 1564,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3453:1:24",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 1565,
                                  "name": "sign",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1544,
                                  "src": "3455:4:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "src": "3453:6:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "id": 1567,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "3452:8:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "3448:12:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 1629,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1627,
                              "name": "p_bf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1538,
                              "src": "3907:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1628,
                              "name": "sign",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1544,
                              "src": "3915:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "src": "3907:12:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": null,
                          "id": 1644,
                          "nodeType": "IfStatement",
                          "src": "3903:117:24",
                          "trueBody": {
                            "id": 1643,
                            "nodeType": "Block",
                            "src": "3920:100:24",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1634,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 1630,
                                    "name": "p",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1570,
                                    "src": "3938:1:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                      "typeString": "struct OrderStatisticTree.Node storage pointer"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 1631,
                                      "name": "nodes",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2793,
                                      "src": "3940:5:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                                      }
                                    },
                                    "id": 1633,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 1632,
                                      "name": "p_value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1525,
                                      "src": "3946:7:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3940:14:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                                      "typeString": "struct OrderStatisticTree.Node storage ref"
                                    }
                                  },
                                  "src": "3938:16:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                    "typeString": "struct OrderStatisticTree.Node storage pointer"
                                  }
                                },
                                "id": 1635,
                                "nodeType": "ExpressionStatement",
                                "src": "3938:16:24"
                              },
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1637,
                                        "name": "p",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1570,
                                        "src": "3989:1:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                                        }
                                      },
                                      "id": 1638,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "parent",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2780,
                                      "src": "3989:8:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1639,
                                        "name": "p",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1570,
                                        "src": "3998:1:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                                        }
                                      },
                                      "id": 1640,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "side",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2782,
                                      "src": "3998:6:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "id": 1636,
                                    "name": "rebalance_delete",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1649,
                                    "src": "3972:16:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bool_$returns$__$",
                                      "typeString": "function (uint256,bool)"
                                    }
                                  },
                                  "id": 1641,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3972:33:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 1642,
                                "nodeType": "ExpressionStatement",
                                "src": "3972:33:24"
                              }
                            ]
                          }
                        },
                        "id": 1645,
                        "nodeType": "IfStatement",
                        "src": "3444:576:24",
                        "trueBody": {
                          "id": 1626,
                          "nodeType": "Block",
                          "src": "3462:423:24",
                          "statements": [
                            {
                              "assignments": [
                                1570
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1570,
                                  "name": "p",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1649,
                                  "src": "3480:14:24",
                                  "stateVariable": false,
                                  "storageLocation": "storage",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                    "typeString": "struct OrderStatisticTree.Node"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 1569,
                                    "name": "Node",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 2789,
                                    "src": "3480:4:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                      "typeString": "struct OrderStatisticTree.Node"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1574,
                              "initialValue": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1571,
                                  "name": "nodes",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2793,
                                  "src": "3495:5:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                                    "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                                  }
                                },
                                "id": 1573,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1572,
                                  "name": "p_value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1525,
                                  "src": "3501:7:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3495:14:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Node_$2789_storage",
                                  "typeString": "struct OrderStatisticTree.Node storage ref"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3480:29:24"
                            },
                            {
                              "assignments": [
                                1576
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1576,
                                  "name": "s_value",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1649,
                                  "src": "3527:12:24",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 1575,
                                    "name": "uint",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3527:4:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1582,
                              "initialValue": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1577,
                                    "name": "p",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1570,
                                    "src": "3540:1:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                      "typeString": "struct OrderStatisticTree.Node storage pointer"
                                    }
                                  },
                                  "id": 1578,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "children",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2778,
                                  "src": "3540:10:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                                    "typeString": "mapping(bool => uint256)"
                                  }
                                },
                                "id": 1581,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1580,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "!",
                                  "prefix": true,
                                  "src": "3551:5:24",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 1579,
                                    "name": "side",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1527,
                                    "src": "3552:4:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3540:17:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3527:30:24"
                            },
                            {
                              "assignments": [
                                1584
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1584,
                                  "name": "s_bf",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1649,
                                  "src": "3575:8:24",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "typeName": {
                                    "id": 1583,
                                    "name": "int",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3575:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1588,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1586,
                                    "name": "s_value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1576,
                                    "src": "3599:7:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 1585,
                                  "name": "balance_factor",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1299,
                                  "src": "3584:14:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_int256_$",
                                    "typeString": "function (uint256) view returns (int256)"
                                  }
                                },
                                "id": 1587,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3584:23:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3575:32:24"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 1595,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1589,
                                  "name": "s_bf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1584,
                                  "src": "3629:4:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 1593,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 1591,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "-",
                                        "prefix": true,
                                        "src": "3638:2:24",
                                        "subExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 1590,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3639:1:24",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_-1_by_1",
                                          "typeString": "int_const -1"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 1592,
                                        "name": "sign",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1544,
                                        "src": "3643:4:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "3638:9:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "id": 1594,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "3637:11:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "src": "3629:19:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 1602,
                              "nodeType": "IfStatement",
                              "src": "3625:66:24",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1597,
                                      "name": "s_value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1576,
                                      "src": "3677:7:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 1599,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "!",
                                      "prefix": true,
                                      "src": "3685:5:24",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 1598,
                                        "name": "side",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1527,
                                        "src": "3686:4:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "id": 1596,
                                    "name": "rotate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1436,
                                    "src": "3670:6:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bool_$returns$__$",
                                      "typeString": "function (uint256,bool)"
                                    }
                                  },
                                  "id": 1600,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3670:21:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 1601,
                                "nodeType": "ExpressionStatement",
                                "src": "3670:21:24"
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1604,
                                    "name": "p_value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1525,
                                    "src": "3716:7:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1605,
                                    "name": "side",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1527,
                                    "src": "3724:4:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 1603,
                                  "name": "rotate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1436,
                                  "src": "3709:6:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bool_$returns$__$",
                                    "typeString": "function (uint256,bool)"
                                  }
                                },
                                "id": 1606,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3709:20:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1607,
                              "nodeType": "ExpressionStatement",
                              "src": "3709:20:24"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 1610,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1608,
                                  "name": "s_bf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1584,
                                  "src": "3751:4:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 1609,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3757:1:24",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "3751:7:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 1625,
                              "nodeType": "IfStatement",
                              "src": "3747:124:24",
                              "trueBody": {
                                "id": 1624,
                                "nodeType": "Block",
                                "src": "3759:112:24",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1615,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 1611,
                                        "name": "p",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1570,
                                        "src": "3781:1:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 1612,
                                          "name": "nodes",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2793,
                                          "src": "3783:5:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                                            "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                                          }
                                        },
                                        "id": 1614,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 1613,
                                          "name": "p_value",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1525,
                                          "src": "3789:7:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "3783:14:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Node_$2789_storage",
                                          "typeString": "struct OrderStatisticTree.Node storage ref"
                                        }
                                      },
                                      "src": "3781:16:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                        "typeString": "struct OrderStatisticTree.Node storage pointer"
                                      }
                                    },
                                    "id": 1616,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3781:16:24"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 1618,
                                            "name": "p",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1570,
                                            "src": "3836:1:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                              "typeString": "struct OrderStatisticTree.Node storage pointer"
                                            }
                                          },
                                          "id": 1619,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "parent",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2780,
                                          "src": "3836:8:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 1620,
                                            "name": "p",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1570,
                                            "src": "3845:1:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                              "typeString": "struct OrderStatisticTree.Node storage pointer"
                                            }
                                          },
                                          "id": 1621,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "side",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2782,
                                          "src": "3845:6:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        ],
                                        "id": 1617,
                                        "name": "rebalance_delete",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1649,
                                        "src": "3819:16:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bool_$returns$__$",
                                          "typeString": "function (uint256,bool)"
                                        }
                                      },
                                      "id": 1622,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3819:33:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 1623,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3819:33:24"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 1649,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "rebalance_delete",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1528,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1525,
                  "name": "p_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1649,
                  "src": "3137:12:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1524,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3137:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1527,
                  "name": "side",
                  "nodeType": "VariableDeclaration",
                  "scope": 1649,
                  "src": "3150:9:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1526,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3150:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3136:24:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 1529,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3168:0:24"
            },
            "scope": 2794,
            "src": "3111:925:24",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1674,
              "nodeType": "Block",
              "src": "4094:153:24",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1658,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1656,
                      "name": "parent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1651,
                      "src": "4107:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1657,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4115:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "4107:9:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1673,
                  "nodeType": "IfStatement",
                  "src": "4104:137:24",
                  "trueBody": {
                    "id": 1672,
                    "nodeType": "Block",
                    "src": "4118:123:24",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1660,
                              "name": "parent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1651,
                              "src": "4145:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1659,
                            "name": "update_count",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1184,
                            "src": "4132:12:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 1661,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4132:20:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1662,
                        "nodeType": "ExpressionStatement",
                        "src": "4132:20:24"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1664,
                              "name": "parent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1651,
                              "src": "4180:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1663,
                            "name": "update_counts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1213,
                            "src": "4166:13:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 1665,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4166:21:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1666,
                        "nodeType": "ExpressionStatement",
                        "src": "4166:21:24"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1668,
                              "name": "parent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1651,
                              "src": "4218:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1669,
                              "name": "side",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1653,
                              "src": "4225:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 1667,
                            "name": "rebalance_delete",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1649,
                            "src": "4201:16:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bool_$returns$__$",
                              "typeString": "function (uint256,bool)"
                            }
                          },
                          "id": 1670,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4201:29:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1671,
                        "nodeType": "ExpressionStatement",
                        "src": "4201:29:24"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 1675,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "fix_parents",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1654,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1651,
                  "name": "parent",
                  "nodeType": "VariableDeclaration",
                  "scope": 1675,
                  "src": "4063:11:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1650,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4063:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1653,
                  "name": "side",
                  "nodeType": "VariableDeclaration",
                  "scope": 1675,
                  "src": "4075:9:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1652,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4075:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4062:23:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 1655,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4094:0:24"
            },
            "scope": 2794,
            "src": "4042:205:24",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1781,
              "nodeType": "Block",
              "src": "4319:667:24",
              "statements": [
                {
                  "assignments": [
                    1685
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1685,
                      "name": "root",
                      "nodeType": "VariableDeclaration",
                      "scope": 1782,
                      "src": "4329:17:24",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1684,
                        "name": "Node",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2789,
                        "src": "4329:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1689,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1686,
                      "name": "nodes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2793,
                      "src": "4347:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                      }
                    },
                    "id": 1688,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1687,
                      "name": "p_value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1677,
                      "src": "4353:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4347:14:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                      "typeString": "struct OrderStatisticTree.Node storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4329:32:24"
                },
                {
                  "assignments": [
                    1691
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1691,
                      "name": "c_value",
                      "nodeType": "VariableDeclaration",
                      "scope": 1782,
                      "src": "4371:12:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1690,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4371:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1696,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1692,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1685,
                        "src": "4384:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1693,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "children",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2778,
                      "src": "4384:13:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                        "typeString": "mapping(bool => uint256)"
                      }
                    },
                    "id": 1695,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1694,
                      "name": "side",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1679,
                      "src": "4398:4:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4384:19:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4371:32:24"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1699,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1697,
                      "name": "c_value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1691,
                      "src": "4417:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1698,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4426:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "4417:10:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1749,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 1747,
                        "name": "c_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1691,
                        "src": "4730:7:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 1748,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1681,
                        "src": "4739:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "4730:14:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "id": 1778,
                      "nodeType": "Block",
                      "src": "4872:108:24",
                      "statements": [
                        {
                          "assignments": [
                            1766
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1766,
                              "name": "side_new",
                              "nodeType": "VariableDeclaration",
                              "scope": 1782,
                              "src": "4886:13:24",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "typeName": {
                                "id": 1765,
                                "name": "bool",
                                "nodeType": "ElementaryTypeName",
                                "src": "4886:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 1771,
                          "initialValue": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1769,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1767,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1681,
                                  "src": "4901:5:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 1768,
                                  "name": "c_value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1691,
                                  "src": "4910:7:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4901:16:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 1770,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "4900:18:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "4886:32:24"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1773,
                                "name": "c_value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1691,
                                "src": "4946:7:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1774,
                                "name": "side_new",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1766,
                                "src": "4954:8:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1775,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1681,
                                "src": "4963:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1772,
                              "name": "insert_helper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1782,
                              "src": "4932:13:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bool_$_t_uint256_$returns$__$",
                                "typeString": "function (uint256,bool,uint256)"
                              }
                            },
                            "id": 1776,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4932:37:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 1777,
                          "nodeType": "ExpressionStatement",
                          "src": "4932:37:24"
                        }
                      ]
                    },
                    "id": 1779,
                    "nodeType": "IfStatement",
                    "src": "4726:254:24",
                    "trueBody": {
                      "id": 1764,
                      "nodeType": "Block",
                      "src": "4745:114:24",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 1754,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "4759:22:24",
                            "subExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1750,
                                  "name": "nodes",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2793,
                                  "src": "4759:5:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                                    "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                                  }
                                },
                                "id": 1752,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1751,
                                  "name": "c_value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1691,
                                  "src": "4765:7:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4759:14:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Node_$2789_storage",
                                  "typeString": "struct OrderStatisticTree.Node storage ref"
                                }
                              },
                              "id": 1753,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberName": "dupes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2788,
                              "src": "4759:20:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1755,
                          "nodeType": "ExpressionStatement",
                          "src": "4759:22:24"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1757,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1681,
                                "src": "4808:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1756,
                              "name": "update_count",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1184,
                              "src": "4795:12:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                                "typeString": "function (uint256)"
                              }
                            },
                            "id": 1758,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4795:19:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 1759,
                          "nodeType": "ExpressionStatement",
                          "src": "4795:19:24"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1761,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1681,
                                "src": "4842:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1760,
                              "name": "update_counts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1213,
                              "src": "4828:13:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                                "typeString": "function (uint256)"
                              }
                            },
                            "id": 1762,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4828:20:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 1763,
                          "nodeType": "ExpressionStatement",
                          "src": "4828:20:24"
                        }
                      ]
                    }
                  },
                  "id": 1780,
                  "nodeType": "IfStatement",
                  "src": "4413:567:24",
                  "trueBody": {
                    "id": 1746,
                    "nodeType": "Block",
                    "src": "4428:284:24",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1706,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1700,
                                "name": "root",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1685,
                                "src": "4442:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                  "typeString": "struct OrderStatisticTree.Node storage pointer"
                                }
                              },
                              "id": 1703,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "children",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2778,
                              "src": "4442:13:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                                "typeString": "mapping(bool => uint256)"
                              }
                            },
                            "id": 1704,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1702,
                              "name": "side",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1679,
                              "src": "4456:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4442:19:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1705,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1681,
                            "src": "4462:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4442:25:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1707,
                        "nodeType": "ExpressionStatement",
                        "src": "4442:25:24"
                      },
                      {
                        "assignments": [
                          1709
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1709,
                            "name": "child",
                            "nodeType": "VariableDeclaration",
                            "scope": 1782,
                            "src": "4481:18:24",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                              "typeString": "struct OrderStatisticTree.Node"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1708,
                              "name": "Node",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2789,
                              "src": "4481:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                "typeString": "struct OrderStatisticTree.Node"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1713,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1710,
                            "name": "nodes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2793,
                            "src": "4500:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                              "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                            }
                          },
                          "id": 1712,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1711,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1681,
                            "src": "4506:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4500:12:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage",
                            "typeString": "struct OrderStatisticTree.Node storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4481:31:24"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1718,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1714,
                              "name": "child",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1709,
                              "src": "4526:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                "typeString": "struct OrderStatisticTree.Node storage pointer"
                              }
                            },
                            "id": 1716,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "parent",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2780,
                            "src": "4526:12:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1717,
                            "name": "p_value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1677,
                            "src": "4539:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4526:20:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1719,
                        "nodeType": "ExpressionStatement",
                        "src": "4526:20:24"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1724,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1720,
                              "name": "child",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1709,
                              "src": "4560:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                "typeString": "struct OrderStatisticTree.Node storage pointer"
                              }
                            },
                            "id": 1722,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "side",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2782,
                            "src": "4560:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1723,
                            "name": "side",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1679,
                            "src": "4571:4:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "4560:15:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1725,
                        "nodeType": "ExpressionStatement",
                        "src": "4560:15:24"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1730,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1726,
                              "name": "child",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1709,
                              "src": "4589:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                "typeString": "struct OrderStatisticTree.Node storage pointer"
                              }
                            },
                            "id": 1728,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "height",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2784,
                            "src": "4589:12:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 1729,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4602:1:24",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "4589:14:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1731,
                        "nodeType": "ExpressionStatement",
                        "src": "4589:14:24"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1736,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1732,
                              "name": "child",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1709,
                              "src": "4617:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                "typeString": "struct OrderStatisticTree.Node storage pointer"
                              }
                            },
                            "id": 1734,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "count",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2786,
                            "src": "4617:11:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 1735,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4629:1:24",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "4617:13:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1737,
                        "nodeType": "ExpressionStatement",
                        "src": "4617:13:24"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1739,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1681,
                              "src": "4658:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1738,
                            "name": "update_counts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1213,
                            "src": "4644:13:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 1740,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4644:20:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1741,
                        "nodeType": "ExpressionStatement",
                        "src": "4644:20:24"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1743,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1681,
                              "src": "4695:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1742,
                            "name": "rebalance_insert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1523,
                            "src": "4678:16:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 1744,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4678:23:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1745,
                        "nodeType": "ExpressionStatement",
                        "src": "4678:23:24"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 1782,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "insert_helper",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1682,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1677,
                  "name": "p_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1782,
                  "src": "4276:12:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1676,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4276:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1679,
                  "name": "side",
                  "nodeType": "VariableDeclaration",
                  "scope": 1782,
                  "src": "4289:9:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1678,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4289:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1681,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1782,
                  "src": "4299:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1680,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4299:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4275:35:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 1683,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4319:0:24"
            },
            "scope": 2794,
            "src": "4253:733:24",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1804,
              "nodeType": "Block",
              "src": "5027:128:24",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1789,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1787,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1784,
                      "src": "5041:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1788,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5048:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5041:8:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 1802,
                    "nodeType": "Block",
                    "src": "5097:52:24",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1797,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5125:1:24",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 1798,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5127:4:24",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            {
                              "argumentTypes": null,
                              "id": 1799,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1784,
                              "src": "5132:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1796,
                            "name": "insert_helper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1782,
                            "src": "5111:13:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bool_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,bool,uint256)"
                            }
                          },
                          "id": 1800,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5111:27:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1801,
                        "nodeType": "ExpressionStatement",
                        "src": "5111:27:24"
                      }
                    ]
                  },
                  "id": 1803,
                  "nodeType": "IfStatement",
                  "src": "5037:112:24",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1794,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "5063:20:24",
                      "subExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1790,
                            "name": "nodes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2793,
                            "src": "5063:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                              "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                            }
                          },
                          "id": 1792,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1791,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1784,
                            "src": "5069:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5063:12:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage",
                            "typeString": "struct OrderStatisticTree.Node storage ref"
                          }
                        },
                        "id": 1793,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "memberName": "dupes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2788,
                        "src": "5063:18:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1795,
                    "nodeType": "ExpressionStatement",
                    "src": "5063:20:24"
                  }
                }
              ]
            },
            "documentation": null,
            "id": 1805,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "insert",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1785,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1784,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1805,
                  "src": "5008:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1783,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5008:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5007:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 1786,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5027:0:24"
            },
            "scope": 2794,
            "src": "4992:163:24",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1831,
              "nodeType": "Block",
              "src": "5234:158:24",
              "statements": [
                {
                  "assignments": [
                    1813
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1813,
                      "name": "child",
                      "nodeType": "VariableDeclaration",
                      "scope": 1832,
                      "src": "5244:10:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1812,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5244:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1820,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1814,
                          "name": "nodes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2793,
                          "src": "5255:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                            "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                          }
                        },
                        "id": 1816,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1815,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1807,
                          "src": "5261:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5255:12:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage",
                          "typeString": "struct OrderStatisticTree.Node storage ref"
                        }
                      },
                      "id": 1817,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "children",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2778,
                      "src": "5255:21:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                        "typeString": "mapping(bool => uint256)"
                      }
                    },
                    "id": 1819,
                    "indexExpression": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 1818,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5277:4:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5255:27:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5244:38:24"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1823,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1821,
                      "name": "child",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1813,
                      "src": "5296:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1822,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5303:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5296:8:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1828,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1807,
                      "src": "5380:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "functionReturnParameters": 1811,
                    "id": 1829,
                    "nodeType": "Return",
                    "src": "5373:12:24"
                  },
                  "id": 1830,
                  "nodeType": "IfStatement",
                  "src": "5292:93:24",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1825,
                          "name": "child",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1813,
                          "src": "5340:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1824,
                        "name": "rightmost_leaf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1832,
                        "src": "5325:14:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint256) view returns (uint256)"
                        }
                      },
                      "id": 1826,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5325:21:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "functionReturnParameters": 1811,
                    "id": 1827,
                    "nodeType": "Return",
                    "src": "5318:28:24"
                  }
                }
              ]
            },
            "documentation": null,
            "id": 1832,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "rightmost_leaf",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1808,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1807,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1832,
                  "src": "5185:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1806,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5185:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5184:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 1811,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1810,
                  "name": "leaf",
                  "nodeType": "VariableDeclaration",
                  "scope": 1832,
                  "src": "5223:9:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1809,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5223:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5222:11:24"
            },
            "scope": 2794,
            "src": "5161:231:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1889,
              "nodeType": "Block",
              "src": "5436:201:24",
              "statements": [
                {
                  "assignments": [
                    1838
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1838,
                      "name": "n",
                      "nodeType": "VariableDeclaration",
                      "scope": 1890,
                      "src": "5446:14:24",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1837,
                        "name": "Node",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2789,
                        "src": "5446:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1842,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1839,
                      "name": "nodes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2793,
                      "src": "5461:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                      }
                    },
                    "id": 1841,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1840,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1834,
                      "src": "5467:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5461:12:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                      "typeString": "struct OrderStatisticTree.Node storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5446:27:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1847,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1843,
                        "name": "n",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1838,
                        "src": "5483:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1845,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "parent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2780,
                      "src": "5483:8:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1846,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5492:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5483:10:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1848,
                  "nodeType": "ExpressionStatement",
                  "src": "5483:10:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1853,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1849,
                        "name": "n",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1838,
                        "src": "5503:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1851,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "side",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2782,
                      "src": "5503:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 1852,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5510:5:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "5503:12:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1854,
                  "nodeType": "ExpressionStatement",
                  "src": "5503:12:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1861,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1855,
                          "name": "n",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1838,
                          "src": "5525:1:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                            "typeString": "struct OrderStatisticTree.Node storage pointer"
                          }
                        },
                        "id": 1858,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "children",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2778,
                        "src": "5525:10:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                          "typeString": "mapping(bool => uint256)"
                        }
                      },
                      "id": 1859,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 1857,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5536:5:24",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5525:17:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1860,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5543:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5525:19:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1862,
                  "nodeType": "ExpressionStatement",
                  "src": "5525:19:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1869,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1863,
                          "name": "n",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1838,
                          "src": "5554:1:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                            "typeString": "struct OrderStatisticTree.Node storage pointer"
                          }
                        },
                        "id": 1866,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "children",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2778,
                        "src": "5554:10:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                          "typeString": "mapping(bool => uint256)"
                        }
                      },
                      "id": 1867,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 1865,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5565:4:24",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5554:16:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1868,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5571:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5554:18:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1870,
                  "nodeType": "ExpressionStatement",
                  "src": "5554:18:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1875,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1871,
                        "name": "n",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1838,
                        "src": "5582:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1873,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "count",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2786,
                      "src": "5582:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1874,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5590:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5582:9:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1876,
                  "nodeType": "ExpressionStatement",
                  "src": "5582:9:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1881,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1877,
                        "name": "n",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1838,
                        "src": "5601:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1879,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "height",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2784,
                      "src": "5601:8:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1880,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5610:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5601:10:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1882,
                  "nodeType": "ExpressionStatement",
                  "src": "5601:10:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1887,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1883,
                        "name": "n",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1838,
                        "src": "5621:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1885,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "dupes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2788,
                      "src": "5621:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1886,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5629:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5621:9:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1888,
                  "nodeType": "ExpressionStatement",
                  "src": "5621:9:24"
                }
              ]
            },
            "documentation": null,
            "id": 1890,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "zero_out",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1835,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1834,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1890,
                  "src": "5416:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1833,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5416:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5415:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 1836,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5436:0:24"
            },
            "scope": 2794,
            "src": "5398:239:24",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 2057,
              "nodeType": "Block",
              "src": "5707:816:24",
              "statements": [
                {
                  "assignments": [
                    1900
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1900,
                      "name": "ipn",
                      "nodeType": "VariableDeclaration",
                      "scope": 2058,
                      "src": "5717:8:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1899,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5717:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1904,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1902,
                        "name": "left",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1894,
                        "src": "5741:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1901,
                      "name": "rightmost_leaf",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1832,
                      "src": "5726:14:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256) view returns (uint256)"
                      }
                    },
                    "id": 1903,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5726:20:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5717:29:24"
                },
                {
                  "assignments": [
                    1906
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1906,
                      "name": "i",
                      "nodeType": "VariableDeclaration",
                      "scope": 2058,
                      "src": "5756:14:24",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1905,
                        "name": "Node",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2789,
                        "src": "5756:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1910,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1907,
                      "name": "nodes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2793,
                      "src": "5771:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                      }
                    },
                    "id": 1909,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1908,
                      "name": "ipn",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1900,
                      "src": "5777:3:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5771:10:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                      "typeString": "struct OrderStatisticTree.Node storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5756:25:24"
                },
                {
                  "assignments": [
                    1912
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1912,
                      "name": "dupes",
                      "nodeType": "VariableDeclaration",
                      "scope": 2058,
                      "src": "5791:10:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1911,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5791:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1915,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 1913,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1906,
                      "src": "5802:1:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node storage pointer"
                      }
                    },
                    "id": 1914,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "dupes",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2788,
                    "src": "5802:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5791:18:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1917,
                        "name": "ipn",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1900,
                        "src": "5833:3:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1916,
                      "name": "remove_helper",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2187,
                      "src": "5819:13:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 1918,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5819:18:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1919,
                  "nodeType": "ExpressionStatement",
                  "src": "5819:18:24"
                },
                {
                  "assignments": [
                    1921
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1921,
                      "name": "n",
                      "nodeType": "VariableDeclaration",
                      "scope": 2058,
                      "src": "5847:14:24",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1920,
                        "name": "Node",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2789,
                        "src": "5847:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1925,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1922,
                      "name": "nodes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2793,
                      "src": "5862:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                      }
                    },
                    "id": 1924,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1923,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1892,
                      "src": "5868:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5862:12:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                      "typeString": "struct OrderStatisticTree.Node storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5847:27:24"
                },
                {
                  "assignments": [
                    1927
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1927,
                      "name": "parent",
                      "nodeType": "VariableDeclaration",
                      "scope": 2058,
                      "src": "5884:11:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1926,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5884:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1930,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 1928,
                      "name": "n",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1921,
                      "src": "5896:1:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node storage pointer"
                      }
                    },
                    "id": 1929,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "parent",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2780,
                    "src": "5896:8:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5884:20:24"
                },
                {
                  "assignments": [
                    1932
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1932,
                      "name": "p",
                      "nodeType": "VariableDeclaration",
                      "scope": 2058,
                      "src": "5914:14:24",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1931,
                        "name": "Node",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2789,
                        "src": "5914:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1936,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1933,
                      "name": "nodes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2793,
                      "src": "5929:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                      }
                    },
                    "id": 1935,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1934,
                      "name": "parent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1927,
                      "src": "5935:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5929:13:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                      "typeString": "struct OrderStatisticTree.Node storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5914:28:24"
                },
                {
                  "assignments": [
                    1938
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1938,
                      "name": "height",
                      "nodeType": "VariableDeclaration",
                      "scope": 2058,
                      "src": "5952:11:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1937,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5952:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1941,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 1939,
                      "name": "n",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1921,
                      "src": "5964:1:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node storage pointer"
                      }
                    },
                    "id": 1940,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "height",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2784,
                    "src": "5964:8:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5952:20:24"
                },
                {
                  "assignments": [
                    1943
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1943,
                      "name": "side",
                      "nodeType": "VariableDeclaration",
                      "scope": 2058,
                      "src": "5982:9:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1942,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "5982:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1946,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 1944,
                      "name": "n",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1921,
                      "src": "5992:1:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node storage pointer"
                      }
                    },
                    "id": 1945,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "side",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2782,
                    "src": "5992:6:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5982:16:24"
                },
                {
                  "assignments": [
                    1948
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1948,
                      "name": "count",
                      "nodeType": "VariableDeclaration",
                      "scope": 2058,
                      "src": "6008:10:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1947,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6008:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1951,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 1949,
                      "name": "n",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1921,
                      "src": "6019:1:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node storage pointer"
                      }
                    },
                    "id": 1950,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "count",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2786,
                    "src": "6019:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6008:18:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1957,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1952,
                      "name": "right",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1896,
                      "src": "6036:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1953,
                          "name": "n",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1921,
                          "src": "6042:1:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                            "typeString": "struct OrderStatisticTree.Node storage pointer"
                          }
                        },
                        "id": 1954,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "children",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2778,
                        "src": "6042:10:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                          "typeString": "mapping(bool => uint256)"
                        }
                      },
                      "id": 1956,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 1955,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6053:4:24",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "6042:16:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6036:22:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1958,
                  "nodeType": "ExpressionStatement",
                  "src": "6036:22:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1964,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1959,
                      "name": "left",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1894,
                      "src": "6068:4:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1960,
                          "name": "n",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1921,
                          "src": "6073:1:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                            "typeString": "struct OrderStatisticTree.Node storage pointer"
                          }
                        },
                        "id": 1961,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "children",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2778,
                        "src": "6073:10:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                          "typeString": "mapping(bool => uint256)"
                        }
                      },
                      "id": 1963,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 1962,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6084:5:24",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "6073:17:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6068:22:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1965,
                  "nodeType": "ExpressionStatement",
                  "src": "6068:22:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1972,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1966,
                          "name": "p",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1932,
                          "src": "6100:1:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                            "typeString": "struct OrderStatisticTree.Node storage pointer"
                          }
                        },
                        "id": 1969,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "children",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2778,
                        "src": "6100:10:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                          "typeString": "mapping(bool => uint256)"
                        }
                      },
                      "id": 1970,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1968,
                        "name": "side",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1943,
                        "src": "6111:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "6100:16:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1971,
                      "name": "ipn",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1900,
                      "src": "6117:3:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6100:20:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1973,
                  "nodeType": "ExpressionStatement",
                  "src": "6100:20:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1978,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1974,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1906,
                        "src": "6130:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1976,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "parent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2780,
                      "src": "6130:8:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1977,
                      "name": "parent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1927,
                      "src": "6139:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6130:15:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1979,
                  "nodeType": "ExpressionStatement",
                  "src": "6130:15:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1984,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1980,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1906,
                        "src": "6155:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1982,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "side",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2782,
                      "src": "6155:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1983,
                      "name": "side",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1943,
                      "src": "6162:4:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "6155:11:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1985,
                  "nodeType": "ExpressionStatement",
                  "src": "6155:11:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1995,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1986,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1906,
                        "src": "6176:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1988,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "count",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2786,
                      "src": "6176:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1994,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1991,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1989,
                          "name": "count",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1948,
                          "src": "6184:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1990,
                          "name": "dupes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1912,
                          "src": "6190:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6184:11:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1992,
                          "name": "n",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1921,
                          "src": "6196:1:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                            "typeString": "struct OrderStatisticTree.Node storage pointer"
                          }
                        },
                        "id": 1993,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "dupes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2788,
                        "src": "6196:7:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "6184:19:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6176:27:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1996,
                  "nodeType": "ExpressionStatement",
                  "src": "6176:27:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2001,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1997,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1906,
                        "src": "6213:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 1999,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "height",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2784,
                      "src": "6213:8:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2000,
                      "name": "height",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1938,
                      "src": "6222:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6213:15:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2002,
                  "nodeType": "ExpressionStatement",
                  "src": "6213:15:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2007,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2003,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1906,
                        "src": "6238:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 2005,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "dupes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2788,
                      "src": "6238:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2006,
                      "name": "dupes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1912,
                      "src": "6246:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6238:13:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2008,
                  "nodeType": "ExpressionStatement",
                  "src": "6238:13:24"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2011,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2009,
                      "name": "left",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1894,
                      "src": "6265:4:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2010,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6271:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "6265:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2028,
                  "nodeType": "IfStatement",
                  "src": "6261:96:24",
                  "trueBody": {
                    "id": 2027,
                    "nodeType": "Block",
                    "src": "6274:83:24",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2018,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2012,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1906,
                                "src": "6288:1:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                  "typeString": "struct OrderStatisticTree.Node storage pointer"
                                }
                              },
                              "id": 2015,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "children",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2778,
                              "src": "6288:10:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                                "typeString": "mapping(bool => uint256)"
                              }
                            },
                            "id": 2016,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 2014,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6299:5:24",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6288:17:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2017,
                            "name": "left",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1894,
                            "src": "6306:4:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6288:22:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2019,
                        "nodeType": "ExpressionStatement",
                        "src": "6288:22:24"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2025,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2020,
                                "name": "nodes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2793,
                                "src": "6324:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                                  "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                                }
                              },
                              "id": 2022,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2021,
                                "name": "left",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1894,
                                "src": "6330:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6324:11:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$2789_storage",
                                "typeString": "struct OrderStatisticTree.Node storage ref"
                              }
                            },
                            "id": 2023,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "parent",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2780,
                            "src": "6324:18:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2024,
                            "name": "ipn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1900,
                            "src": "6343:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6324:22:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2026,
                        "nodeType": "ExpressionStatement",
                        "src": "6324:22:24"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2031,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2029,
                      "name": "right",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1896,
                      "src": "6370:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2030,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6377:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "6370:8:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2048,
                  "nodeType": "IfStatement",
                  "src": "6366:98:24",
                  "trueBody": {
                    "id": 2047,
                    "nodeType": "Block",
                    "src": "6380:84:24",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2038,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2032,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1906,
                                "src": "6394:1:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                  "typeString": "struct OrderStatisticTree.Node storage pointer"
                                }
                              },
                              "id": 2035,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "children",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2778,
                              "src": "6394:10:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                                "typeString": "mapping(bool => uint256)"
                              }
                            },
                            "id": 2036,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 2034,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6405:4:24",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6394:16:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2037,
                            "name": "right",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1896,
                            "src": "6411:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6394:22:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2039,
                        "nodeType": "ExpressionStatement",
                        "src": "6394:22:24"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2045,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2040,
                                "name": "nodes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2793,
                                "src": "6430:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                                  "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                                }
                              },
                              "id": 2042,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2041,
                                "name": "right",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1896,
                                "src": "6436:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6430:12:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$2789_storage",
                                "typeString": "struct OrderStatisticTree.Node storage ref"
                              }
                            },
                            "id": 2043,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "parent",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2780,
                            "src": "6430:19:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2044,
                            "name": "ipn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1900,
                            "src": "6450:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6430:23:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2046,
                        "nodeType": "ExpressionStatement",
                        "src": "6430:23:24"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2050,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1892,
                        "src": "6482:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2049,
                      "name": "zero_out",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1890,
                      "src": "6473:8:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 2051,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6473:15:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2052,
                  "nodeType": "ExpressionStatement",
                  "src": "6473:15:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2054,
                        "name": "ipn",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1900,
                        "src": "6512:3:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2053,
                      "name": "update_counts",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1213,
                      "src": "6498:13:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 2055,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6498:18:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2056,
                  "nodeType": "ExpressionStatement",
                  "src": "6498:18:24"
                }
              ]
            },
            "documentation": null,
            "id": 2058,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "remove_branch",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1897,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1892,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2058,
                  "src": "5666:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1891,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5666:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1894,
                  "name": "left",
                  "nodeType": "VariableDeclaration",
                  "scope": 2058,
                  "src": "5677:9:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1893,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5677:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1896,
                  "name": "right",
                  "nodeType": "VariableDeclaration",
                  "scope": 2058,
                  "src": "5687:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1895,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5687:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5665:33:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 1898,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5707:0:24"
            },
            "scope": 2794,
            "src": "5643:880:24",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 2186,
              "nodeType": "Block",
              "src": "6572:724:24",
              "statements": [
                {
                  "assignments": [
                    2064
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2064,
                      "name": "n",
                      "nodeType": "VariableDeclaration",
                      "scope": 2187,
                      "src": "6582:14:24",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2063,
                        "name": "Node",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2789,
                        "src": "6582:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2068,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2065,
                      "name": "nodes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2793,
                      "src": "6597:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                      }
                    },
                    "id": 2067,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2066,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2060,
                      "src": "6603:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6597:12:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                      "typeString": "struct OrderStatisticTree.Node storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6582:27:24"
                },
                {
                  "assignments": [
                    2070
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2070,
                      "name": "parent",
                      "nodeType": "VariableDeclaration",
                      "scope": 2187,
                      "src": "6619:11:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2069,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6619:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2073,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 2071,
                      "name": "n",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2064,
                      "src": "6631:1:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node storage pointer"
                      }
                    },
                    "id": 2072,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "parent",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2780,
                    "src": "6631:8:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6619:20:24"
                },
                {
                  "assignments": [
                    2075
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2075,
                      "name": "side",
                      "nodeType": "VariableDeclaration",
                      "scope": 2187,
                      "src": "6649:9:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2074,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "6649:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2078,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 2076,
                      "name": "n",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2064,
                      "src": "6659:1:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node storage pointer"
                      }
                    },
                    "id": 2077,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "side",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2782,
                    "src": "6659:6:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6649:16:24"
                },
                {
                  "assignments": [
                    2080
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2080,
                      "name": "p",
                      "nodeType": "VariableDeclaration",
                      "scope": 2187,
                      "src": "6675:14:24",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2079,
                        "name": "Node",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2789,
                        "src": "6675:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2084,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2081,
                      "name": "nodes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2793,
                      "src": "6690:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                      }
                    },
                    "id": 2083,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2082,
                      "name": "parent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2070,
                      "src": "6696:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6690:13:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                      "typeString": "struct OrderStatisticTree.Node storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6675:28:24"
                },
                {
                  "assignments": [
                    2086
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2086,
                      "name": "left",
                      "nodeType": "VariableDeclaration",
                      "scope": 2187,
                      "src": "6713:9:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2085,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6713:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2091,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2087,
                        "name": "n",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2064,
                        "src": "6723:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 2088,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "children",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2778,
                      "src": "6723:10:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                        "typeString": "mapping(bool => uint256)"
                      }
                    },
                    "id": 2090,
                    "indexExpression": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 2089,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6734:5:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6723:17:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6713:27:24"
                },
                {
                  "assignments": [
                    2093
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2093,
                      "name": "right",
                      "nodeType": "VariableDeclaration",
                      "scope": 2187,
                      "src": "6750:10:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2092,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6750:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2098,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2094,
                        "name": "n",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2064,
                        "src": "6761:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 2095,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "children",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2778,
                      "src": "6761:10:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                        "typeString": "mapping(bool => uint256)"
                      }
                    },
                    "id": 2097,
                    "indexExpression": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 2096,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6772:4:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6761:16:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6750:27:24"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 2107,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2101,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2099,
                            "name": "left",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2086,
                            "src": "6792:4:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2100,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6800:1:24",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6792:9:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 2102,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "6791:11:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2105,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2103,
                            "name": "right",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2093,
                            "src": "6807:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2104,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6816:1:24",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6807:10:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 2106,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "6806:12:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "6791:27:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 2134,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2128,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2126,
                              "name": "left",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2086,
                              "src": "6949:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2127,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6956:1:24",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "6949:8:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "id": 2129,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "6948:10:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2132,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2130,
                              "name": "right",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2093,
                              "src": "6963:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2131,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6972:1:24",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "6963:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "id": 2133,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "6962:12:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "6948:26:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "id": 2183,
                      "nodeType": "Block",
                      "src": "7046:244:24",
                      "statements": [
                        {
                          "assignments": [
                            2143
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 2143,
                              "name": "child",
                              "nodeType": "VariableDeclaration",
                              "scope": 2187,
                              "src": "7060:10:24",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 2142,
                                "name": "uint",
                                "nodeType": "ElementaryTypeName",
                                "src": "7060:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 2147,
                          "initialValue": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2146,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2144,
                              "name": "left",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2086,
                              "src": "7071:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2145,
                              "name": "right",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2093,
                              "src": "7076:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "7071:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "7060:21:24"
                        },
                        {
                          "assignments": [
                            2149
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 2149,
                              "name": "c",
                              "nodeType": "VariableDeclaration",
                              "scope": 2187,
                              "src": "7095:14:24",
                              "stateVariable": false,
                              "storageLocation": "storage",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                "typeString": "struct OrderStatisticTree.Node"
                              },
                              "typeName": {
                                "contractScope": null,
                                "id": 2148,
                                "name": "Node",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 2789,
                                "src": "7095:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                  "typeString": "struct OrderStatisticTree.Node"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 2153,
                          "initialValue": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2150,
                              "name": "nodes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2793,
                              "src": "7110:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                                "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                              }
                            },
                            "id": 2152,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2151,
                              "name": "child",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2143,
                              "src": "7116:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7110:12:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Node_$2789_storage",
                              "typeString": "struct OrderStatisticTree.Node storage ref"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "7095:27:24"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 2160,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2154,
                                  "name": "p",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2080,
                                  "src": "7136:1:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                    "typeString": "struct OrderStatisticTree.Node storage pointer"
                                  }
                                },
                                "id": 2157,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "children",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2778,
                                "src": "7136:10:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                                  "typeString": "mapping(bool => uint256)"
                                }
                              },
                              "id": 2158,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2156,
                                "name": "side",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2075,
                                "src": "7147:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "nodeType": "IndexAccess",
                              "src": "7136:16:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "id": 2159,
                              "name": "child",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2143,
                              "src": "7153:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "7136:22:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2161,
                          "nodeType": "ExpressionStatement",
                          "src": "7136:22:24"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 2166,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2162,
                                "name": "c",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2149,
                                "src": "7172:1:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                  "typeString": "struct OrderStatisticTree.Node storage pointer"
                                }
                              },
                              "id": 2164,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberName": "parent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2780,
                              "src": "7172:8:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "id": 2165,
                              "name": "parent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2070,
                              "src": "7181:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "7172:15:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2167,
                          "nodeType": "ExpressionStatement",
                          "src": "7172:15:24"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 2172,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2168,
                                "name": "c",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2149,
                                "src": "7201:1:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                  "typeString": "struct OrderStatisticTree.Node storage pointer"
                                }
                              },
                              "id": 2170,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberName": "side",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2782,
                              "src": "7201:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "id": 2171,
                              "name": "side",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2075,
                              "src": "7208:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "7201:11:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 2173,
                          "nodeType": "ExpressionStatement",
                          "src": "7201:11:24"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2175,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2060,
                                "src": "7235:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 2174,
                              "name": "zero_out",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1890,
                              "src": "7226:8:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                                "typeString": "function (uint256)"
                              }
                            },
                            "id": 2176,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7226:15:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 2177,
                          "nodeType": "ExpressionStatement",
                          "src": "7226:15:24"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2179,
                                "name": "parent",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2070,
                                "src": "7267:6:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2180,
                                "name": "side",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2075,
                                "src": "7274:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "id": 2178,
                              "name": "fix_parents",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1675,
                              "src": "7255:11:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bool_$returns$__$",
                                "typeString": "function (uint256,bool)"
                              }
                            },
                            "id": 2181,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7255:24:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 2182,
                          "nodeType": "ExpressionStatement",
                          "src": "7255:24:24"
                        }
                      ]
                    },
                    "id": 2184,
                    "nodeType": "IfStatement",
                    "src": "6944:346:24",
                    "trueBody": {
                      "id": 2141,
                      "nodeType": "Block",
                      "src": "6976:56:24",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2136,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2060,
                                "src": "7004:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2137,
                                "name": "left",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2086,
                                "src": "7010:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2138,
                                "name": "right",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2093,
                                "src": "7015:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 2135,
                              "name": "remove_branch",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2058,
                              "src": "6990:13:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                "typeString": "function (uint256,uint256,uint256)"
                              }
                            },
                            "id": 2139,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6990:31:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 2140,
                          "nodeType": "ExpressionStatement",
                          "src": "6990:31:24"
                        }
                      ]
                    }
                  },
                  "id": 2185,
                  "nodeType": "IfStatement",
                  "src": "6787:503:24",
                  "trueBody": {
                    "id": 2125,
                    "nodeType": "Block",
                    "src": "6820:110:24",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2114,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2108,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2080,
                                "src": "6834:1:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                  "typeString": "struct OrderStatisticTree.Node storage pointer"
                                }
                              },
                              "id": 2111,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "children",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2778,
                              "src": "6834:10:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                                "typeString": "mapping(bool => uint256)"
                              }
                            },
                            "id": 2112,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2110,
                              "name": "side",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2075,
                              "src": "6845:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6834:16:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2113,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6851:1:24",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6834:18:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2115,
                        "nodeType": "ExpressionStatement",
                        "src": "6834:18:24"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2117,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2060,
                              "src": "6875:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2116,
                            "name": "zero_out",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1890,
                            "src": "6866:8:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 2118,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6866:15:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2119,
                        "nodeType": "ExpressionStatement",
                        "src": "6866:15:24"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2121,
                              "name": "parent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2070,
                              "src": "6907:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2122,
                              "name": "side",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2075,
                              "src": "6914:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 2120,
                            "name": "fix_parents",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1675,
                            "src": "6895:11:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bool_$returns$__$",
                              "typeString": "function (uint256,bool)"
                            }
                          },
                          "id": 2123,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6895:24:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2124,
                        "nodeType": "ExpressionStatement",
                        "src": "6895:24:24"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 2187,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "remove_helper",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2061,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2060,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2187,
                  "src": "6552:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2059,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6552:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6551:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2062,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6572:0:24"
            },
            "scope": 2794,
            "src": "6529:767:24",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 2247,
              "nodeType": "Block",
              "src": "7337:404:24",
              "statements": [
                {
                  "assignments": [
                    2193
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2193,
                      "name": "n",
                      "nodeType": "VariableDeclaration",
                      "scope": 2248,
                      "src": "7347:14:24",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2192,
                        "name": "Node",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2789,
                        "src": "7347:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2197,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2194,
                      "name": "nodes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2793,
                      "src": "7362:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                      }
                    },
                    "id": 2196,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2195,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2189,
                      "src": "7368:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "7362:12:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                      "typeString": "struct OrderStatisticTree.Node storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7347:27:24"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2200,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2198,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2189,
                      "src": "7388:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2199,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7395:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7388:8:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 2214,
                    "nodeType": "Block",
                    "src": "7473:63:24",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2211,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2208,
                              "name": "n",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2193,
                              "src": "7491:1:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                "typeString": "struct OrderStatisticTree.Node storage pointer"
                              }
                            },
                            "id": 2209,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "count",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2786,
                            "src": "7491:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2210,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7500:1:24",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "7491:10:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2213,
                        "nodeType": "IfStatement",
                        "src": "7487:39:24",
                        "trueBody": {
                          "expression": null,
                          "functionReturnParameters": 2191,
                          "id": 2212,
                          "nodeType": "Return",
                          "src": "7519:7:24"
                        }
                      }
                    ]
                  },
                  "id": 2215,
                  "nodeType": "IfStatement",
                  "src": "7384:152:24",
                  "trueBody": {
                    "id": 2207,
                    "nodeType": "Block",
                    "src": "7397:63:24",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2204,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2201,
                              "name": "n",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2193,
                              "src": "7415:1:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                "typeString": "struct OrderStatisticTree.Node storage pointer"
                              }
                            },
                            "id": 2202,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "dupes",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2788,
                            "src": "7415:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2203,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7424:1:24",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "7415:10:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2206,
                        "nodeType": "IfStatement",
                        "src": "7411:39:24",
                        "trueBody": {
                          "expression": null,
                          "functionReturnParameters": 2191,
                          "id": 2205,
                          "nodeType": "Return",
                          "src": "7443:7:24"
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2219,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2216,
                        "name": "n",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2193,
                        "src": "7549:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 2217,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "dupes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2788,
                      "src": "7549:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2218,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7557:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7549:9:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2243,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2189,
                          "src": "7728:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 2242,
                        "name": "remove_helper",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2187,
                        "src": "7714:13:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                          "typeString": "function (uint256)"
                        }
                      },
                      "id": 2244,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7714:20:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 2245,
                    "nodeType": "ExpressionStatement",
                    "src": "7714:20:24"
                  },
                  "id": 2246,
                  "nodeType": "IfStatement",
                  "src": "7545:189:24",
                  "trueBody": {
                    "id": 2241,
                    "nodeType": "Block",
                    "src": "7560:128:24",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2223,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "--",
                          "prefix": false,
                          "src": "7574:9:24",
                          "subExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2220,
                              "name": "n",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2193,
                              "src": "7574:1:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                "typeString": "struct OrderStatisticTree.Node storage pointer"
                              }
                            },
                            "id": 2222,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "dupes",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2788,
                            "src": "7574:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2224,
                        "nodeType": "ExpressionStatement",
                        "src": "7574:9:24"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2227,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2225,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2189,
                            "src": "7600:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2226,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7607:1:24",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "7600:8:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2233,
                        "nodeType": "IfStatement",
                        "src": "7597:38:24",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 2231,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "--",
                            "prefix": false,
                            "src": "7626:9:24",
                            "subExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2228,
                                "name": "n",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2193,
                                "src": "7626:1:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                  "typeString": "struct OrderStatisticTree.Node storage pointer"
                                }
                              },
                              "id": 2230,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberName": "count",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2786,
                              "src": "7626:7:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2232,
                          "nodeType": "ExpressionStatement",
                          "src": "7626:9:24"
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2235,
                                "name": "n",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2193,
                                "src": "7661:1:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                  "typeString": "struct OrderStatisticTree.Node storage pointer"
                                }
                              },
                              "id": 2236,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "parent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2780,
                              "src": "7661:8:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2237,
                                "name": "n",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2193,
                                "src": "7670:1:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                  "typeString": "struct OrderStatisticTree.Node storage pointer"
                                }
                              },
                              "id": 2238,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "side",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2782,
                              "src": "7670:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 2234,
                            "name": "fix_parents",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1675,
                            "src": "7649:11:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bool_$returns$__$",
                              "typeString": "function (uint256,bool)"
                            }
                          },
                          "id": 2239,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7649:28:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2240,
                        "nodeType": "ExpressionStatement",
                        "src": "7649:28:24"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 2248,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "remove",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2190,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2189,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2248,
                  "src": "7318:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2188,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7318:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7317:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2191,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7337:0:24"
            },
            "scope": 2794,
            "src": "7302:439:24",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2333,
              "nodeType": "Block",
              "src": "7811:610:24",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2257,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2255,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2250,
                      "src": "7824:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2256,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7831:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7824:8:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2332,
                  "nodeType": "IfStatement",
                  "src": "7821:594:24",
                  "trueBody": {
                    "id": 2331,
                    "nodeType": "Block",
                    "src": "7833:582:24",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2263,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2258,
                            "name": "smaller",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2253,
                            "src": "7847:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2259,
                                "name": "nodes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2793,
                                "src": "7855:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                                  "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                                }
                              },
                              "id": 2261,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2260,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7861:1:24",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7855:8:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$2789_storage",
                                "typeString": "struct OrderStatisticTree.Node storage ref"
                              }
                            },
                            "id": 2262,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "dupes",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2788,
                            "src": "7855:14:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7847:22:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2264,
                        "nodeType": "ExpressionStatement",
                        "src": "7847:22:24"
                      },
                      {
                        "assignments": [
                          2266
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2266,
                            "name": "cur",
                            "nodeType": "VariableDeclaration",
                            "scope": 2334,
                            "src": "7883:8:24",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2265,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "7883:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2273,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2267,
                                "name": "nodes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2793,
                                "src": "7892:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                                  "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                                }
                              },
                              "id": 2269,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2268,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7898:1:24",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7892:8:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$2789_storage",
                                "typeString": "struct OrderStatisticTree.Node storage ref"
                              }
                            },
                            "id": 2270,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "children",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2778,
                            "src": "7892:17:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                              "typeString": "mapping(bool => uint256)"
                            }
                          },
                          "id": 2272,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 2271,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7910:4:24",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7892:23:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7883:32:24"
                      },
                      {
                        "assignments": [
                          2275
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2275,
                            "name": "cur_node",
                            "nodeType": "VariableDeclaration",
                            "scope": 2334,
                            "src": "7929:21:24",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                              "typeString": "struct OrderStatisticTree.Node"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2274,
                              "name": "Node",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2789,
                              "src": "7929:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                "typeString": "struct OrderStatisticTree.Node"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2279,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2276,
                            "name": "nodes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2793,
                            "src": "7951:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                              "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                            }
                          },
                          "id": 2278,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2277,
                            "name": "cur",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2266,
                            "src": "7957:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7951:10:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage",
                            "typeString": "struct OrderStatisticTree.Node storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7929:32:24"
                      },
                      {
                        "body": {
                          "id": 2329,
                          "nodeType": "Block",
                          "src": "7986:419:24",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2283,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2281,
                                  "name": "cur",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2266,
                                  "src": "8008:3:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2282,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2250,
                                  "src": "8013:5:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8008:10:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 2314,
                              "nodeType": "IfStatement",
                              "src": "8004:278:24",
                              "trueBody": {
                                "id": 2313,
                                "nodeType": "Block",
                                "src": "8019:263:24",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 2286,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 2284,
                                        "name": "cur",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2266,
                                        "src": "8044:3:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 2285,
                                        "name": "value",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2250,
                                        "src": "8048:5:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "8044:9:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 2294,
                                    "nodeType": "IfStatement",
                                    "src": "8041:63:24",
                                    "trueBody": {
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2292,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "argumentTypes": null,
                                          "id": 2287,
                                          "name": "smaller",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2253,
                                          "src": "8079:7:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "+=",
                                        "rightHandSide": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 2291,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 2288,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "8088:1:24",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 2289,
                                              "name": "cur_node",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2275,
                                              "src": "8090:8:24",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                                "typeString": "struct OrderStatisticTree.Node storage pointer"
                                              }
                                            },
                                            "id": 2290,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "dupes",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2788,
                                            "src": "8090:14:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "8088:16:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "8079:25:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 2293,
                                      "nodeType": "ExpressionStatement",
                                      "src": "8079:25:24"
                                    }
                                  },
                                  {
                                    "assignments": [
                                      2296
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 2296,
                                        "name": "left_child",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 2334,
                                        "src": "8126:15:24",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 2295,
                                          "name": "uint",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "8126:4:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 2301,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 2297,
                                          "name": "cur_node",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2275,
                                          "src": "8142:8:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                            "typeString": "struct OrderStatisticTree.Node storage pointer"
                                          }
                                        },
                                        "id": 2298,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "children",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2778,
                                        "src": "8142:17:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                                          "typeString": "mapping(bool => uint256)"
                                        }
                                      },
                                      "id": 2300,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "66616c7365",
                                        "id": 2299,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8160:5:24",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "8142:24:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "8126:40:24"
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 2304,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 2302,
                                        "name": "left_child",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2296,
                                        "src": "8192:10:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 2303,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8204:1:24",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "8192:13:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 2312,
                                    "nodeType": "IfStatement",
                                    "src": "8188:75:24",
                                    "trueBody": {
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2310,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "argumentTypes": null,
                                          "id": 2305,
                                          "name": "smaller",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2253,
                                          "src": "8231:7:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "+=",
                                        "rightHandSide": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 2306,
                                              "name": "nodes",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2793,
                                              "src": "8240:5:24",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                                                "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                                              }
                                            },
                                            "id": 2308,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 2307,
                                              "name": "left_child",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2296,
                                              "src": "8246:10:24",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "8240:17:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Node_$2789_storage",
                                              "typeString": "struct OrderStatisticTree.Node storage ref"
                                            }
                                          },
                                          "id": 2309,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "count",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2786,
                                          "src": "8240:23:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "8231:32:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 2311,
                                      "nodeType": "ExpressionStatement",
                                      "src": "8231:32:24"
                                    }
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2317,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2315,
                                  "name": "cur",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2266,
                                  "src": "8303:3:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2316,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2250,
                                  "src": "8308:5:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8303:10:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 2319,
                              "nodeType": "IfStatement",
                              "src": "8299:41:24",
                              "trueBody": {
                                "id": 2318,
                                "nodeType": "Break",
                                "src": "8335:5:24"
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2327,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 2320,
                                  "name": "cur",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2266,
                                  "src": "8358:3:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2321,
                                      "name": "cur_node",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2275,
                                      "src": "8362:8:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                        "typeString": "struct OrderStatisticTree.Node storage pointer"
                                      }
                                    },
                                    "id": 2322,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "children",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2778,
                                    "src": "8362:17:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                                      "typeString": "mapping(bool => uint256)"
                                    }
                                  },
                                  "id": 2326,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2325,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 2323,
                                      "name": "cur",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2266,
                                      "src": "8380:3:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 2324,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2250,
                                      "src": "8384:5:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "8380:9:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "8362:28:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8358:32:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2328,
                              "nodeType": "ExpressionStatement",
                              "src": "8358:32:24"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 2280,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7981:4:24",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "id": 2330,
                        "nodeType": "WhileStatement",
                        "src": "7975:430:24"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 2334,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "rank",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2251,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2250,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2334,
                  "src": "7761:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2249,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7761:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7760:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2254,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2253,
                  "name": "smaller",
                  "nodeType": "VariableDeclaration",
                  "scope": 2334,
                  "src": "7798:12:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2252,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7798:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7797:14:24"
            },
            "scope": 2794,
            "src": "7747:674:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2456,
              "nodeType": "Block",
              "src": "8492:1028:24",
              "statements": [
                {
                  "assignments": [
                    2342
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2342,
                      "name": "zeroes",
                      "nodeType": "VariableDeclaration",
                      "scope": 2457,
                      "src": "8502:11:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2341,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8502:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2347,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2343,
                        "name": "nodes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2793,
                        "src": "8514:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                          "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                        }
                      },
                      "id": 2345,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2344,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8520:1:24",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "8514:8:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage",
                        "typeString": "struct OrderStatisticTree.Node storage ref"
                      }
                    },
                    "id": 2346,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "dupes",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2788,
                    "src": "8514:14:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8502:26:24"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2350,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2348,
                      "name": "pos",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2336,
                      "src": "8542:3:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2349,
                      "name": "zeroes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2342,
                      "src": "8546:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8542:10:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 2454,
                    "nodeType": "Block",
                    "src": "8589:925:24",
                    "statements": [
                      {
                        "assignments": [
                          2354
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2354,
                            "name": "pos_new",
                            "nodeType": "VariableDeclaration",
                            "scope": 2457,
                            "src": "8603:12:24",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2353,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "8603:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2358,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2357,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2355,
                            "name": "pos",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2336,
                            "src": "8616:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2356,
                            "name": "zeroes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2342,
                            "src": "8620:6:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8616:10:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8603:23:24"
                      },
                      {
                        "assignments": [
                          2360
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2360,
                            "name": "cur",
                            "nodeType": "VariableDeclaration",
                            "scope": 2457,
                            "src": "8640:8:24",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2359,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "8640:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2367,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2361,
                                "name": "nodes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2793,
                                "src": "8649:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                                  "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                                }
                              },
                              "id": 2363,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2362,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8655:1:24",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8649:8:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$2789_storage",
                                "typeString": "struct OrderStatisticTree.Node storage ref"
                              }
                            },
                            "id": 2364,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "children",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2778,
                            "src": "8649:17:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                              "typeString": "mapping(bool => uint256)"
                            }
                          },
                          "id": 2366,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 2365,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8667:4:24",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8649:23:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8640:32:24"
                      },
                      {
                        "assignments": [
                          2369
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2369,
                            "name": "cur_node",
                            "nodeType": "VariableDeclaration",
                            "scope": 2457,
                            "src": "8686:21:24",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                              "typeString": "struct OrderStatisticTree.Node"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2368,
                              "name": "Node",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2789,
                              "src": "8686:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                "typeString": "struct OrderStatisticTree.Node"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2373,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2370,
                            "name": "nodes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2793,
                            "src": "8708:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                              "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                            }
                          },
                          "id": 2372,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2371,
                            "name": "cur",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2360,
                            "src": "8714:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8708:10:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage",
                            "typeString": "struct OrderStatisticTree.Node storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8686:32:24"
                      },
                      {
                        "body": {
                          "id": 2452,
                          "nodeType": "Block",
                          "src": "8743:761:24",
                          "statements": [
                            {
                              "assignments": [
                                2376
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2376,
                                  "name": "left",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2457,
                                  "src": "8761:9:24",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2375,
                                    "name": "uint",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8761:4:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2381,
                              "initialValue": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2377,
                                    "name": "cur_node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2369,
                                    "src": "8771:8:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                      "typeString": "struct OrderStatisticTree.Node storage pointer"
                                    }
                                  },
                                  "id": 2378,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "children",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2778,
                                  "src": "8771:17:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                                    "typeString": "mapping(bool => uint256)"
                                  }
                                },
                                "id": 2380,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "66616c7365",
                                  "id": 2379,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8789:5:24",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "false"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "8771:24:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8761:34:24"
                            },
                            {
                              "assignments": [
                                2383
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2383,
                                  "name": "cur_num",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2457,
                                  "src": "8813:12:24",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2382,
                                    "name": "uint",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8813:4:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2388,
                              "initialValue": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2387,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2384,
                                    "name": "cur_node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2369,
                                    "src": "8826:8:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                      "typeString": "struct OrderStatisticTree.Node storage pointer"
                                    }
                                  },
                                  "id": 2385,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "dupes",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2788,
                                  "src": "8826:14:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 2386,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8841:1:24",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "8826:16:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8813:29:24"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2391,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2389,
                                  "name": "left",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2376,
                                  "src": "8864:4:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2390,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8870:1:24",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "8864:7:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 2408,
                                "nodeType": "Block",
                                "src": "9023:53:24",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2406,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 2404,
                                        "name": "left_count",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2399,
                                        "src": "9045:10:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 2405,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9056:1:24",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "9045:12:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2407,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9045:12:24"
                                  }
                                ]
                              },
                              "id": 2409,
                              "nodeType": "IfStatement",
                              "src": "8860:216:24",
                              "trueBody": {
                                "id": 2403,
                                "nodeType": "Block",
                                "src": "8873:128:24",
                                "statements": [
                                  {
                                    "assignments": [
                                      2393
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 2393,
                                        "name": "left_node",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 2457,
                                        "src": "8895:22:24",
                                        "stateVariable": false,
                                        "storageLocation": "storage",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                          "typeString": "struct OrderStatisticTree.Node"
                                        },
                                        "typeName": {
                                          "contractScope": null,
                                          "id": 2392,
                                          "name": "Node",
                                          "nodeType": "UserDefinedTypeName",
                                          "referencedDeclaration": 2789,
                                          "src": "8895:4:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                            "typeString": "struct OrderStatisticTree.Node"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 2397,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 2394,
                                        "name": "nodes",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2793,
                                        "src": "8918:5:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                                          "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                                        }
                                      },
                                      "id": 2396,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 2395,
                                        "name": "left",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2376,
                                        "src": "8924:4:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "8918:11:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Node_$2789_storage",
                                        "typeString": "struct OrderStatisticTree.Node storage ref"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "8895:34:24"
                                  },
                                  {
                                    "assignments": [
                                      2399
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 2399,
                                        "name": "left_count",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 2457,
                                        "src": "8951:15:24",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 2398,
                                          "name": "uint",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "8951:4:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 2402,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2400,
                                        "name": "left_node",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2393,
                                        "src": "8967:9:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                                        }
                                      },
                                      "id": 2401,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "count",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2786,
                                      "src": "8967:15:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "8951:31:24"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2412,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2410,
                                  "name": "pos_new",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2354,
                                  "src": "9097:7:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2411,
                                  "name": "left_count",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2399,
                                  "src": "9105:10:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9097:18:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2426,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2422,
                                    "name": "pos_new",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2354,
                                    "src": "9232:7:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2425,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 2423,
                                      "name": "left_count",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2399,
                                      "src": "9240:10:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 2424,
                                      "name": "cur_num",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2383,
                                      "src": "9251:7:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "9240:18:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "9232:26:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "id": 2449,
                                  "nodeType": "Block",
                                  "src": "9332:158:24",
                                  "statements": [
                                    {
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2435,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "argumentTypes": null,
                                          "id": 2430,
                                          "name": "cur",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2360,
                                          "src": "9354:3:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 2431,
                                              "name": "cur_node",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2369,
                                              "src": "9358:8:24",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                                "typeString": "struct OrderStatisticTree.Node storage pointer"
                                              }
                                            },
                                            "id": 2432,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "children",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2778,
                                            "src": "9358:17:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                                              "typeString": "mapping(bool => uint256)"
                                            }
                                          },
                                          "id": 2434,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "74727565",
                                            "id": 2433,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "bool",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "9376:4:24",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            "value": "true"
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "9358:23:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "9354:27:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 2436,
                                      "nodeType": "ExpressionStatement",
                                      "src": "9354:27:24"
                                    },
                                    {
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2441,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "argumentTypes": null,
                                          "id": 2437,
                                          "name": "cur_node",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2369,
                                          "src": "9403:8:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                            "typeString": "struct OrderStatisticTree.Node storage pointer"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 2438,
                                            "name": "nodes",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2793,
                                            "src": "9412:5:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                                              "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                                            }
                                          },
                                          "id": 2440,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 2439,
                                            "name": "cur",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2360,
                                            "src": "9418:3:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "9412:10:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Node_$2789_storage",
                                            "typeString": "struct OrderStatisticTree.Node storage ref"
                                          }
                                        },
                                        "src": "9403:19:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                                        }
                                      },
                                      "id": 2442,
                                      "nodeType": "ExpressionStatement",
                                      "src": "9403:19:24"
                                    },
                                    {
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2447,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "argumentTypes": null,
                                          "id": 2443,
                                          "name": "pos_new",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2354,
                                          "src": "9444:7:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "-=",
                                        "rightHandSide": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 2446,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 2444,
                                            "name": "left_count",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2399,
                                            "src": "9453:10:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 2445,
                                            "name": "cur_num",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2383,
                                            "src": "9464:7:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "9453:18:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "9444:27:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 2448,
                                      "nodeType": "ExpressionStatement",
                                      "src": "9444:27:24"
                                    }
                                  ]
                                },
                                "id": 2450,
                                "nodeType": "IfStatement",
                                "src": "9228:262:24",
                                "trueBody": {
                                  "id": 2429,
                                  "nodeType": "Block",
                                  "src": "9259:51:24",
                                  "statements": [
                                    {
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2427,
                                        "name": "cur",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2360,
                                        "src": "9288:3:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "functionReturnParameters": 2340,
                                      "id": 2428,
                                      "nodeType": "Return",
                                      "src": "9281:10:24"
                                    }
                                  ]
                                }
                              },
                              "id": 2451,
                              "nodeType": "IfStatement",
                              "src": "9093:397:24",
                              "trueBody": {
                                "id": 2421,
                                "nodeType": "Block",
                                "src": "9117:89:24",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2415,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 2413,
                                        "name": "cur",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2360,
                                        "src": "9139:3:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 2414,
                                        "name": "left",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2376,
                                        "src": "9143:4:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "9139:8:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2416,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9139:8:24"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2419,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 2417,
                                        "name": "cur_node",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2369,
                                        "src": "9169:8:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 2418,
                                        "name": "left_node",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2393,
                                        "src": "9178:9:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                                        }
                                      },
                                      "src": "9169:18:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                                        "typeString": "struct OrderStatisticTree.Node storage pointer"
                                      }
                                    },
                                    "id": 2420,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9169:18:24"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 2374,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8738:4:24",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "id": 2453,
                        "nodeType": "WhileStatement",
                        "src": "8732:772:24"
                      }
                    ]
                  },
                  "id": 2455,
                  "nodeType": "IfStatement",
                  "src": "8538:976:24",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2351,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8573:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 2340,
                    "id": 2352,
                    "nodeType": "Return",
                    "src": "8566:8:24"
                  }
                }
              ]
            },
            "documentation": null,
            "id": 2457,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "select_at",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2337,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2336,
                  "name": "pos",
                  "nodeType": "VariableDeclaration",
                  "scope": 2457,
                  "src": "8446:8:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2335,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "8446:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8445:10:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2340,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2339,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2457,
                  "src": "8481:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2338,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "8481:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8480:12:24"
            },
            "scope": 2794,
            "src": "8427:1093:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2471,
              "nodeType": "Block",
              "src": "9590:44:24",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2469,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2464,
                          "name": "nodes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2793,
                          "src": "9607:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                            "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                          }
                        },
                        "id": 2466,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2465,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2459,
                          "src": "9613:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "9607:12:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage",
                          "typeString": "struct OrderStatisticTree.Node storage ref"
                        }
                      },
                      "id": 2467,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "dupes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2788,
                      "src": "9607:18:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 2468,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9626:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "9607:20:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2463,
                  "id": 2470,
                  "nodeType": "Return",
                  "src": "9600:27:24"
                }
              ]
            },
            "documentation": null,
            "id": 2472,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "duplicates",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2460,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2459,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2472,
                  "src": "9546:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2458,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "9546:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9545:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2463,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2462,
                  "name": "n",
                  "nodeType": "VariableDeclaration",
                  "scope": 2472,
                  "src": "9583:6:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2461,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "9583:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9582:8:24"
            },
            "scope": 2794,
            "src": "9526:108:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2498,
              "nodeType": "Block",
              "src": "9698:137:24",
              "statements": [
                {
                  "assignments": [
                    2478
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2478,
                      "name": "root",
                      "nodeType": "VariableDeclaration",
                      "scope": 2499,
                      "src": "9708:17:24",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2477,
                        "name": "Node",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2789,
                        "src": "9708:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2482,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2479,
                      "name": "nodes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2793,
                      "src": "9726:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                      }
                    },
                    "id": 2481,
                    "indexExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2480,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9732:1:24",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9726:8:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                      "typeString": "struct OrderStatisticTree.Node storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9708:26:24"
                },
                {
                  "assignments": [
                    2484
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2484,
                      "name": "child",
                      "nodeType": "VariableDeclaration",
                      "scope": 2499,
                      "src": "9744:18:24",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                        "typeString": "struct OrderStatisticTree.Node"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2483,
                        "name": "Node",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2789,
                        "src": "9744:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2491,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2485,
                      "name": "nodes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2793,
                      "src": "9763:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                        "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                      }
                    },
                    "id": 2490,
                    "indexExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2486,
                          "name": "root",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2478,
                          "src": "9769:4:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                            "typeString": "struct OrderStatisticTree.Node storage pointer"
                          }
                        },
                        "id": 2487,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "children",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2778,
                        "src": "9769:13:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                          "typeString": "mapping(bool => uint256)"
                        }
                      },
                      "id": 2489,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 2488,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9783:4:24",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "9769:19:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9763:26:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$2789_storage",
                      "typeString": "struct OrderStatisticTree.Node storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9744:45:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2496,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2492,
                        "name": "root",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2478,
                        "src": "9806:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 2493,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "dupes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2788,
                      "src": "9806:10:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2494,
                        "name": "child",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2484,
                        "src": "9817:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                          "typeString": "struct OrderStatisticTree.Node storage pointer"
                        }
                      },
                      "id": 2495,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "count",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2786,
                      "src": "9817:11:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9806:22:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2476,
                  "id": 2497,
                  "nodeType": "Return",
                  "src": "9799:29:24"
                }
              ]
            },
            "documentation": null,
            "id": 2499,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "count",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2473,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9658:2:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2476,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2475,
                  "name": "result",
                  "nodeType": "VariableDeclaration",
                  "scope": 2499,
                  "src": "9686:11:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2474,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "9686:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9685:13:24"
            },
            "scope": 2794,
            "src": "9644:191:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2528,
              "nodeType": "Block",
              "src": "9914:93:24",
              "statements": [
                {
                  "assignments": [
                    2509
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2509,
                      "name": "pos",
                      "nodeType": "VariableDeclaration",
                      "scope": 2529,
                      "src": "9924:8:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2508,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9924:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2513,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2511,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2501,
                        "src": "9938:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2510,
                      "name": "rank",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2334,
                      "src": "9933:4:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256) view returns (uint256)"
                      }
                    },
                    "id": 2512,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9933:11:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9924:20:24"
                },
                {
                  "assignments": [
                    2515
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2515,
                      "name": "num",
                      "nodeType": "VariableDeclaration",
                      "scope": 2529,
                      "src": "9954:8:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2514,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9954:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2518,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2516,
                      "name": "count",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2499,
                      "src": "9963:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 2517,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9963:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9954:16:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2525,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2523,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2521,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2519,
                              "name": "num",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2515,
                              "src": "9988:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2520,
                              "name": "pos",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2509,
                              "src": "9992:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "9988:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 2522,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9996:1:24",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "9988:9:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2524,
                          "name": "n",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2503,
                          "src": "9998:1:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9988:11:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 2526,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "9987:13:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 2507,
                  "id": 2527,
                  "nodeType": "Return",
                  "src": "9980:20:24"
                }
              ]
            },
            "documentation": null,
            "id": 2529,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "in_top_n",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2504,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2501,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2529,
                  "src": "9859:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2500,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "9859:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2503,
                  "name": "n",
                  "nodeType": "VariableDeclaration",
                  "scope": 2529,
                  "src": "9870:6:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2502,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "9870:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9858:19:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2507,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2506,
                  "name": "truth",
                  "nodeType": "VariableDeclaration",
                  "scope": 2529,
                  "src": "9903:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2505,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9903:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9902:12:24"
            },
            "scope": 2794,
            "src": "9841:166:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2570,
              "nodeType": "Block",
              "src": "10077:148:24",
              "statements": [
                {
                  "assignments": [
                    2537
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2537,
                      "name": "pos",
                      "nodeType": "VariableDeclaration",
                      "scope": 2571,
                      "src": "10087:8:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2536,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10087:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2541,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2539,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2531,
                        "src": "10101:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2538,
                      "name": "rank",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2334,
                      "src": "10096:4:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256) view returns (uint256)"
                      }
                    },
                    "id": 2540,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10096:11:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10087:20:24"
                },
                {
                  "assignments": [
                    2543
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2543,
                      "name": "same",
                      "nodeType": "VariableDeclaration",
                      "scope": 2571,
                      "src": "10117:9:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2542,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10117:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2548,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2544,
                        "name": "nodes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2793,
                        "src": "10127:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                          "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                        }
                      },
                      "id": 2546,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2545,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2531,
                        "src": "10133:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "10127:12:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage",
                        "typeString": "struct OrderStatisticTree.Node storage ref"
                      }
                    },
                    "id": 2547,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "dupes",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2788,
                    "src": "10127:18:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10117:28:24"
                },
                {
                  "assignments": [
                    2550
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2550,
                      "name": "num",
                      "nodeType": "VariableDeclaration",
                      "scope": 2571,
                      "src": "10155:8:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2549,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10155:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2553,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2551,
                      "name": "count",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2499,
                      "src": "10164:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 2552,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10164:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10155:16:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2568,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2565,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2556,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2554,
                              "name": "pos",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2537,
                              "src": "10189:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "313030",
                              "id": 2555,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10193:3:24",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_100_by_1",
                                "typeString": "int_const 100"
                              },
                              "value": "100"
                            },
                            "src": "10189:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2564,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2561,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2559,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 2557,
                                      "name": "same",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2543,
                                      "src": "10198:4:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "313030",
                                      "id": 2558,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "10203:3:24",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_100_by_1",
                                        "typeString": "int_const 100"
                                      },
                                      "value": "100"
                                    },
                                    "src": "10198:8:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "313030",
                                    "id": 2560,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10207:3:24",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_100_by_1",
                                      "typeString": "int_const 100"
                                    },
                                    "value": "100"
                                  },
                                  "src": "10198:12:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 2562,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "10197:14:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 2563,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10212:1:24",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "10197:16:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10189:24:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 2566,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "10188:26:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2567,
                      "name": "num",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2550,
                      "src": "10215:3:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10188:30:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2535,
                  "id": 2569,
                  "nodeType": "Return",
                  "src": "10181:37:24"
                }
              ]
            },
            "documentation": null,
            "id": 2571,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "percentile",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2532,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2531,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2571,
                  "src": "10033:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2530,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10033:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10032:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2535,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2534,
                  "name": "k",
                  "nodeType": "VariableDeclaration",
                  "scope": 2571,
                  "src": "10070:6:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2533,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10070:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10069:8:24"
            },
            "scope": 2794,
            "src": "10013:212:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2591,
              "nodeType": "Block",
              "src": "10301:69:24",
              "statements": [
                {
                  "assignments": [
                    2579
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2579,
                      "name": "n",
                      "nodeType": "VariableDeclaration",
                      "scope": 2592,
                      "src": "10311:6:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2578,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10311:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2582,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2580,
                      "name": "count",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2499,
                      "src": "10318:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 2581,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10318:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10311:14:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2588,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2586,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2584,
                            "name": "perc",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2573,
                            "src": "10352:4:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2585,
                            "name": "n",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2579,
                            "src": "10357:1:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10352:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "/",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "313030",
                          "id": 2587,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10359:3:24",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_100_by_1",
                            "typeString": "int_const 100"
                          },
                          "value": "100"
                        },
                        "src": "10352:10:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2583,
                      "name": "select_at",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2457,
                      "src": "10342:9:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256) view returns (uint256)"
                      }
                    },
                    "id": 2589,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10342:21:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2577,
                  "id": 2590,
                  "nodeType": "Return",
                  "src": "10335:28:24"
                }
              ]
            },
            "documentation": null,
            "id": 2592,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "at_percentile",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2574,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2573,
                  "name": "perc",
                  "nodeType": "VariableDeclaration",
                  "scope": 2592,
                  "src": "10254:9:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2572,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10254:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10253:11:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2577,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2576,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2592,
                  "src": "10290:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2575,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10290:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10289:12:24"
            },
            "scope": 2794,
            "src": "10231:139:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2633,
              "nodeType": "Block",
              "src": "10438:151:24",
              "statements": [
                {
                  "assignments": [
                    2600
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2600,
                      "name": "pos",
                      "nodeType": "VariableDeclaration",
                      "scope": 2634,
                      "src": "10448:8:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2599,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10448:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2604,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2602,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2594,
                        "src": "10462:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2601,
                      "name": "rank",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2334,
                      "src": "10457:4:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256) view returns (uint256)"
                      }
                    },
                    "id": 2603,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10457:11:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10448:20:24"
                },
                {
                  "assignments": [
                    2606
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2606,
                      "name": "same",
                      "nodeType": "VariableDeclaration",
                      "scope": 2634,
                      "src": "10478:9:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2605,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10478:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2611,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2607,
                        "name": "nodes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2793,
                        "src": "10488:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                          "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                        }
                      },
                      "id": 2609,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2608,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2594,
                        "src": "10494:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "10488:12:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$2789_storage",
                        "typeString": "struct OrderStatisticTree.Node storage ref"
                      }
                    },
                    "id": 2610,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "dupes",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2788,
                    "src": "10488:18:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10478:28:24"
                },
                {
                  "assignments": [
                    2613
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2613,
                      "name": "num",
                      "nodeType": "VariableDeclaration",
                      "scope": 2634,
                      "src": "10516:8:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2612,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10516:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2616,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2614,
                      "name": "count",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2499,
                      "src": "10525:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 2615,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10525:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10516:16:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2631,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2628,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2619,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2617,
                              "name": "pos",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2600,
                              "src": "10550:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31303030",
                              "id": 2618,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10554:4:24",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1000_by_1",
                                "typeString": "int_const 1000"
                              },
                              "value": "1000"
                            },
                            "src": "10550:8:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2627,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2624,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2622,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 2620,
                                      "name": "same",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2606,
                                      "src": "10560:4:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31303030",
                                      "id": 2621,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "10565:4:24",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1000_by_1",
                                        "typeString": "int_const 1000"
                                      },
                                      "value": "1000"
                                    },
                                    "src": "10560:9:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31303030",
                                    "id": 2623,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10570:4:24",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1000_by_1",
                                      "typeString": "int_const 1000"
                                    },
                                    "value": "1000"
                                  },
                                  "src": "10560:14:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 2625,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "10559:16:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 2626,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10576:1:24",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "10559:18:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10550:27:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 2629,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "10549:29:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2630,
                      "name": "num",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2613,
                      "src": "10579:3:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10549:33:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2598,
                  "id": 2632,
                  "nodeType": "Return",
                  "src": "10542:40:24"
                }
              ]
            },
            "documentation": null,
            "id": 2634,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "permille",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2595,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2594,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2634,
                  "src": "10394:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2593,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10394:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10393:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2598,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2597,
                  "name": "k",
                  "nodeType": "VariableDeclaration",
                  "scope": 2634,
                  "src": "10431:6:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2596,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10431:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10430:8:24"
            },
            "scope": 2794,
            "src": "10376:213:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2654,
              "nodeType": "Block",
              "src": "10663:70:24",
              "statements": [
                {
                  "assignments": [
                    2642
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2642,
                      "name": "n",
                      "nodeType": "VariableDeclaration",
                      "scope": 2655,
                      "src": "10673:6:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2641,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10673:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2645,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2643,
                      "name": "count",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2499,
                      "src": "10680:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 2644,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10680:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10673:14:24"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2651,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2649,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2647,
                            "name": "perm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2636,
                            "src": "10714:4:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2648,
                            "name": "n",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2642,
                            "src": "10719:1:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10714:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "/",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31303030",
                          "id": 2650,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10721:4:24",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1000_by_1",
                            "typeString": "int_const 1000"
                          },
                          "value": "1000"
                        },
                        "src": "10714:11:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2646,
                      "name": "select_at",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2457,
                      "src": "10704:9:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256) view returns (uint256)"
                      }
                    },
                    "id": 2652,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10704:22:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2640,
                  "id": 2653,
                  "nodeType": "Return",
                  "src": "10697:29:24"
                }
              ]
            },
            "documentation": null,
            "id": 2655,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "at_permille",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2637,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2636,
                  "name": "perm",
                  "nodeType": "VariableDeclaration",
                  "scope": 2655,
                  "src": "10616:9:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2635,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10616:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10615:11:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2640,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2639,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2655,
                  "src": "10652:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2638,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10652:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10651:12:24"
            },
            "scope": 2794,
            "src": "10595:138:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2664,
              "nodeType": "Block",
              "src": "10793:41:24",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "3530",
                        "id": 2661,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10824:2:24",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_50_by_1",
                          "typeString": "int_const 50"
                        },
                        "value": "50"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_50_by_1",
                          "typeString": "int_const 50"
                        }
                      ],
                      "id": 2660,
                      "name": "at_percentile",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2592,
                      "src": "10810:13:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256) view returns (uint256)"
                      }
                    },
                    "id": 2662,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10810:17:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2659,
                  "id": 2663,
                  "nodeType": "Return",
                  "src": "10803:24:24"
                }
              ]
            },
            "documentation": null,
            "id": 2665,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "median",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2656,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10754:2:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2659,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2658,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2665,
                  "src": "10782:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2657,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10782:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10781:12:24"
            },
            "scope": 2794,
            "src": "10739:95:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2681,
              "nodeType": "Block",
              "src": "10913:51:24",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2679,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2672,
                      "name": "child",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2670,
                      "src": "10923:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2673,
                            "name": "nodes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2793,
                            "src": "10929:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                              "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                            }
                          },
                          "id": 2675,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2674,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2667,
                            "src": "10935:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10929:12:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage",
                            "typeString": "struct OrderStatisticTree.Node storage ref"
                          }
                        },
                        "id": 2676,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "children",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2778,
                        "src": "10929:21:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                          "typeString": "mapping(bool => uint256)"
                        }
                      },
                      "id": 2678,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 2677,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10951:5:24",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "10929:28:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10923:34:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2680,
                  "nodeType": "ExpressionStatement",
                  "src": "10923:34:24"
                }
              ]
            },
            "documentation": null,
            "id": 2682,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "node_left_child",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2668,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2667,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2682,
                  "src": "10865:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2666,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10865:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10864:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2671,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2670,
                  "name": "child",
                  "nodeType": "VariableDeclaration",
                  "scope": 2682,
                  "src": "10902:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2669,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10902:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10901:12:24"
            },
            "scope": 2794,
            "src": "10840:124:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2698,
              "nodeType": "Block",
              "src": "11044:50:24",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2696,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2689,
                      "name": "child",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2687,
                      "src": "11054:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2690,
                            "name": "nodes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2793,
                            "src": "11060:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                              "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                            }
                          },
                          "id": 2692,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2691,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2684,
                            "src": "11066:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11060:12:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$2789_storage",
                            "typeString": "struct OrderStatisticTree.Node storage ref"
                          }
                        },
                        "id": 2693,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "children",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2778,
                        "src": "11060:21:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                          "typeString": "mapping(bool => uint256)"
                        }
                      },
                      "id": 2695,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 2694,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11082:4:24",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "11060:27:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11054:33:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2697,
                  "nodeType": "ExpressionStatement",
                  "src": "11054:33:24"
                }
              ]
            },
            "documentation": null,
            "id": 2699,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "node_right_child",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2685,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2684,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2699,
                  "src": "10996:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2683,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10996:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10995:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2688,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2687,
                  "name": "child",
                  "nodeType": "VariableDeclaration",
                  "scope": 2699,
                  "src": "11033:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2686,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11033:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11032:12:24"
            },
            "scope": 2794,
            "src": "10970:124:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2713,
              "nodeType": "Block",
              "src": "11170:43:24",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2711,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2706,
                      "name": "parent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2704,
                      "src": "11180:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2707,
                          "name": "nodes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2793,
                          "src": "11187:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                            "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                          }
                        },
                        "id": 2709,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2708,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2701,
                          "src": "11193:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "11187:12:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage",
                          "typeString": "struct OrderStatisticTree.Node storage ref"
                        }
                      },
                      "id": 2710,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "parent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2780,
                      "src": "11187:19:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11180:26:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2712,
                  "nodeType": "ExpressionStatement",
                  "src": "11180:26:24"
                }
              ]
            },
            "documentation": null,
            "id": 2714,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "node_parent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2702,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2701,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2714,
                  "src": "11121:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2700,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11121:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11120:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2705,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2704,
                  "name": "parent",
                  "nodeType": "VariableDeclaration",
                  "scope": 2714,
                  "src": "11158:11:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2703,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11158:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11157:13:24"
            },
            "scope": 2794,
            "src": "11100:113:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2728,
              "nodeType": "Block",
              "src": "11285:39:24",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2726,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2721,
                      "name": "side",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2719,
                      "src": "11295:4:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2722,
                          "name": "nodes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2793,
                          "src": "11300:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                            "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                          }
                        },
                        "id": 2724,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2723,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2716,
                          "src": "11306:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "11300:12:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage",
                          "typeString": "struct OrderStatisticTree.Node storage ref"
                        }
                      },
                      "id": 2725,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "side",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2782,
                      "src": "11300:17:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "11295:22:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2727,
                  "nodeType": "ExpressionStatement",
                  "src": "11295:22:24"
                }
              ]
            },
            "documentation": null,
            "id": 2729,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "node_side",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2717,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2716,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2729,
                  "src": "11238:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2715,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11238:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11237:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2720,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2719,
                  "name": "side",
                  "nodeType": "VariableDeclaration",
                  "scope": 2729,
                  "src": "11275:9:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2718,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "11275:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11274:11:24"
            },
            "scope": 2794,
            "src": "11219:105:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2743,
              "nodeType": "Block",
              "src": "11400:43:24",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2741,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2736,
                      "name": "height",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2734,
                      "src": "11410:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2737,
                          "name": "nodes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2793,
                          "src": "11417:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                            "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                          }
                        },
                        "id": 2739,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2738,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2731,
                          "src": "11423:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "11417:12:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage",
                          "typeString": "struct OrderStatisticTree.Node storage ref"
                        }
                      },
                      "id": 2740,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "height",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2784,
                      "src": "11417:19:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11410:26:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2742,
                  "nodeType": "ExpressionStatement",
                  "src": "11410:26:24"
                }
              ]
            },
            "documentation": null,
            "id": 2744,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "node_height",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2732,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2731,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2744,
                  "src": "11351:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2730,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11351:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11350:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2735,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2734,
                  "name": "height",
                  "nodeType": "VariableDeclaration",
                  "scope": 2744,
                  "src": "11388:11:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2733,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11388:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11387:13:24"
            },
            "scope": 2794,
            "src": "11330:113:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2758,
              "nodeType": "Block",
              "src": "11518:42:24",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2756,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2751,
                      "name": "result",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2749,
                      "src": "11528:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2752,
                          "name": "nodes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2793,
                          "src": "11535:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                            "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                          }
                        },
                        "id": 2754,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2753,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2746,
                          "src": "11541:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "11535:12:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage",
                          "typeString": "struct OrderStatisticTree.Node storage ref"
                        }
                      },
                      "id": 2755,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "count",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2786,
                      "src": "11535:18:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11528:25:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2757,
                  "nodeType": "ExpressionStatement",
                  "src": "11528:25:24"
                }
              ]
            },
            "documentation": null,
            "id": 2759,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "node_count",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2747,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2746,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2759,
                  "src": "11469:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2745,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11469:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11468:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2750,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2749,
                  "name": "result",
                  "nodeType": "VariableDeclaration",
                  "scope": 2759,
                  "src": "11506:11:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2748,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11506:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11505:13:24"
            },
            "scope": 2794,
            "src": "11449:111:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2773,
              "nodeType": "Block",
              "src": "11634:41:24",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2771,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2766,
                      "name": "dupes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2764,
                      "src": "11644:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2767,
                          "name": "nodes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2793,
                          "src": "11650:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                            "typeString": "mapping(uint256 => struct OrderStatisticTree.Node storage ref)"
                          }
                        },
                        "id": 2769,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2768,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2761,
                          "src": "11656:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "11650:12:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$2789_storage",
                          "typeString": "struct OrderStatisticTree.Node storage ref"
                        }
                      },
                      "id": 2770,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "dupes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2788,
                      "src": "11650:18:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11644:24:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2772,
                  "nodeType": "ExpressionStatement",
                  "src": "11644:24:24"
                }
              ]
            },
            "documentation": null,
            "id": 2774,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "node_dupes",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2762,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2761,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2774,
                  "src": "11586:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2760,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11586:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11585:12:24"
            },
            "payable": false,
            "returnParameters": {
              "id": 2765,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2764,
                  "name": "dupes",
                  "nodeType": "VariableDeclaration",
                  "scope": 2774,
                  "src": "11623:10:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2763,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11623:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11622:12:24"
            },
            "scope": 2794,
            "src": "11566:109:24",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "canonicalName": "OrderStatisticTree.Node",
            "id": 2789,
            "members": [
              {
                "constant": false,
                "id": 2778,
                "name": "children",
                "nodeType": "VariableDeclaration",
                "scope": 2789,
                "src": "11703:31:24",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                  "typeString": "mapping(bool => uint256)"
                },
                "typeName": {
                  "id": 2777,
                  "keyType": {
                    "id": 2775,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "11712:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "11703:22:24",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bool_$_t_uint256_$",
                    "typeString": "mapping(bool => uint256)"
                  },
                  "valueType": {
                    "id": 2776,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11720:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2780,
                "name": "parent",
                "nodeType": "VariableDeclaration",
                "scope": 2789,
                "src": "11744:11:24",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2779,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "11744:4:24",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2782,
                "name": "side",
                "nodeType": "VariableDeclaration",
                "scope": 2789,
                "src": "11765:9:24",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 2781,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "11765:4:24",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2784,
                "name": "height",
                "nodeType": "VariableDeclaration",
                "scope": 2789,
                "src": "11784:11:24",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2783,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "11784:4:24",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2786,
                "name": "count",
                "nodeType": "VariableDeclaration",
                "scope": 2789,
                "src": "11805:10:24",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2785,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "11805:4:24",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2788,
                "name": "dupes",
                "nodeType": "VariableDeclaration",
                "scope": 2789,
                "src": "11825:10:24",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2787,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "11825:4:24",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Node",
            "nodeType": "StructDefinition",
            "scope": 2794,
            "src": "11681:161:24",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2793,
            "name": "nodes",
            "nodeType": "VariableDeclaration",
            "scope": 2794,
            "src": "11848:27:24",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
              "typeString": "mapping(uint256 => struct OrderStatisticTree.Node)"
            },
            "typeName": {
              "id": 2792,
              "keyType": {
                "id": 2790,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "11856:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "11848:21:24",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$2789_storage_$",
                "typeString": "mapping(uint256 => struct OrderStatisticTree.Node)"
              },
              "valueType": {
                "contractScope": null,
                "id": 2791,
                "name": "Node",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 2789,
                "src": "11864:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Node_$2789_storage_ptr",
                  "typeString": "struct OrderStatisticTree.Node"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          }
        ],
        "scope": 2795,
        "src": "718:11160:24"
      }
    ],
    "src": "0:11878:24"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2018-10-31T13:24:20.802Z"
}