608060405234801561001057600080fd5b506133de806100206000396000f3fe608060405234801561001057600080fd5b50600436106102535760003560e01c806370a0823111610146578063b88d4fde116100c3578063d020ac3611610087578063d020ac3614610536578063d0ebdbe714610549578063def623511461055c578063e922ad3d1461056f578063e985e9c514610582578063f2fde38b146105be57600080fd5b8063b88d4fde146104d7578063bce074c8146104ea578063c10f1a75146104fd578063c87b56dd14610510578063ca7ddfd91461052357600080fd5b80638f15b4141161010a5780638f15b4141461048357806395d89b41146104965780639c9f2b021461049e578063a22cb465146104b1578063a6764143146104c457600080fd5b806370a082311461043e578063715018a61461045157806375a9ba5d146104595780637eea1fb21461046a5780638da5cb5b1461047257600080fd5b80633896d926116101d4578063460b53e311610198578063460b53e3146103ef578063481c6a75146104025780635832aac8146104155780636352211e146104235780636b87d24c1461043657600080fd5b80633896d926146103745780633afa3a54146103875780633d6ad6241461039a578063422400f9146103bb57806342842e0e146103dc57600080fd5b80630dc212a71161021b5780630dc212a7146102ee5780630fab99971461030457806323b872dd146103275780632a55205a1461033a57806335afa5341461036c57600080fd5b806301ffc9a71461025857806306fdde0314610280578063081812fc14610295578063095ea7b3146102c05780630c340a24146102d5575b600080fd5b61026b6102663660046128b7565b6105d1565b60405190151581526020015b60405180910390f35b610288610623565b604051610277919061292c565b6102a86102a336600461293f565b6106b5565b6040516001600160a01b039091168152602001610277565b6102d36102ce36600461296f565b610742565b005b610103546102a89061010090046001600160a01b031681565b6102f6610858565b6040516102779291906129e4565b61026b61031236600461293f565b60fb6020526000908152604090205460ff1681565b6102d3610335366004612a56565b610b48565b61034d610348366004612a92565b610b79565b604080516001600160a01b039093168352602083019190915201610277565b6102d3610be8565b61034d61038236600461293f565b610c3f565b6102d3610395366004612b7f565b610e04565b6103ad6103a836600461293f565b610e1c565b604051610277929190612bb3565b6103ce6103c9366004612bd5565b610ed9565b604051908152602001610277565b6102d36103ea366004612a56565b611049565b6103ce6103fd36600461296f565b611064565b60fe546102a8906001600160a01b031681565b6101035461026b9060ff1681565b6102a861043136600461293f565b61126c565b6103ad6112e3565b6103ce61044c366004612cae565b6112f3565b6102d361137a565b60ff546001600160a01b03166102a8565b6102886113e0565b6033546001600160a01b03166102a8565b6102d3610491366004612cc9565b61146e565b61028861157e565b61026b6104ac366004612d8e565b61158d565b6102d36104bf366004612ddd565b61170e565b6102d36104d2366004612e93565b611719565b6102d36104e5366004612ef6565b611859565b61026b6104f8366004612cae565b611891565b60fd546102a8906001600160a01b031681565b61028861051e36600461293f565b6118de565b6103ce610531366004612f71565b611a55565b6102d3610544366004612cae565b611a97565b6102d3610557366004612cae565b611aec565b61028861056a366004612fca565b611b2e565b60ff546102a8906001600160a01b031681565b61026b610590366004613023565b6001600160a01b039182166000908152609c6020908152604080832093909416825291909152205460ff1690565b6102d36105cc366004612cae565b611c80565b60006001600160e01b031982166380ac58cd60e01b148061060257506001600160e01b03198216635b5e139f60e01b145b8061061d57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606097805461063290613056565b80601f016020809104026020016040519081016040528092919081815260200182805461065e90613056565b80156106ab5780601f10610680576101008083540402835291602001916106ab565b820191906000526020600020905b81548152906001019060200180831161068e57829003601f168201915b5050505050905090565b60006106c082611d4b565b6107265760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152609b60205260409020546001600160a01b031690565b600061074d8261126c565b9050806001600160a01b0316836001600160a01b031614156107bb5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161071d565b336001600160a01b03821614806107d757506107d78133610590565b6108495760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161071d565b6108538383611d68565b505050565b6060806000610100805490506001600160401b0381111561087b5761087b612ab4565b6040519080825280602002602001820160405280156108ae57816020015b60608152602001906001900390816108995790505b50905060005b61010054811015610a385760408051600280825260608201909252600091816020015b60608152602001906001900390816108d7579050509050610100828154811061090257610902613091565b9060005260206000209060020201600001805461091e90613056565b80601f016020809104026020016040519081016040528092919081815260200182805461094a90613056565b80156109975780601f1061096c57610100808354040283529160200191610997565b820191906000526020600020905b81548152906001019060200180831161097a57829003601f168201915b5050505050816000815181106109af576109af613091565b60200260200101819052506109e861010083815481106109d1576109d1613091565b906000526020600020906002020160010154611dd6565b816001815181106109fb576109fb613091565b602002602001018190525080838381518110610a1957610a19613091565b6020026020010181905250508080610a30906130bd565b9150506108b4565b5060408051600280825260608201909252600091816020015b6060815260200190600190039081610a51575050610101805491925090610a7790613056565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa390613056565b8015610af05780601f10610ac557610100808354040283529160200191610af0565b820191906000526020600020905b815481529060010190602001808311610ad357829003601f168201915b505050505081600081518110610b0857610b08613091565b6020026020010181905250610b2261010160010154611dd6565b81600181518110610b3557610b35613091565b6020908102919091010152939092509050565b610b523382611ed3565b610b6e5760405162461bcd60e51b815260040161071d906130d8565b610853838383611fb9565b600080610b8584611d4b565b1515600114610ba65760405162461bcd60e51b815260040161071d90613129565b60ff54600085815261010860205260409020546001600160a01b0390911690606490610bd29086613160565b610bdc9190613195565b915091505b9250929050565b60fe546001600160a01b0316336001600160a01b031614610c1b5760405162461bcd60e51b815260040161071d906131a9565b60ff5460fe80546001600160a01b0319166001600160a01b03909216919091179055565b60fe5460009081906001600160a01b0316336001600160a01b031614610c775760405162461bcd60e51b815260040161071d906131a9565b610c8083611d4b565b1515600114610ca15760405162461bcd60e51b815260040161071d90613129565b60fe546040516307639ab560e21b8152306004820152602481018590526001600160a01b0390911690631d8e6ad490604401602060405180830381865afa158015610cf0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1491906131f7565b610d515760405162461bcd60e51b815260206004820152600e60248201526d22afa0a8282927ab22afa12aa92760911b604482015260640161071d565b610d5a83612159565b6000838152610105602052604090819020805460fe546001909201549251632142170760e11b81523060048201526001600160a01b039283166024820152604481019390935216906342842e0e90606401600060405180830381600087803b158015610dc557600080fd5b505af1158015610dd9573d6000803e3d6000fd5b50505060009384525050610105602052506040902080546001909101546001600160a01b0390911691565b8051610e1890610109906020840190612757565b5050565b6101008181548110610e2d57600080fd5b9060005260206000209060020201600091509050806000018054610e5090613056565b80601f0160208091040260200160405190810160405280929190818152602001828054610e7c90613056565b8015610ec95780601f10610e9e57610100808354040283529160200191610ec9565b820191906000526020600020905b815481529060010190602001808311610eac57829003601f168201915b5050505050908060010154905082565b600080875111610f2b5760405162461bcd60e51b815260206004820152601a60248201527f696e76616c6964206d65646961207265736f757263652055524c000000000000604482015260640161071d565b600086815260fb602052604090205460ff1615610f7a5760405162461bcd60e51b815260206004820152600d60248201526c6974656d496420696e2075736560981b604482015260640161071d565b85610f86335b82612199565b610f9081896122cc565b600087815260fb60209081526040808320805460ff1916600117905580516080810182528981528083018990528082018890526060810187905284845261010783529220825180519192610fe992849290910190612757565b5060208281015180516110029260018501920190612757565b506040820151805161101e916002840191602090910190612757565b506060820151805161103a916003840191602090910190612757565b50919998505050505050505050565b61085383838360405180602001604052806000815250611859565b60006001600160a01b0383166323b872dd336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101859052606401600060405180830381600087803b1580156110c457600080fd5b505af11580156110d8573d6000803e3d6000fd5b505050506110eb61010480546001019055565b60006110f76101045490565b604080516060810182526001600160a01b038781168252602080830188815242848601908152600087815261010590935294909120925183546001600160a01b03191692169190911782555160018201559051600290910155905061115b33610f80565b6040516301ffc9a760e01b815263c87b56dd60e01b60048201526001600160a01b038516906301ffc9a790602401602060405180830381865afa1580156111a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ca91906131f7565b1561124c5760405163c87b56dd60e01b8152600481018490526112479082906001600160a01b0387169063c87b56dd90602401600060405180830381865afa15801561121a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112429190810190613214565b6122cc565b611265565b61126581604051806020016040528060008152506122cc565b9392505050565b6000818152609960205260408120546001600160a01b03168061061d5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b606482015260840161071d565b61010180548190610e5090613056565b60006001600160a01b03821661135e5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b606482015260840161071d565b506001600160a01b03166000908152609a602052604090205490565b6033546001600160a01b031633146113d45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161071d565b6113de6000612357565b565b60fc80546113ed90613056565b80601f016020809104026020016040519081016040528092919081815260200182805461141990613056565b80156114665780601f1061143b57610100808354040283529160200191611466565b820191906000526020600020905b81548152906001019060200180831161144957829003601f168201915b505050505081565b600054610100900460ff1680611487575060005460ff16155b6114ea5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161071d565b600054610100900460ff1615801561150c576000805461ffff19166101011790555b611515856123a9565b80516115299160fc91602090910190612757565b5060ff80546001600160a01b038086166001600160a01b031992831617909255610103805460ff1916905560fd8054928516929091169190911790558015611577576000805461ff00191690555b5050505050565b60606098805461063290613056565b6101035460009061010090046001600160a01b0316336001600160a01b0316146115b657600080fd5b6101035460ff1661163e576040805160606020601f8601819004028201810183529181018481529091829190869086908190850183828082843760009201919091525050509082525042602091820152815180516101019261161c928492910190612757565b5060209190910151600191820155610103805460ff191682179055905061061d565b6101008054600181018255600091909152610101805490916002027f45e010b9ae401e2eb71529478da8bd513a9bdc2d095a111e324f5b95c09ed87b01908190839061168990613056565b6116949291906127db565b506001918201549101556040805160606020601f860181900402820181018352918101848152909182919086908690819085018382808284376000920191909152505050908252504260209182015281518051610101926116f9928492910190612757565b50602091909101516001918201559392505050565b610e183383836123b4565b60fe546001600160a01b0316336001600160a01b03161461174c5760405162461bcd60e51b815260040161071d906131a9565b80518251146117ac5760405162461bcd60e51b815260206004820152602660248201527f4552433732313a20736574526f79616c746965732061726773206c656e206d696044820152650e6dac2e8c6d60d31b606482015260840161071d565b60005b8251811015610853576117da8382815181106117cd576117cd613091565b6020026020010151611d4b565b15156001146117fb5760405162461bcd60e51b815260040161071d90613129565b81818151811061180d5761180d613091565b6020026020010151610108600085848151811061182c5761182c613091565b60200260200101518152602001908152602001600020819055508080611851906130bd565b9150506117af565b6118633383611ed3565b61187f5760405162461bcd60e51b815260040161071d906130d8565b61188b84848484612483565b50505050565b60fd546000906001600160a01b0316336001600160a01b0316146118b457600080fd5b506101038054610100600160a81b0319166101006001600160a01b0384160217905560015b919050565b60606118e982611d4b565b61194f5760405162461bcd60e51b815260206004820152603160248201527f45524337323155524953746f726167653a2055524920717565727920666f72206044820152703737b732bc34b9ba32b73a103a37b5b2b760791b606482015260840161071d565b600082815260c960205260408120805461196890613056565b80601f016020809104026020016040519081016040528092919081815260200182805461199490613056565b80156119e15780601f106119b6576101008083540402835291602001916119e1565b820191906000526020600020905b8154815290600101906020018083116119c457829003601f168201915b5050505050905060006119ff60408051602081019091526000815290565b9050805160001415611a12575092915050565b815115611a44578082604051602001611a2c92919061328a565b60405160208183030381529060405292505050919050565b611a4d846124b6565b949350505050565b6000611a4d8484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506122cc92505050565b60fe546001600160a01b0316336001600160a01b031614611aca5760405162461bcd60e51b815260040161071d906131a9565b60ff80546001600160a01b0319166001600160a01b0392909216919091179055565b60fd546001600160a01b0316336001600160a01b031614611b0c57600080fd5b60fe80546001600160a01b0319166001600160a01b0392909216919091179055565b8051825160609184918491600091611b4691906132b9565b6001600160401b03811115611b5d57611b5d612ab4565b6040519080825280601f01601f191660200182016040528015611b87576020820181803683370190505b509050806000805b8551811015611bff57858181518110611baa57611baa613091565b01602001516001600160f81b0319168383611bc4816130bd565b945081518110611bd657611bd6613091565b60200101906001600160f81b031916908160001a90535080611bf7816130bd565b915050611b8f565b5060005b8451811015611c7357848181518110611c1e57611c1e613091565b01602001516001600160f81b0319168383611c38816130bd565b945081518110611c4a57611c4a613091565b60200101906001600160f81b031916908160001a90535080611c6b816130bd565b915050611c03565b5090979650505050505050565b6033546001600160a01b03163314611cda5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161071d565b6001600160a01b038116611d3f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161071d565b611d4881612357565b50565b6000908152609960205260409020546001600160a01b0316151590565b6000818152609b6020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611d9d8261126c565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b606081611dfa5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611e245780611e0e816130bd565b9150611e1d9050600a83613195565b9150611dfe565b6000816001600160401b03811115611e3e57611e3e612ab4565b6040519080825280601f01601f191660200182016040528015611e68576020820181803683370190505b5090505b8415611a4d57611e7d6001836132d1565b9150611e8a600a866132e8565b611e959060306132b9565b60f81b818381518110611eaa57611eaa613091565b60200101906001600160f81b031916908160001a905350611ecc600a86613195565b9450611e6c565b6000611ede82611d4b565b611f3f5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161071d565b6000611f4a8361126c565b9050806001600160a01b0316846001600160a01b03161480611f855750836001600160a01b0316611f7a846106b5565b6001600160a01b0316145b80611a4d57506001600160a01b038082166000908152609c602090815260408083209388168352929052205460ff16611a4d565b826001600160a01b0316611fcc8261126c565b6001600160a01b0316146120345760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b606482015260840161071d565b6001600160a01b0382166120965760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161071d565b6120a1600082611d68565b6001600160a01b0383166000908152609a602052604081208054600192906120ca9084906132d1565b90915550506001600160a01b0382166000908152609a602052604081208054600192906120f89084906132b9565b909155505060008181526099602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6121628161258d565b600081815260c960205260409020805461217b90613056565b159050611d4857600081815260c960205260408120611d4891612856565b6001600160a01b0382166121ef5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161071d565b6121f881611d4b565b156122455760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161071d565b6001600160a01b0382166000908152609a6020526040812080546001929061226e9084906132b9565b909155505060008181526099602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6122d582611d4b565b6123385760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161071d565b600082815260c960209081526040909120825161085392840190612757565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b606061061d82612628565b816001600160a01b0316836001600160a01b031614156124165760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161071d565b6001600160a01b038381166000818152609c6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61248e848484611fb9565b61249a84848484612650565b61188b5760405162461bcd60e51b815260040161071d906132fc565b60606124c182611d4b565b6125255760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b606482015260840161071d565b600061253c60408051602081019091526000815290565b9050600081511161255c5760405180602001604052806000815250611265565b8061256684611dd6565b60405160200161257792919061328a565b6040516020818303038152906040529392505050565b60006125988261126c565b90506125a5600083611d68565b6001600160a01b0381166000908152609a602052604081208054600192906125ce9084906132d1565b909155505060008281526099602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b60408051808201909152600481526308db999d60e21b6020820152606090611265818461274b565b60006001600160a01b0384163b1561274357604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061269490339089908890889060040161334e565b6020604051808303816000875af19250505080156126cf575060408051601f3d908101601f191682019092526126cc9181019061338b565b60015b612729573d8080156126fd576040519150601f19603f3d011682016040523d82523d6000602084013e612702565b606091505b5080516127215760405162461bcd60e51b815260040161071d906132fc565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611a4d565b506001611a4d565b60606112658383611b2e565b82805461276390613056565b90600052602060002090601f01602090048101928261278557600085556127cb565b82601f1061279e57805160ff19168380011785556127cb565b828001600101855582156127cb579182015b828111156127cb5782518255916020019190600101906127b0565b506127d792915061288c565b5090565b8280546127e790613056565b90600052602060002090601f01602090048101928261280957600085556127cb565b82601f1061281a57805485556127cb565b828001600101855582156127cb57600052602060002091601f016020900482015b828111156127cb57825482559160010191906001019061283b565b50805461286290613056565b6000825580601f10612872575050565b601f016020900490600052602060002090810190611d4891905b5b808211156127d7576000815560010161288d565b6001600160e01b031981168114611d4857600080fd5b6000602082840312156128c957600080fd5b8135611265816128a1565b60005b838110156128ef5781810151838201526020016128d7565b8381111561188b5750506000910152565b600081518084526129188160208601602086016128d4565b601f01601f19169290920160200192915050565b6020815260006112656020830184612900565b60006020828403121561295157600080fd5b5035919050565b80356001600160a01b03811681146118d957600080fd5b6000806040838503121561298257600080fd5b61298b83612958565b946020939093013593505050565b600082825180855260208086019550808260051b84010181860160005b84811015611c7357601f198684030189526129d2838351612900565b988401989250908301906001016129b6565b6040815260006129f76040830185612999565b6020838203818501528185518084528284019150828160051b85010183880160005b83811015612a4757601f19878403018552612a35838351612999565b94860194925090850190600101612a19565b50909998505050505050505050565b600080600060608486031215612a6b57600080fd5b612a7484612958565b9250612a8260208501612958565b9150604084013590509250925092565b60008060408385031215612aa557600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612af257612af2612ab4565b604052919050565b60006001600160401b03821115612b1357612b13612ab4565b50601f01601f191660200190565b6000612b34612b2f84612afa565b612aca565b9050828152838383011115612b4857600080fd5b828260208301376000602084830101529392505050565b600082601f830112612b7057600080fd5b61126583833560208501612b21565b600060208284031215612b9157600080fd5b81356001600160401b03811115612ba757600080fd5b611a4d84828501612b5f565b604081526000612bc66040830185612900565b90508260208301529392505050565b60008060008060008060c08789031215612bee57600080fd5b86356001600160401b0380821115612c0557600080fd5b612c118a838b01612b5f565b9750602089013596506040890135915080821115612c2e57600080fd5b612c3a8a838b01612b5f565b95506060890135915080821115612c5057600080fd5b612c5c8a838b01612b5f565b94506080890135915080821115612c7257600080fd5b612c7e8a838b01612b5f565b935060a0890135915080821115612c9457600080fd5b50612ca189828a01612b5f565b9150509295509295509295565b600060208284031215612cc057600080fd5b61126582612958565b60008060008060808587031215612cdf57600080fd5b84356001600160401b0380821115612cf657600080fd5b612d0288838901612b5f565b95506020870135915080821115612d1857600080fd5b50612d2587828801612b5f565b935050612d3460408601612958565b9150612d4260608601612958565b905092959194509250565b60008083601f840112612d5f57600080fd5b5081356001600160401b03811115612d7657600080fd5b602083019150836020828501011115610be157600080fd5b60008060208385031215612da157600080fd5b82356001600160401b03811115612db757600080fd5b612dc385828601612d4d565b90969095509350505050565b8015158114611d4857600080fd5b60008060408385031215612df057600080fd5b612df983612958565b91506020830135612e0981612dcf565b809150509250929050565b600082601f830112612e2557600080fd5b813560206001600160401b03821115612e4057612e40612ab4565b8160051b612e4f828201612aca565b9283528481018201928281019087851115612e6957600080fd5b83870192505b84831015612e8857823582529183019190830190612e6f565b979650505050505050565b60008060408385031215612ea657600080fd5b82356001600160401b0380821115612ebd57600080fd5b612ec986838701612e14565b93506020850135915080821115612edf57600080fd5b50612eec85828601612e14565b9150509250929050565b60008060008060808587031215612f0c57600080fd5b612f1585612958565b9350612f2360208601612958565b92506040850135915060608501356001600160401b03811115612f4557600080fd5b8501601f81018713612f5657600080fd5b612f6587823560208401612b21565b91505092959194509250565b60008060008060608587031215612f8757600080fd5b612f9085612958565b93506020850135925060408501356001600160401b03811115612fb257600080fd5b612fbe87828801612d4d565b95989497509550505050565b60008060408385031215612fdd57600080fd5b82356001600160401b0380821115612ff457600080fd5b61300086838701612b5f565b9350602085013591508082111561301657600080fd5b50612eec85828601612b5f565b6000806040838503121561303657600080fd5b61303f83612958565b915061304d60208401612958565b90509250929050565b600181811c9082168061306a57607f821691505b6020821081141561308b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156130d1576130d16130a7565b5060010190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252601c908201527f4552433732313a20746f6b656e20646f6573206e6f7420657869737400000000604082015260600190565b600081600019048311821515161561317a5761317a6130a7565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826131a4576131a461317f565b500490565b6020808252602e908201527f48617368746167436f6c6c656374697665724552433732313a206f6e6c79206d60408201526d185b9859d95c88185b1b1bddd95960921b606082015260800190565b60006020828403121561320957600080fd5b815161126581612dcf565b60006020828403121561322657600080fd5b81516001600160401b0381111561323c57600080fd5b8201601f8101841361324d57600080fd5b805161325b612b2f82612afa565b81815285602083850101111561327057600080fd5b6132818260208301602086016128d4565b95945050505050565b6000835161329c8184602088016128d4565b8351908301906132b08183602088016128d4565b01949350505050565b600082198211156132cc576132cc6130a7565b500190565b6000828210156132e3576132e36130a7565b500390565b6000826132f7576132f761317f565b500690565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061338190830184612900565b9695505050505050565b60006020828403121561339d57600080fd5b8151611265816128a156fea264697066735822122002d98bb744f7d8c7e25eb3aa73a8475ca527d90b72e1a8c0588a31004600155964736f6c634300080b0033