608060405260006007556000600855606460095562055730600a553480156200002757600080fd5b50604051620045f7380380620045f783398181016040528101906200004d919062000386565b6040518060400160405280600c81526020017f4f6d6e69436861696e4e465400000000000000000000000000000000000000008152506040518060400160405280600781526020017f4f4f43434e465400000000000000000000000000000000000000000000000000815250620000d9620000cd6200016560201b60201c565b6200016d60201b60201c565b8160019080519060200190620000f192919062000231565b5080600290805190602001906200010a92919062000231565b50505082600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816008819055508060098190555050505062000447565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200023f9062000411565b90600052602060002090601f016020900481019282620002635760008555620002af565b82601f106200027e57805160ff1916838001178555620002af565b82800160010185558215620002af579182015b82811115620002ae57825182559160200191906001019062000291565b5b509050620002be9190620002c2565b5090565b5b80821115620002dd576000816000905550600101620002c3565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200031382620002e6565b9050919050565b620003258162000306565b81146200033157600080fd5b50565b60008151905062000345816200031a565b92915050565b6000819050919050565b62000360816200034b565b81146200036c57600080fd5b50565b600081519050620003808162000355565b92915050565b600080600060608486031215620003a257620003a1620002e1565b5b6000620003b28682870162000334565b9350506020620003c5868287016200036f565b9250506040620003d8868287016200036f565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200042a57607f821691505b60208210811415620004415762000440620003e2565b5b50919050565b6141a080620004576000396000f3fe60806040526004361061013f5760003560e01c8063655e35be116100b6578063b88d4fde1161006f578063b88d4fde14610439578063baf1639e14610462578063c87b56dd1461047e578063e985e9c5146104bb578063f2f5d87c146104f8578063f2fde38b146105355761013f565b8063655e35be1461033d57806370a0823114610366578063715018a6146103a35780638da5cb5b146103ba57806395d89b41146103e5578063a22cb465146104105761013f565b80631249c58b116101085780631249c58b1461023b57806323b872dd1461024557806340a7bb101461026e57806342842e0e146102ac5780635e280f11146102d55780636352211e146103005761013f565b80621d35671461014457806301ffc9a71461016d57806306fdde03146101aa578063081812fc146101d5578063095ea7b314610212575b600080fd5b34801561015057600080fd5b5061016b60048036038101906101669190612790565b61055e565b005b34801561017957600080fd5b50610194600480360381019061018f9190612887565b6106eb565b6040516101a191906128cf565b60405180910390f35b3480156101b657600080fd5b506101bf6107cd565b6040516101cc9190612972565b60405180910390f35b3480156101e157600080fd5b506101fc60048036038101906101f791906129ca565b61085f565b6040516102099190612a38565b60405180910390f35b34801561021e57600080fd5b5061023960048036038101906102349190612a7f565b6108e4565b005b6102436109fc565b005b34801561025157600080fd5b5061026c60048036038101906102679190612abf565b610a91565b005b34801561027a57600080fd5b5061029560048036038101906102909190612b9e565b610af1565b6040516102a3929190612c69565b60405180910390f35b3480156102b857600080fd5b506102d360048036038101906102ce9190612abf565b610bba565b005b3480156102e157600080fd5b506102ea610bda565b6040516102f79190612cf1565b60405180910390f35b34801561030c57600080fd5b50610327600480360381019061032291906129ca565b610c00565b6040516103349190612a38565b60405180910390f35b34801561034957600080fd5b50610364600480360381019061035f9190612d0c565b610cb2565b005b34801561037257600080fd5b5061038d60048036038101906103889190612d6c565b610d56565b60405161039a9190612d99565b60405180910390f35b3480156103af57600080fd5b506103b8610e0e565b005b3480156103c657600080fd5b506103cf610e96565b6040516103dc9190612a38565b60405180910390f35b3480156103f157600080fd5b506103fa610ebf565b6040516104079190612972565b60405180910390f35b34801561041c57600080fd5b5061043760048036038101906104329190612db4565b610f51565b005b34801561044557600080fd5b50610460600480360381019061045b9190612df4565b610f67565b005b61047c60048036038101906104779190612e77565b610fc9565b005b34801561048a57600080fd5b506104a560048036038101906104a091906129ca565b6112d3565b6040516104b29190612972565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd9190612eeb565b61137a565b6040516104ef91906128cf565b60405180910390f35b34801561050457600080fd5b5061051f600480360381019061051a91906129ca565b61140e565b60405161052c9190612f80565b60405180910390f35b34801561054157600080fd5b5061055c60048036038101906105579190612d6c565b6114ae565b005b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105b857600080fd5b600c60008561ffff16815260200190815260200160002080546105da90612fd1565b9050835114801561061c5750600c60008561ffff16815260200190815260200160002060405161060a91906130a2565b60405180910390208380519060200120145b61065b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106529061312b565b60405180910390fd5b6000601484015190506000808380602001905181019061067b919061319e565b9150915061068982826115a6565b60016007600082825461069c919061320d565b925050819055507fec16668a9529c4fc256054f3e18620ef50c89aec357376cce821207ff1e656f08783836007546040516106da9493929190613272565b60405180910390a150505050505050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107b657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806107c657506107c5826115c4565b5b9050919050565b6060600180546107dc90612fd1565b80601f016020809104026020016040519081016040528092919081815260200182805461080890612fd1565b80156108555780601f1061082a57610100808354040283529160200191610855565b820191906000526020600020905b81548152906001019060200180831161083857829003601f168201915b5050505050905090565b600061086a8261162e565b6108a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a090613329565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006108ef82610c00565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610960576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610957906133bb565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661097f61169a565b73ffffffffffffffffffffffffffffffffffffffff1614806109ae57506109ad816109a861169a565b61137a565b5b6109ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e49061344d565b60405180910390fd5b6109f783836116a2565b505050565b6009546001600854610a0e919061320d565b1115610a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a46906134b9565b60405180910390fd5b600160086000828254610a62919061320d565b92505081905550610a75336008546115a6565b600160076000828254610a88919061320d565b92505081905550565b610aa2610a9c61169a565b8261175b565b610ae1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad89061354b565b60405180910390fd5b610aec838383611839565b505050565b600080600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340a7bb108a8a8a8a8a8a8a6040518863ffffffff1660e01b8152600401610b5b9796959493929190613598565b604080518083038186803b158015610b7257600080fd5b505afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa91906135fd565b9150915097509795505050505050565b610bd583838360405180602001604052806000815250610f67565b505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca0906136af565b60405180910390fd5b80915050919050565b610cba61169a565b73ffffffffffffffffffffffffffffffffffffffff16610cd8610e96565b73ffffffffffffffffffffffffffffffffffffffff1614610d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d259061371b565b60405180910390fd5b8181600c60008681526020019081526020016000209190610d50929190612519565b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610dc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbe906137ad565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e1661169a565b73ffffffffffffffffffffffffffffffffffffffff16610e34610e96565b73ffffffffffffffffffffffffffffffffffffffff1614610e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e819061371b565b60405180910390fd5b610e946000611aa0565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054610ece90612fd1565b80601f0160208091040260200160405190810160405280929190818152602001828054610efa90612fd1565b8015610f475780601f10610f1c57610100808354040283529160200191610f47565b820191906000526020600020905b815481529060010190602001808311610f2a57829003601f168201915b5050505050905090565b610f63610f5c61169a565b8383611b64565b5050565b610f78610f7261169a565b8361175b565b610fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fae9061354b565b60405180910390fd5b610fc384848484611cd1565b50505050565b6110076040518060400160405280600781526020017f6768757373616100000000000000000000000000000000000000000000000000815250611d2d565b61101081610c00565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461107d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107490613819565b60405180910390fd5b61108681611dc6565b6001600760008282546110999190613839565b92505081905550600033826040516020016110b592919061386d565b6040516020818303038152906040529050600060019050600081600a546040516020016110e39291906138ed565b60405160208183030381529060405290506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340a7bb108930876000876040518663ffffffff1660e01b815260040161115a959493929190613919565b604080518083038186803b15801561117157600080fd5b505afa158015611185573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a991906135fd565b5090506111eb6040518060400160405280600a81526020017f6d6573736167654665650000000000000000000000000000000000000000000081525082611ee3565b8034101561122e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611225906139ec565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c5803100348a8a8a893360008a6040518963ffffffff1660e01b81526004016112979796959493929190613a1b565b6000604051808303818588803b1580156112b057600080fd5b505af11580156112c4573d6000803e3d6000fd5b50505050505050505050505050565b60606112de8261162e565b61131d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131490613b05565b60405180910390fd5b6000611327611f7f565b905060008151116113475760405180602001604052806000815250611372565b8061135184611f96565b604051602001611362929190613b61565b6040516020818303038152906040525b915050919050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600c602052806000526040600020600091509050805461142d90612fd1565b80601f016020809104026020016040519081016040528092919081815260200182805461145990612fd1565b80156114a65780601f1061147b576101008083540402835291602001916114a6565b820191906000526020600020905b81548152906001019060200180831161148957829003601f168201915b505050505081565b6114b661169a565b73ffffffffffffffffffffffffffffffffffffffff166114d4610e96565b73ffffffffffffffffffffffffffffffffffffffff161461152a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115219061371b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561159a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159190613bf7565b60405180910390fd5b6115a381611aa0565b50565b6115c08282604051806020016040528060008152506120f7565b5050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661171583610c00565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006117668261162e565b6117a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179c90613c89565b60405180910390fd5b60006117b083610c00565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061181f57508373ffffffffffffffffffffffffffffffffffffffff166118078461085f565b73ffffffffffffffffffffffffffffffffffffffff16145b80611830575061182f818561137a565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661185982610c00565b73ffffffffffffffffffffffffffffffffffffffff16146118af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a690613d1b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561191f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191690613dad565b60405180910390fd5b61192a838383612152565b6119356000826116a2565b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119859190613839565b925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119dc919061320d565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611a9b838383612157565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bca90613e19565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611cc491906128cf565b60405180910390a3505050565b611cdc848484611839565b611ce88484848461215c565b611d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1e90613eab565b60405180910390fd5b50505050565b611dc381604051602401611d419190612972565b6040516020818303038152906040527f41304fac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506122f3565b50565b6000611dd182610c00565b9050611ddf81600084612152565b611dea6000836116a2565b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e3a9190613839565b925050819055506003600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611edf81600084612157565b5050565b611f7b8282604051602401611ef9929190613ecb565b6040516020818303038152906040527f9710a9d0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506122f3565b5050565b606060405180602001604052806000815250905090565b60606000821415611fde576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506120f2565b600082905060005b60008214612010578080611ff990613efb565b915050600a826120099190613f73565b9150611fe6565b60008167ffffffffffffffff81111561202c5761202b612625565b5b6040519080825280601f01601f19166020018201604052801561205e5781602001600182028036833780820191505090505b5090505b600085146120eb576001826120779190613839565b9150600a856120869190613fa4565b6030612092919061320d565b60f81b8183815181106120a8576120a7613fd5565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856120e49190613f73565b9450612062565b8093505050505b919050565b612101838361231c565b61210e600084848461215c565b61214d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214490613eab565b60405180910390fd5b505050565b505050565b505050565b600061217d8473ffffffffffffffffffffffffffffffffffffffff166124f6565b156122e6578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026121a661169a565b8786866040518563ffffffff1660e01b81526004016121c89493929190614004565b602060405180830381600087803b1580156121e257600080fd5b505af192505050801561221357506040513d601f19601f820116820180604052508101906122109190614065565b60015b612296573d8060008114612243576040519150601f19603f3d011682016040523d82523d6000602084013e612248565b606091505b5060008151141561228e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228590613eab565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506122eb565b600190505b949350505050565b60008151905060006a636f6e736f6c652e6c6f679050602083016000808483855afa5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561238c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612383906140de565b60405180910390fd5b6123958161162e565b156123d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cc9061414a565b60405180910390fd5b6123e160008383612152565b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612431919061320d565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46124f260008383612157565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b82805461252590612fd1565b90600052602060002090601f016020900481019282612547576000855561258e565b82601f1061256057803560ff191683800117855561258e565b8280016001018555821561258e579182015b8281111561258d578235825591602001919060010190612572565b5b50905061259b919061259f565b5090565b5b808211156125b85760008160009055506001016125a0565b5090565b6000604051905090565b600080fd5b600080fd5b600061ffff82169050919050565b6125e7816125d0565b81146125f257600080fd5b50565b600081359050612604816125de565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61265d82612614565b810181811067ffffffffffffffff8211171561267c5761267b612625565b5b80604052505050565b600061268f6125bc565b905061269b8282612654565b919050565b600067ffffffffffffffff8211156126bb576126ba612625565b5b6126c482612614565b9050602081019050919050565b82818337600083830152505050565b60006126f36126ee846126a0565b612685565b90508281526020810184848401111561270f5761270e61260f565b5b61271a8482856126d1565b509392505050565b600082601f8301126127375761273661260a565b5b81356127478482602086016126e0565b91505092915050565b600067ffffffffffffffff82169050919050565b61276d81612750565b811461277857600080fd5b50565b60008135905061278a81612764565b92915050565b600080600080608085870312156127aa576127a96125c6565b5b60006127b8878288016125f5565b945050602085013567ffffffffffffffff8111156127d9576127d86125cb565b5b6127e587828801612722565b93505060406127f68782880161277b565b925050606085013567ffffffffffffffff811115612817576128166125cb565b5b61282387828801612722565b91505092959194509250565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6128648161282f565b811461286f57600080fd5b50565b6000813590506128818161285b565b92915050565b60006020828403121561289d5761289c6125c6565b5b60006128ab84828501612872565b91505092915050565b60008115159050919050565b6128c9816128b4565b82525050565b60006020820190506128e460008301846128c0565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612924578082015181840152602081019050612909565b83811115612933576000848401525b50505050565b6000612944826128ea565b61294e81856128f5565b935061295e818560208601612906565b61296781612614565b840191505092915050565b6000602082019050818103600083015261298c8184612939565b905092915050565b6000819050919050565b6129a781612994565b81146129b257600080fd5b50565b6000813590506129c48161299e565b92915050565b6000602082840312156129e0576129df6125c6565b5b60006129ee848285016129b5565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a22826129f7565b9050919050565b612a3281612a17565b82525050565b6000602082019050612a4d6000830184612a29565b92915050565b612a5c81612a17565b8114612a6757600080fd5b50565b600081359050612a7981612a53565b92915050565b60008060408385031215612a9657612a956125c6565b5b6000612aa485828601612a6a565b9250506020612ab5858286016129b5565b9150509250929050565b600080600060608486031215612ad857612ad76125c6565b5b6000612ae686828701612a6a565b9350506020612af786828701612a6a565b9250506040612b08868287016129b5565b9150509250925092565b600080fd5b600080fd5b60008083601f840112612b3257612b3161260a565b5b8235905067ffffffffffffffff811115612b4f57612b4e612b12565b5b602083019150836001820283011115612b6b57612b6a612b17565b5b9250929050565b612b7b816128b4565b8114612b8657600080fd5b50565b600081359050612b9881612b72565b92915050565b600080600080600080600060a0888a031215612bbd57612bbc6125c6565b5b6000612bcb8a828b016125f5565b9750506020612bdc8a828b01612a6a565b965050604088013567ffffffffffffffff811115612bfd57612bfc6125cb565b5b612c098a828b01612b1c565b95509550506060612c1c8a828b01612b89565b935050608088013567ffffffffffffffff811115612c3d57612c3c6125cb565b5b612c498a828b01612b1c565b925092505092959891949750929550565b612c6381612994565b82525050565b6000604082019050612c7e6000830185612c5a565b612c8b6020830184612c5a565b9392505050565b6000819050919050565b6000612cb7612cb2612cad846129f7565b612c92565b6129f7565b9050919050565b6000612cc982612c9c565b9050919050565b6000612cdb82612cbe565b9050919050565b612ceb81612cd0565b82525050565b6000602082019050612d066000830184612ce2565b92915050565b600080600060408486031215612d2557612d246125c6565b5b6000612d33868287016129b5565b935050602084013567ffffffffffffffff811115612d5457612d536125cb565b5b612d6086828701612b1c565b92509250509250925092565b600060208284031215612d8257612d816125c6565b5b6000612d9084828501612a6a565b91505092915050565b6000602082019050612dae6000830184612c5a565b92915050565b60008060408385031215612dcb57612dca6125c6565b5b6000612dd985828601612a6a565b9250506020612dea85828601612b89565b9150509250929050565b60008060008060808587031215612e0e57612e0d6125c6565b5b6000612e1c87828801612a6a565b9450506020612e2d87828801612a6a565b9350506040612e3e878288016129b5565b925050606085013567ffffffffffffffff811115612e5f57612e5e6125cb565b5b612e6b87828801612722565b91505092959194509250565b60008060008060608587031215612e9157612e906125c6565b5b6000612e9f878288016125f5565b945050602085013567ffffffffffffffff811115612ec057612ebf6125cb565b5b612ecc87828801612b1c565b93509350506040612edf878288016129b5565b91505092959194509250565b60008060408385031215612f0257612f016125c6565b5b6000612f1085828601612a6a565b9250506020612f2185828601612a6a565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000612f5282612f2b565b612f5c8185612f36565b9350612f6c818560208601612906565b612f7581612614565b840191505092915050565b60006020820190508181036000830152612f9a8184612f47565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612fe957607f821691505b60208210811415612ffd57612ffc612fa2565b5b50919050565b600081905092915050565b60008190508160005260206000209050919050565b6000815461303081612fd1565b61303a8186613003565b94506001821660008114613055576001811461306657613099565b60ff19831686528186019350613099565b61306f8561300e565b60005b8381101561309157815481890152600182019150602081019050613072565b838801955050505b50505092915050565b60006130ae8284613023565b915081905092915050565b7f43616c6c206d7573742073656e642066726f6d2076616c69642075736572206160008201527f70706c69636174696f6e00000000000000000000000000000000000000000000602082015250565b6000613115602a836128f5565b9150613120826130b9565b604082019050919050565b6000602082019050818103600083015261314481613108565b9050919050565b6000613156826129f7565b9050919050565b6131668161314b565b811461317157600080fd5b50565b6000815190506131838161315d565b92915050565b6000815190506131988161299e565b92915050565b600080604083850312156131b5576131b46125c6565b5b60006131c385828601613174565b92505060206131d485828601613189565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061321882612994565b915061322383612994565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613258576132576131de565b5b828201905092915050565b61326c816125d0565b82525050565b60006080820190506132876000830187613263565b6132946020830186612a29565b6132a16040830185612c5a565b6132ae6060830184612c5a565b95945050505050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613313602c836128f5565b915061331e826132b7565b604082019050919050565b6000602082019050818103600083015261334281613306565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006133a56021836128f5565b91506133b082613349565b604082019050919050565b600060208201905081810360008301526133d481613398565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b60006134376038836128f5565b9150613442826133db565b604082019050919050565b600060208201905081810360008301526134668161342a565b9050919050565b7f4578636565647320737570706c79000000000000000000000000000000000000600082015250565b60006134a3600e836128f5565b91506134ae8261346d565b602082019050919050565b600060208201905081810360008301526134d281613496565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b60006135356031836128f5565b9150613540826134d9565b604082019050919050565b6000602082019050818103600083015261356481613528565b9050919050565b60006135778385612f36565b93506135848385846126d1565b61358d83612614565b840190509392505050565b600060a0820190506135ad600083018a613263565b6135ba6020830189612a29565b81810360408301526135cd81878961356b565b90506135dc60608301866128c0565b81810360808301526135ef81848661356b565b905098975050505050505050565b60008060408385031215613614576136136125c6565b5b600061362285828601613189565b925050602061363385828601613189565b9150509250929050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b60006136996029836128f5565b91506136a48261363d565b604082019050919050565b600060208201905081810360008301526136c88161368c565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006137056020836128f5565b9150613710826136cf565b602082019050919050565b60006020820190508181036000830152613734816136f8565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000613797602a836128f5565b91506137a28261373b565b604082019050919050565b600060208201905081810360008301526137c68161378a565b9050919050565b7f4e6f7420746865206f776e657200000000000000000000000000000000000000600082015250565b6000613803600d836128f5565b915061380e826137cd565b602082019050919050565b60006020820190508181036000830152613832816137f6565b9050919050565b600061384482612994565b915061384f83612994565b925082821015613862576138616131de565b5b828203905092915050565b60006040820190506138826000830185612a29565b61388f6020830184612c5a565b9392505050565b60008160f01b9050919050565b60006138ae82613896565b9050919050565b6138c66138c1826125d0565b6138a3565b82525050565b6000819050919050565b6138e76138e282612994565b6138cc565b82525050565b60006138f982856138b5565b60028201915061390982846138d6565b6020820191508190509392505050565b600060a08201905061392e6000830188613263565b61393b6020830187612a29565b818103604083015261394d8186612f47565b905061395c60608301856128c0565b818103608083015261396e8184612f47565b90509695505050505050565b7f4d7573742073656e6420656e6f7567682076616c756520746f20636f7665722060008201527f6d65737361676546656500000000000000000000000000000000000000000000602082015250565b60006139d6602a836128f5565b91506139e18261397a565b604082019050919050565b60006020820190508181036000830152613a05816139c9565b9050919050565b613a158161314b565b82525050565b600060c082019050613a30600083018a613263565b8181036020830152613a4381888a61356b565b90508181036040830152613a578187612f47565b9050613a666060830186613a0c565b613a736080830185612a29565b81810360a0830152613a858184612f47565b905098975050505050505050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000613aef602f836128f5565b9150613afa82613a93565b604082019050919050565b60006020820190508181036000830152613b1e81613ae2565b9050919050565b600081905092915050565b6000613b3b826128ea565b613b458185613b25565b9350613b55818560208601612906565b80840191505092915050565b6000613b6d8285613b30565b9150613b798284613b30565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613be16026836128f5565b9150613bec82613b85565b604082019050919050565b60006020820190508181036000830152613c1081613bd4565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613c73602c836128f5565b9150613c7e82613c17565b604082019050919050565b60006020820190508181036000830152613ca281613c66565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000613d056025836128f5565b9150613d1082613ca9565b604082019050919050565b60006020820190508181036000830152613d3481613cf8565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613d976024836128f5565b9150613da282613d3b565b604082019050919050565b60006020820190508181036000830152613dc681613d8a565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613e036019836128f5565b9150613e0e82613dcd565b602082019050919050565b60006020820190508181036000830152613e3281613df6565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613e956032836128f5565b9150613ea082613e39565b604082019050919050565b60006020820190508181036000830152613ec481613e88565b9050919050565b60006040820190508181036000830152613ee58185612939565b9050613ef46020830184612c5a565b9392505050565b6000613f0682612994565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613f3957613f386131de565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613f7e82612994565b9150613f8983612994565b925082613f9957613f98613f44565b5b828204905092915050565b6000613faf82612994565b9150613fba83612994565b925082613fca57613fc9613f44565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006080820190506140196000830187612a29565b6140266020830186612a29565b6140336040830185612c5a565b81810360608301526140458184612f47565b905095945050505050565b60008151905061405f8161285b565b92915050565b60006020828403121561407b5761407a6125c6565b5b600061408984828501614050565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b60006140c86020836128f5565b91506140d382614092565b602082019050919050565b600060208201905081810360008301526140f7816140bb565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000614134601c836128f5565b915061413f826140fe565b602082019050919050565b6000602082019050818103600083015261416381614127565b905091905056fea264697066735822122063a54524ea6658f302744a31717b215edd00c4ea380c3b8beb9f56b1c88c54f064736f6c634300080900330000000000000000000000006edce65403992e310a62460808c4b910d972f10f000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000c8