diff --git a/pt-BR/search-index.json b/pt-BR/search-index.json
index 18cefdf2a8..11c699a9d7 100644
--- a/pt-BR/search-index.json
+++ b/pt-BR/search-index.json
@@ -1 +1 @@
-[{"documents":[{"i":621,"t":"API e Configuração","u":"/node-mysql2/pt-BR/docs/api-and-configurations","b":[]},{"i":623,"t":"Agradecimentos","u":"/node-mysql2/pt-BR/docs/acknowledgements","b":[]},{"i":625,"t":"Contribuições","u":"/node-mysql2/pt-BR/docs/contributing","b":["Contribuições"]},{"i":627,"t":"Website Contributing Guidelines","u":"/node-mysql2/pt-BR/docs/contributing/website","b":["Contribuições"]},{"i":645,"t":"Documentation","u":"/node-mysql2/pt-BR/docs/documentation","b":["Docs","Documentação"]},{"i":655,"t":"MySQL2","u":"/node-mysql2/pt-BR/docs","b":[]},{"i":669,"t":"Authentication Switch Request","u":"/node-mysql2/pt-BR/docs/documentation/authentication-switch","b":["Docs","Documentação"]},{"i":673,"t":"Extra Features","u":"/node-mysql2/pt-BR/docs/documentation/extras","b":["Docs","Documentação"]},{"i":682,"t":"MySQL Server API","u":"/node-mysql2/pt-BR/docs/documentation/mysql-server","b":["Docs","Documentação"]},{"i":691,"t":"Promise Wrappers","u":"/node-mysql2/pt-BR/docs/documentation/promise-wrapper","b":["Docs","Documentação"]},{"i":699,"t":"Prepared Statements","u":"/node-mysql2/pt-BR/docs/documentation/prepared-statements","b":["Docs","Documentação"]},{"i":712,"t":"Using MySQL2 with TypeScript","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","b":["Docs","Documentação"]},{"i":738,"t":"Examples","u":"/node-mysql2/pt-BR/docs/examples","b":["Examples"]},{"i":742,"t":"createPool","u":"/node-mysql2/pt-BR/docs/examples/connections/create-pool","b":["Examples","Connections"]},{"i":761,"t":"Binlog Watcher","u":"/node-mysql2/pt-BR/docs/examples/binlog-watcher","b":["Examples"]},{"i":763,"t":"await — co","u":"/node-mysql2/pt-BR/docs/examples/promise-wrapper/co-await","b":["Examples","Promise Wrapper"]},{"i":765,"t":"Prepared Statements","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements","b":["Examples","Queries","Prepared Statements"]},{"i":767,"t":"createConnection","u":"/node-mysql2/pt-BR/docs/examples/connections/create-connection","b":["Examples","Connections"]},{"i":786,"t":"INSERT","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/insert","b":["Examples","Queries","Prepared Statements"]},{"i":798,"t":"SELECT","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/select","b":["Examples","Queries","Prepared Statements"]},{"i":808,"t":"UPDATE","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/update","b":["Examples","Queries","Prepared Statements"]},{"i":820,"t":"Simple Queries","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries","b":["Examples","Queries","Simple Queries"]},{"i":822,"t":"DELETE","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/delete","b":["Examples","Queries","Simple Queries"]},{"i":833,"t":"DELETE","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/delete","b":["Examples","Queries","Prepared Statements"]},{"i":845,"t":"INSERT","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/insert","b":["Examples","Queries","Simple Queries"]},{"i":856,"t":"createPoolCluster","u":"/node-mysql2/pt-BR/docs/examples/connections/createPoolCluster","b":["Examples","Connections"]},{"i":875,"t":"SELECT","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/select","b":["Examples","Queries","Simple Queries"]},{"i":886,"t":"Pool","u":"/node-mysql2/pt-BR/docs/examples/tests/pool","b":["Examples","Tests"]},{"i":888,"t":"UPDATE","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/update","b":["Examples","Queries","Simple Queries"]},{"i":899,"t":"Server","u":"/node-mysql2/pt-BR/docs/examples/tests/server","b":["Examples","Tests"]},{"i":901,"t":"MySQL Proxy","u":"/node-mysql2/pt-BR/docs/examples/tests/mysql-proxy","b":["Examples","Tests"]},{"i":903,"t":"Procedure Call Packet (Row as Array)","u":"/node-mysql2/pt-BR/docs/examples/typescript/procedure-call/row-as-array","b":["Examples","TypeScript","Procedure Call"]},{"i":905,"t":"Row Data Packet","u":"/node-mysql2/pt-BR/docs/examples/typescript/row-data/index","b":["Examples","TypeScript","Row Data"]},{"i":907,"t":"Row Data Packet (Multi Statements)","u":"/node-mysql2/pt-BR/docs/examples/typescript/row-data/multi-statements","b":["Examples","TypeScript","Row Data"]},{"i":909,"t":"Row Data Packet (Row as Array)","u":"/node-mysql2/pt-BR/docs/examples/typescript/row-data/row-as-array","b":["Examples","TypeScript","Row Data"]},{"i":911,"t":"Row Data Packet (Multi Statements and Row as Array)","u":"/node-mysql2/pt-BR/docs/examples/typescript/row-data/row-as-array-multi-statements","b":["Examples","TypeScript","Row Data"]},{"i":913,"t":"Frequently Asked Questions","u":"/node-mysql2/pt-BR/docs/faq","b":["FAQ"]},{"i":915,"t":"História e Porque o MySQL2","u":"/node-mysql2/pt-BR/docs/history-and-why-mysq2","b":[]},{"i":917,"t":"Stability Badges","u":"/node-mysql2/pt-BR/docs/stability-badges","b":[]},{"i":919,"t":"How to handle errors?","u":"/node-mysql2/pt-BR/docs/faq/how-to-handle-errors","b":["FAQ"]},{"i":927,"t":"Basic Custom Class","u":"/node-mysql2/pt-BR/docs/examples/typescript/basic-custom-class","b":["Examples","TypeScript"]},{"i":929,"t":"Procedure Call Packet","u":"/node-mysql2/pt-BR/docs/examples/typescript/procedure-call/index","b":["Examples","TypeScript","Procedure Call"]}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/621",[0,2.484,1,2.484,2,2.93]],["t/623",[3,4.326]],["t/625",[4,4.326]],["t/627",[5,2.93,6,2.93,7,2.93]],["t/645",[8,4.326]],["t/655",[9,3.234]],["t/669",[10,2.93,11,2.93,12,2.93]],["t/673",[13,3.494,14,3.494]],["t/682",[0,2.484,15,2.484,16,2.484]],["t/691",[17,3.494,18,3.494]],["t/699",[19,2.962,20,2.35]],["t/712",[9,2.19,21,2.93,22,2.93]],["t/738",[23,4.326]],["t/742",[24,4.326]],["t/761",[25,3.494,26,3.494]],["t/763",[27,2.93,28,2.93,29,2.93]],["t/765",[19,2.962,20,2.35]],["t/767",[30,4.326]],["t/786",[31,3.668]],["t/798",[32,3.668]],["t/808",[33,3.668]],["t/820",[34,3.494,35,3.494]],["t/822",[36,3.668]],["t/833",[36,3.668]],["t/845",[31,3.668]],["t/856",[37,4.326]],["t/875",[32,3.668]],["t/886",[38,4.326]],["t/888",[33,3.668]],["t/899",[16,3.668]],["t/901",[15,2.962,39,3.494]],["t/903",[40,1.878,41,1.878,42,1.247,43,1.358,44,1.656]],["t/905",[42,1.65,43,1.796,45,1.971]],["t/907",[20,1.49,42,1.247,43,1.358,45,1.49,46,1.878]],["t/909",[42,1.247,43,2.089,44,1.656,45,1.49]],["t/911",[20,1.198,42,1.003,43,1.759,44,1.331,45,1.198,46,1.51]],["t/913",[47,2.93,48,2.93,49,2.93]],["t/915",[1,1.878,9,1.656,50,2.215,51,2.215,52,2.215]],["t/917",[53,3.494,54,3.494]],["t/919",[55,3.494,56,3.494]],["t/927",[57,2.93,58,2.93,59,2.93]],["t/929",[40,2.484,41,2.484,42,1.65]]],"invertedIndex":[["",{"_index":28,"t":{"763":{"position":[[6,1]]}}}],["agradecimento",{"_index":3,"t":{"623":{"position":[[0,14]]}}}],["api",{"_index":0,"t":{"621":{"position":[[0,3]]},"682":{"position":[[13,3]]}}}],["array",{"_index":44,"t":{"903":{"position":[[30,6]]},"909":{"position":[[24,6]]},"911":{"position":[[45,6]]}}}],["ask",{"_index":48,"t":{"913":{"position":[[11,5]]}}}],["authent",{"_index":10,"t":{"669":{"position":[[0,14]]}}}],["await",{"_index":27,"t":{"763":{"position":[[0,5]]}}}],["badg",{"_index":54,"t":{"917":{"position":[[10,6]]}}}],["basic",{"_index":57,"t":{"927":{"position":[[0,5]]}}}],["binlog",{"_index":25,"t":{"761":{"position":[[0,6]]}}}],["call",{"_index":41,"t":{"903":{"position":[[10,4]]},"929":{"position":[[10,4]]}}}],["class",{"_index":59,"t":{"927":{"position":[[13,5]]}}}],["co",{"_index":29,"t":{"763":{"position":[[8,2]]}}}],["configuração",{"_index":2,"t":{"621":{"position":[[6,12]]}}}],["contribuiçõ",{"_index":4,"t":{"625":{"position":[[0,13]]}}}],["contribut",{"_index":6,"t":{"627":{"position":[[8,12]]}}}],["createconnect",{"_index":30,"t":{"767":{"position":[[0,16]]}}}],["createpool",{"_index":24,"t":{"742":{"position":[[0,10]]}}}],["createpoolclust",{"_index":37,"t":{"856":{"position":[[0,17]]}}}],["custom",{"_index":58,"t":{"927":{"position":[[6,6]]}}}],["data",{"_index":45,"t":{"905":{"position":[[4,4]]},"907":{"position":[[4,4]]},"909":{"position":[[4,4]]},"911":{"position":[[4,4]]}}}],["delet",{"_index":36,"t":{"822":{"position":[[0,6]]},"833":{"position":[[0,6]]}}}],["document",{"_index":8,"t":{"645":{"position":[[0,13]]}}}],["e",{"_index":1,"t":{"621":{"position":[[4,1]]},"915":{"position":[[9,1]]}}}],["error",{"_index":56,"t":{"919":{"position":[[14,7]]}}}],["exampl",{"_index":23,"t":{"738":{"position":[[0,8]]}}}],["extra",{"_index":13,"t":{"673":{"position":[[0,5]]}}}],["featur",{"_index":14,"t":{"673":{"position":[[6,8]]}}}],["frequent",{"_index":47,"t":{"913":{"position":[[0,10]]}}}],["guidelin",{"_index":7,"t":{"627":{"position":[[21,10]]}}}],["handl",{"_index":55,"t":{"919":{"position":[[7,6]]}}}],["história",{"_index":50,"t":{"915":{"position":[[0,8]]}}}],["insert",{"_index":31,"t":{"786":{"position":[[0,6]]},"845":{"position":[[0,6]]}}}],["multi",{"_index":46,"t":{"907":{"position":[[16,6]]},"911":{"position":[[16,6]]}}}],["mysql",{"_index":15,"t":{"682":{"position":[[0,5]]},"901":{"position":[[0,5]]}}}],["mysql2",{"_index":9,"t":{"655":{"position":[[0,6]]},"712":{"position":[[6,6]]},"915":{"position":[[20,6]]}}}],["o",{"_index":52,"t":{"915":{"position":[[18,1]]}}}],["packet",{"_index":42,"t":{"903":{"position":[[15,6]]},"905":{"position":[[9,6]]},"907":{"position":[[9,6]]},"909":{"position":[[9,6]]},"911":{"position":[[9,6]]},"929":{"position":[[15,6]]}}}],["pool",{"_index":38,"t":{"886":{"position":[[0,4]]}}}],["porqu",{"_index":51,"t":{"915":{"position":[[11,6]]}}}],["prepar",{"_index":19,"t":{"699":{"position":[[0,8]]},"765":{"position":[[0,8]]}}}],["procedur",{"_index":40,"t":{"903":{"position":[[0,9]]},"929":{"position":[[0,9]]}}}],["promis",{"_index":17,"t":{"691":{"position":[[0,7]]}}}],["proxi",{"_index":39,"t":{"901":{"position":[[6,5]]}}}],["queri",{"_index":35,"t":{"820":{"position":[[7,7]]}}}],["question",{"_index":49,"t":{"913":{"position":[[17,9]]}}}],["request",{"_index":12,"t":{"669":{"position":[[22,7]]}}}],["row",{"_index":43,"t":{"903":{"position":[[22,4]]},"905":{"position":[[0,3]]},"907":{"position":[[0,3]]},"909":{"position":[[0,3],[16,4]]},"911":{"position":[[0,3],[38,3]]}}}],["select",{"_index":32,"t":{"798":{"position":[[0,6]]},"875":{"position":[[0,6]]}}}],["server",{"_index":16,"t":{"682":{"position":[[6,6]]},"899":{"position":[[0,6]]}}}],["simpl",{"_index":34,"t":{"820":{"position":[[0,6]]}}}],["stabil",{"_index":53,"t":{"917":{"position":[[0,9]]}}}],["statement",{"_index":20,"t":{"699":{"position":[[9,10]]},"765":{"position":[[9,10]]},"907":{"position":[[23,11]]},"911":{"position":[[23,10]]}}}],["switch",{"_index":11,"t":{"669":{"position":[[15,6]]}}}],["typescript",{"_index":22,"t":{"712":{"position":[[18,10]]}}}],["updat",{"_index":33,"t":{"808":{"position":[[0,6]]},"888":{"position":[[0,6]]}}}],["us",{"_index":21,"t":{"712":{"position":[[0,5]]}}}],["watcher",{"_index":26,"t":{"761":{"position":[[7,7]]}}}],["websit",{"_index":5,"t":{"627":{"position":[[0,7]]}}}],["wrapper",{"_index":18,"t":{"691":{"position":[[8,8]]}}}]],"pipeline":["stemmer"]}},{"documents":[{"i":629,"t":"Environment","u":"/node-mysql2/pt-BR/docs/contributing/website","h":"#environment","p":627},{"i":631,"t":"Development","u":"/node-mysql2/pt-BR/docs/contributing/website","h":"#development","p":627},{"i":633,"t":"Extras Components","u":"/node-mysql2/pt-BR/docs/contributing/website","h":"#extras-components","p":627},{"i":635,"t":"History","u":"/node-mysql2/pt-BR/docs/contributing/website","h":"#history","p":627},{"i":637,"t":"Stability","u":"/node-mysql2/pt-BR/docs/contributing/website","h":"#stability","p":627},{"i":639,"t":"FAQ","u":"/node-mysql2/pt-BR/docs/contributing/website","h":"#faq","p":627},{"i":641,"t":"ExternalCodeEmbed","u":"/node-mysql2/pt-BR/docs/contributing/website","h":"#externalcodeembed","p":627},{"i":643,"t":"Running Tests","u":"/node-mysql2/pt-BR/docs/contributing/website","h":"#running-tests","p":627},{"i":647,"t":"Examples","u":"/node-mysql2/pt-BR/docs/documentation","h":"#examples","p":645},{"i":649,"t":"Known incompatibilities with Node MySQL","u":"/node-mysql2/pt-BR/docs/documentation","h":"#known-incompatibilities-with-node-mysql","p":645},{"i":651,"t":"Other Resources","u":"/node-mysql2/pt-BR/docs/documentation","h":"#other-resources","p":645},{"i":653,"t":"Benchmarks","u":"/node-mysql2/pt-BR/docs/documentation","h":"#benchmarks","p":645},{"i":657,"t":"Instalação","u":"/node-mysql2/pt-BR/docs","h":"#instalação","p":655},{"i":659,"t":"Primeira Consulta (Query)","u":"/node-mysql2/pt-BR/docs","h":"#primeira-consulta-query","p":655},{"i":661,"t":"Usando Instruções Preparadas (Prepared Statements)","u":"/node-mysql2/pt-BR/docs","h":"#usando-instruções-preparadas-prepared-statements","p":655},{"i":663,"t":"Usando Conjunto de Conexões (pools)","u":"/node-mysql2/pt-BR/docs","h":"#using-connection-pools","p":655},{"i":665,"t":"Usando o Promise Wrapper","u":"/node-mysql2/pt-BR/docs","h":"#usando-o-promise-wrapper","p":655},{"i":667,"t":"Resultados em Array","u":"/node-mysql2/pt-BR/docs","h":"#resultados-em-array","p":655},{"i":671,"t":"Multi-factor authentication","u":"/node-mysql2/pt-BR/docs/documentation/authentication-switch","h":"#multi-factor-authentication","p":669},{"i":674,"t":"Named placeholders","u":"/node-mysql2/pt-BR/docs/documentation/extras","h":"#named-placeholders","p":673},{"i":676,"t":"Receiving rows as array of columns instead of hash with column name as key:","u":"/node-mysql2/pt-BR/docs/documentation/extras","h":"#receiving-rows-as-array-of-columns-instead-of-hash-with-column-name-as-key","p":673},{"i":678,"t":"Sending tabular data with 'load infile' and local stream:","u":"/node-mysql2/pt-BR/docs/documentation/extras","h":"#sending-tabular-data-with-load-infile-and-local-stream","p":673},{"i":680,"t":"Connecting using custom stream:","u":"/node-mysql2/pt-BR/docs/documentation/extras","h":"#connecting-using-custom-stream","p":673},{"i":683,"t":"Server","u":"/node-mysql2/pt-BR/docs/documentation/mysql-server","h":"#server","p":682},{"i":685,"t":"Events","u":"/node-mysql2/pt-BR/docs/documentation/mysql-server","h":"#events","p":682},{"i":687,"t":"Connection","u":"/node-mysql2/pt-BR/docs/documentation/mysql-server","h":"#connection","p":682},{"i":689,"t":"Events","u":"/node-mysql2/pt-BR/docs/documentation/mysql-server","h":"#events-1","p":682},{"i":693,"t":"Basic Promise","u":"/node-mysql2/pt-BR/docs/documentation/promise-wrapper","h":"#basic-promise","p":691},{"i":695,"t":"ES7 Async Await","u":"/node-mysql2/pt-BR/docs/documentation/promise-wrapper","h":"#es7-async-await","p":691},{"i":697,"t":"With CO","u":"/node-mysql2/pt-BR/docs/documentation/promise-wrapper","h":"#with-co","p":691},{"i":700,"t":"Automatic creation, cached and re-used by connection","u":"/node-mysql2/pt-BR/docs/documentation/prepared-statements","h":"#automatic-creation-cached-and-re-used-by-connection","p":699},{"i":702,"t":"Manual prepare / execute","u":"/node-mysql2/pt-BR/docs/documentation/prepared-statements","h":"#manual-prepare--execute","p":699},{"i":704,"t":"Configuration","u":"/node-mysql2/pt-BR/docs/documentation/prepared-statements","h":"#configuration","p":699},{"i":706,"t":"Serialization of bind parameters","u":"/node-mysql2/pt-BR/docs/documentation/prepared-statements","h":"#serialization-of-bind-parameters","p":699},{"i":708,"t":"Prepared Statements Helper","u":"/node-mysql2/pt-BR/docs/documentation/prepared-statements","h":"#prepared-statements-helper","p":699},{"i":710,"t":"Examples","u":"/node-mysql2/pt-BR/docs/documentation/prepared-statements","h":"#examples","p":699},{"i":713,"t":"Installation","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#installation","p":712},{"i":715,"t":"Usage","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#usage","p":712},{"i":717,"t":"Connection","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#connection","p":712},{"i":719,"t":"Pool Connection","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#pool-connection","p":712},{"i":721,"t":"Query and Execute","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#query-and-execute","p":712},{"i":723,"t":"Type Specification","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#type-specification","p":712},{"i":724,"t":"RowDataPacket[]","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#rowdatapacket","p":712},{"i":726,"t":"RowDataPacket[][]","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#rowdatapacket-1","p":712},{"i":728,"t":"ResultSetHeader","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#resultsetheader","p":712},{"i":730,"t":"ResultSetHeader[]","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#resultsetheader-1","p":712},{"i":732,"t":"ProcedureCallPacket","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#procedurecallpacket","p":712},{"i":734,"t":"OkPacket","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#okpacket","p":712},{"i":736,"t":"Examples","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#examples","p":712},{"i":740,"t":"Examples using MySQL server API","u":"/node-mysql2/pt-BR/docs/examples","h":"#examples-using-mysql-server-api","p":738},{"i":744,"t":"createPool(connectionUri)","u":"/node-mysql2/pt-BR/docs/examples/connections/create-pool","h":"#createpoolconnectionuri","p":742},{"i":746,"t":"createPool(config)","u":"/node-mysql2/pt-BR/docs/examples/connections/create-pool","h":"#createpoolconfig","p":742},{"i":748,"t":"createPool(config) — SHA1","u":"/node-mysql2/pt-BR/docs/examples/connections/create-pool","h":"#createpoolconfig--sha1","p":742},{"i":750,"t":"createPool(config) — SSL","u":"/node-mysql2/pt-BR/docs/examples/connections/create-pool","h":"#createpoolconfig--ssl","p":742},{"i":752,"t":"createPool(config) — RDS SSL","u":"/node-mysql2/pt-BR/docs/examples/connections/create-pool","h":"#createpoolconfig--rds-ssl","p":742},{"i":754,"t":"Related Links","u":"/node-mysql2/pt-BR/docs/examples/connections/create-pool","h":"#related-links","p":742},{"i":756,"t":"createPool(config) — Socks","u":"/node-mysql2/pt-BR/docs/examples/connections/create-pool","h":"#createpoolconfig--socks","p":742},{"i":758,"t":"Glossary","u":"/node-mysql2/pt-BR/docs/examples/connections/create-pool","h":"#glossary","p":742},{"i":759,"t":"PoolOptions","u":"/node-mysql2/pt-BR/docs/examples/connections/create-pool","h":"#pooloptions","p":742},{"i":769,"t":"createConnection(connectionUri)","u":"/node-mysql2/pt-BR/docs/examples/connections/create-connection","h":"#createconnectionconnectionuri","p":767},{"i":771,"t":"createConnection(config)","u":"/node-mysql2/pt-BR/docs/examples/connections/create-connection","h":"#createconnectionconfig","p":767},{"i":773,"t":"createConnection(config) — SHA1","u":"/node-mysql2/pt-BR/docs/examples/connections/create-connection","h":"#createconnectionconfig--sha1","p":767},{"i":775,"t":"createConnection(config) — SSL","u":"/node-mysql2/pt-BR/docs/examples/connections/create-connection","h":"#createconnectionconfig--ssl","p":767},{"i":777,"t":"createConnection(config) — RDS SSL","u":"/node-mysql2/pt-BR/docs/examples/connections/create-connection","h":"#createconnectionconfig--rds-ssl","p":767},{"i":779,"t":"Related Links","u":"/node-mysql2/pt-BR/docs/examples/connections/create-connection","h":"#related-links","p":767},{"i":781,"t":"createConnection(config) — Socks","u":"/node-mysql2/pt-BR/docs/examples/connections/create-connection","h":"#createconnectionconfig--socks","p":767},{"i":783,"t":"Glossary","u":"/node-mysql2/pt-BR/docs/examples/connections/create-connection","h":"#glossary","p":767},{"i":784,"t":"ConnectionOptions","u":"/node-mysql2/pt-BR/docs/examples/connections/create-connection","h":"#connectionoptions","p":767},{"i":787,"t":"execute(sql, values)","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/insert","h":"#executesql-values","p":786},{"i":789,"t":"execute(options)","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/insert","h":"#executeoptions","p":786},{"i":791,"t":"execute(options, values)","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/insert","h":"#executeoptions-values","p":786},{"i":793,"t":"Glossary","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/insert","h":"#glossary","p":786},{"i":794,"t":"ResultSetHeader","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/insert","h":"#resultsetheader","p":786},{"i":796,"t":"QueryOptions","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/insert","h":"#queryoptions","p":786},{"i":799,"t":"execute(sql, values)","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/select","h":"#executesql-values","p":798},{"i":801,"t":"execute(options)","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/select","h":"#executeoptions","p":798},{"i":803,"t":"execute(options, values)","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/select","h":"#executeoptions-values","p":798},{"i":805,"t":"Glossary","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/select","h":"#glossary","p":798},{"i":806,"t":"QueryOptions","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/select","h":"#queryoptions","p":798},{"i":809,"t":"execute(sql, values)","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/update","h":"#executesql-values","p":808},{"i":811,"t":"execute(options)","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/update","h":"#executeoptions","p":808},{"i":813,"t":"execute(options, values)","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/update","h":"#executeoptions-values","p":808},{"i":815,"t":"Glossary","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/update","h":"#glossary","p":808},{"i":816,"t":"ResultSetHeader","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/update","h":"#resultsetheader","p":808},{"i":818,"t":"QueryOptions","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/update","h":"#queryoptions","p":808},{"i":824,"t":"query(sql)","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/delete","h":"#querysql","p":822},{"i":826,"t":"query(options)","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/delete","h":"#queryoptions","p":822},{"i":828,"t":"Glossary","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/delete","h":"#glossary","p":822},{"i":829,"t":"ResultSetHeader","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/delete","h":"#resultsetheader","p":822},{"i":831,"t":"QueryOptions","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/delete","h":"#queryoptions-1","p":822},{"i":834,"t":"execute(sql, values)","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/delete","h":"#executesql-values","p":833},{"i":836,"t":"execute(options)","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/delete","h":"#executeoptions","p":833},{"i":838,"t":"execute(options, values)","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/delete","h":"#executeoptions-values","p":833},{"i":840,"t":"Glossary","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/delete","h":"#glossary","p":833},{"i":841,"t":"ResultSetHeader","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/delete","h":"#resultsetheader","p":833},{"i":843,"t":"QueryOptions","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/delete","h":"#queryoptions","p":833},{"i":847,"t":"query(sql)","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/insert","h":"#querysql","p":845},{"i":849,"t":"query(options)","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/insert","h":"#queryoptions","p":845},{"i":851,"t":"Glossary","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/insert","h":"#glossary","p":845},{"i":852,"t":"ResultSetHeader","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/insert","h":"#resultsetheader","p":845},{"i":854,"t":"QueryOptions","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/insert","h":"#queryoptions-1","p":845},{"i":858,"t":"add(group, connectionUri)","u":"/node-mysql2/pt-BR/docs/examples/connections/createPoolCluster","h":"#addgroup-connectionuri","p":856},{"i":860,"t":"add(group, config)","u":"/node-mysql2/pt-BR/docs/examples/connections/createPoolCluster","h":"#addgroup-config","p":856},{"i":862,"t":"add(group, config) — SHA1","u":"/node-mysql2/pt-BR/docs/examples/connections/createPoolCluster","h":"#addgroup-config--sha1","p":856},{"i":864,"t":"add(group, config) — SSL","u":"/node-mysql2/pt-BR/docs/examples/connections/createPoolCluster","h":"#addgroup-config--ssl","p":856},{"i":866,"t":"add(group, config) — RDS SSL","u":"/node-mysql2/pt-BR/docs/examples/connections/createPoolCluster","h":"#addgroup-config--rds-ssl","p":856},{"i":868,"t":"Related Links","u":"/node-mysql2/pt-BR/docs/examples/connections/createPoolCluster","h":"#related-links","p":856},{"i":870,"t":"add(group, config) — Socks","u":"/node-mysql2/pt-BR/docs/examples/connections/createPoolCluster","h":"#addgroup-config--socks","p":856},{"i":872,"t":"Glossary","u":"/node-mysql2/pt-BR/docs/examples/connections/createPoolCluster","h":"#glossary","p":856},{"i":873,"t":"PoolOptions","u":"/node-mysql2/pt-BR/docs/examples/connections/createPoolCluster","h":"#pooloptions","p":856},{"i":877,"t":"query(sql)","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/select","h":"#querysql","p":875},{"i":879,"t":"query(options)","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/select","h":"#queryoptions","p":875},{"i":881,"t":"query(options) — Row as Array","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/select","h":"#queryoptions--row-as-array","p":875},{"i":883,"t":"Glossary","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/select","h":"#glossary","p":875},{"i":884,"t":"QueryOptions","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/select","h":"#queryoptions-1","p":875},{"i":890,"t":"query(sql)","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/update","h":"#querysql","p":888},{"i":892,"t":"query(options)","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/update","h":"#queryoptions","p":888},{"i":894,"t":"Glossary","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/update","h":"#glossary","p":888},{"i":895,"t":"ResultSetHeader","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/update","h":"#resultsetheader","p":888},{"i":897,"t":"QueryOptions","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/update","h":"#queryoptions-1","p":888},{"i":921,"t":"Using callbacks","u":"/node-mysql2/pt-BR/docs/faq/how-to-handle-errors","h":"#using-callbacks","p":919},{"i":923,"t":"Using promises","u":"/node-mysql2/pt-BR/docs/faq/how-to-handle-errors","h":"#using-promises","p":919},{"i":925,"t":"Related Links","u":"/node-mysql2/pt-BR/docs/faq/how-to-handle-errors","h":"#related-links","p":919}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/629",[0,5.484]],["t/631",[1,5.484]],["t/633",[2,4.332,3,4.332]],["t/635",[4,5.484]],["t/637",[5,5.484]],["t/639",[6,5.484]],["t/641",[7,5.484]],["t/643",[8,4.332,9,4.332]],["t/647",[10,4.119]],["t/649",[11,3.05,12,3.05,13,3.05,14,2.697]],["t/651",[15,5.484]],["t/653",[16,5.484]],["t/657",[17,5.484]],["t/659",[18,3.58,19,3.58,20,3.166]],["t/661",[21,2.147,22,2.657,23,2.657,24,2.147,25,2.35]],["t/663",[21,2.147,26,2.657,27,2.657,28,2.657,29,2.35]],["t/665",[21,2.465,30,3.05,31,2.465,32,3.05]],["t/667",[33,3.58,34,3.58,35,2.893]],["t/671",[36,3.58,37,3.58,38,3.58]],["t/674",[39,3.831,40,4.332]],["t/676",[35,1.417,39,1.55,41,1.753,42,1.55,43,2.97,44,1.753,45,1.753,46,1.753]],["t/678",[47,2.113,48,2.113,49,2.113,50,2.113,51,2.113,52,2.113,53,1.868]],["t/680",[53,2.697,54,2.153,55,2.153,56,3.05]],["t/683",[57,4.85]],["t/685",[58,4.85]],["t/687",[54,3.87]],["t/689",[58,4.85]],["t/693",[31,3.5,59,4.332]],["t/695",[60,3.58,61,3.58,62,3.58]],["t/697",[63,5.484]],["t/700",[54,1.661,55,1.661,64,2.354,65,2.354,66,2.354,67,2.354]],["t/702",[24,2.465,68,3.05,69,1.483,70,2.697]],["t/704",[71,5.484]],["t/706",[72,3.58,73,3.58,74,3.58]],["t/708",[24,2.893,25,3.166,75,3.58]],["t/710",[10,4.119]],["t/713",[76,5.484]],["t/715",[77,5.484]],["t/717",[54,3.87]],["t/719",[29,3.831,54,3.057]],["t/721",[20,3.831,70,3.831]],["t/723",[78,4.332,79,4.332]],["t/724",[80,4.85]],["t/726",[80,4.85]],["t/728",[81,3.329]],["t/730",[81,3.329]],["t/732",[82,5.484]],["t/734",[83,5.484]],["t/736",[10,4.119]],["t/740",[10,1.996,14,2.35,55,1.875,57,2.35,84,2.657]],["t/744",[85,5.484]],["t/746",[86,3.87]],["t/748",[69,1.74,86,2.526,87,2.893]],["t/750",[69,1.74,86,2.526,88,2.391]],["t/752",[69,1.483,86,2.153,88,2.037,89,2.465]],["t/754",[90,3.254,91,3.254]],["t/756",[69,1.74,86,2.526,92,2.893]],["t/758",[93,2.954]],["t/759",[94,4.85]],["t/769",[95,5.484]],["t/771",[96,3.87]],["t/773",[69,1.74,87,2.893,96,2.526]],["t/775",[69,1.74,88,2.391,96,2.526]],["t/777",[69,1.483,88,2.037,89,2.465,96,2.153]],["t/779",[90,3.254,91,3.254]],["t/781",[69,1.74,92,2.893,96,2.526]],["t/783",[93,2.954]],["t/784",[97,5.484]],["t/787",[98,3.254,99,2.63]],["t/789",[100,3.329]],["t/791",[99,2.63,100,2.63]],["t/793",[93,2.954]],["t/794",[81,3.329]],["t/796",[101,3.329]],["t/799",[98,3.254,99,2.63]],["t/801",[100,3.329]],["t/803",[99,2.63,100,2.63]],["t/805",[93,2.954]],["t/806",[101,3.329]],["t/809",[98,3.254,99,2.63]],["t/811",[100,3.329]],["t/813",[99,2.63,100,2.63]],["t/815",[93,2.954]],["t/816",[81,3.329]],["t/818",[101,3.329]],["t/824",[102,4.119]],["t/826",[103,3.87]],["t/828",[93,2.954]],["t/829",[81,3.329]],["t/831",[101,3.329]],["t/834",[98,3.254,99,2.63]],["t/836",[100,3.329]],["t/838",[99,2.63,100,2.63]],["t/840",[93,2.954]],["t/841",[81,3.329]],["t/843",[101,3.329]],["t/847",[102,4.119]],["t/849",[103,3.87]],["t/851",[93,2.954]],["t/852",[81,3.329]],["t/854",[101,3.329]],["t/858",[104,2.893,105,4.332]],["t/860",[104,2.893,106,3.057]],["t/862",[69,1.483,87,2.465,104,2.037,106,2.153]],["t/864",[69,1.483,88,2.037,104,2.037,106,2.153]],["t/866",[69,1.292,88,1.775,89,2.147,104,1.775,106,1.875]],["t/868",[90,3.254,91,3.254]],["t/870",[69,1.483,92,2.465,104,2.037,106,2.153]],["t/872",[93,2.954]],["t/873",[94,4.85]],["t/877",[102,4.119]],["t/879",[103,3.87]],["t/881",[35,2.465,42,2.697,69,1.483,103,2.153]],["t/883",[93,2.954]],["t/884",[101,3.329]],["t/890",[102,4.119]],["t/892",[103,3.87]],["t/894",[93,2.954]],["t/895",[81,3.329]],["t/897",[101,3.329]],["t/921",[55,3.057,107,4.332]],["t/923",[31,3.5,55,3.057]],["t/925",[90,3.254,91,3.254]]],"invertedIndex":[["",{"_index":69,"t":{"702":{"position":[[15,1]]},"748":{"position":[[19,1]]},"750":{"position":[[19,1]]},"752":{"position":[[19,1]]},"756":{"position":[[19,1]]},"773":{"position":[[25,1]]},"775":{"position":[[25,1]]},"777":{"position":[[25,1]]},"781":{"position":[[25,1]]},"862":{"position":[[19,1]]},"864":{"position":[[19,1]]},"866":{"position":[[19,1]]},"870":{"position":[[19,1]]},"881":{"position":[[15,1]]}}}],["add(group",{"_index":104,"t":{"858":{"position":[[0,10]]},"860":{"position":[[0,10]]},"862":{"position":[[0,10]]},"864":{"position":[[0,10]]},"866":{"position":[[0,10]]},"870":{"position":[[0,10]]}}}],["api",{"_index":84,"t":{"740":{"position":[[28,3]]}}}],["array",{"_index":35,"t":{"667":{"position":[[14,5]]},"676":{"position":[[18,5]]},"881":{"position":[[24,5]]}}}],["async",{"_index":61,"t":{"695":{"position":[[4,5]]}}}],["authent",{"_index":38,"t":{"671":{"position":[[13,14]]}}}],["automat",{"_index":64,"t":{"700":{"position":[[0,9]]}}}],["await",{"_index":62,"t":{"695":{"position":[[10,5]]}}}],["basic",{"_index":59,"t":{"693":{"position":[[0,5]]}}}],["benchmark",{"_index":16,"t":{"653":{"position":[[0,10]]}}}],["bind",{"_index":73,"t":{"706":{"position":[[17,4]]}}}],["cach",{"_index":66,"t":{"700":{"position":[[20,6]]}}}],["callback",{"_index":107,"t":{"921":{"position":[[6,9]]}}}],["co",{"_index":63,"t":{"697":{"position":[[5,2]]}}}],["column",{"_index":43,"t":{"676":{"position":[[27,7],[56,6]]}}}],["compon",{"_index":3,"t":{"633":{"position":[[7,10]]}}}],["conexõ",{"_index":28,"t":{"663":{"position":[[19,8]]}}}],["config",{"_index":106,"t":{"860":{"position":[[11,7]]},"862":{"position":[[11,7]]},"864":{"position":[[11,7]]},"866":{"position":[[11,7]]},"870":{"position":[[11,7]]}}}],["configur",{"_index":71,"t":{"704":{"position":[[0,13]]}}}],["conjunto",{"_index":26,"t":{"663":{"position":[[7,8]]}}}],["connect",{"_index":54,"t":{"680":{"position":[[0,10]]},"687":{"position":[[0,10]]},"700":{"position":[[42,10]]},"717":{"position":[[0,10]]},"719":{"position":[[5,10]]}}}],["connectionopt",{"_index":97,"t":{"784":{"position":[[0,17]]}}}],["connectionuri",{"_index":105,"t":{"858":{"position":[[11,14]]}}}],["consulta",{"_index":19,"t":{"659":{"position":[[9,8]]}}}],["createconnection(config",{"_index":96,"t":{"771":{"position":[[0,24]]},"773":{"position":[[0,24]]},"775":{"position":[[0,24]]},"777":{"position":[[0,24]]},"781":{"position":[[0,24]]}}}],["createconnection(connectionuri",{"_index":95,"t":{"769":{"position":[[0,31]]}}}],["createpool(config",{"_index":86,"t":{"746":{"position":[[0,18]]},"748":{"position":[[0,18]]},"750":{"position":[[0,18]]},"752":{"position":[[0,18]]},"756":{"position":[[0,18]]}}}],["createpool(connectionuri",{"_index":85,"t":{"744":{"position":[[0,25]]}}}],["creation",{"_index":65,"t":{"700":{"position":[[10,9]]}}}],["custom",{"_index":56,"t":{"680":{"position":[[17,6]]}}}],["data",{"_index":49,"t":{"678":{"position":[[16,4]]}}}],["de",{"_index":27,"t":{"663":{"position":[[16,2]]}}}],["develop",{"_index":1,"t":{"631":{"position":[[0,11]]}}}],["em",{"_index":34,"t":{"667":{"position":[[11,2]]}}}],["environ",{"_index":0,"t":{"629":{"position":[[0,11]]}}}],["es7",{"_index":60,"t":{"695":{"position":[[0,3]]}}}],["event",{"_index":58,"t":{"685":{"position":[[0,6]]},"689":{"position":[[0,6]]}}}],["exampl",{"_index":10,"t":{"647":{"position":[[0,8]]},"710":{"position":[[0,8]]},"736":{"position":[[0,8]]},"740":{"position":[[0,8]]}}}],["execut",{"_index":70,"t":{"702":{"position":[[17,7]]},"721":{"position":[[10,7]]}}}],["execute(opt",{"_index":100,"t":{"789":{"position":[[0,16]]},"791":{"position":[[0,16]]},"801":{"position":[[0,16]]},"803":{"position":[[0,16]]},"811":{"position":[[0,16]]},"813":{"position":[[0,16]]},"836":{"position":[[0,16]]},"838":{"position":[[0,16]]}}}],["execute(sql",{"_index":98,"t":{"787":{"position":[[0,12]]},"799":{"position":[[0,12]]},"809":{"position":[[0,12]]},"834":{"position":[[0,12]]}}}],["externalcodeemb",{"_index":7,"t":{"641":{"position":[[0,17]]}}}],["extra",{"_index":2,"t":{"633":{"position":[[0,6]]}}}],["factor",{"_index":37,"t":{"671":{"position":[[6,6]]}}}],["faq",{"_index":6,"t":{"639":{"position":[[0,3]]}}}],["glossari",{"_index":93,"t":{"758":{"position":[[0,8]]},"783":{"position":[[0,8]]},"793":{"position":[[0,8]]},"805":{"position":[[0,8]]},"815":{"position":[[0,8]]},"828":{"position":[[0,8]]},"840":{"position":[[0,8]]},"851":{"position":[[0,8]]},"872":{"position":[[0,8]]},"883":{"position":[[0,8]]},"894":{"position":[[0,8]]}}}],["hash",{"_index":45,"t":{"676":{"position":[[46,4]]}}}],["helper",{"_index":75,"t":{"708":{"position":[[20,6]]}}}],["histori",{"_index":4,"t":{"635":{"position":[[0,7]]}}}],["incompat",{"_index":12,"t":{"649":{"position":[[6,17]]}}}],["infil",{"_index":51,"t":{"678":{"position":[[32,7]]}}}],["instal",{"_index":76,"t":{"713":{"position":[[0,12]]}}}],["instalação",{"_index":17,"t":{"657":{"position":[[0,10]]}}}],["instead",{"_index":44,"t":{"676":{"position":[[35,7]]}}}],["instruçõ",{"_index":22,"t":{"661":{"position":[[7,10]]}}}],["key",{"_index":46,"t":{"676":{"position":[[71,4]]}}}],["known",{"_index":11,"t":{"649":{"position":[[0,5]]}}}],["link",{"_index":91,"t":{"754":{"position":[[8,5]]},"779":{"position":[[8,5]]},"868":{"position":[[8,5]]},"925":{"position":[[8,5]]}}}],["load",{"_index":50,"t":{"678":{"position":[[26,5]]}}}],["local",{"_index":52,"t":{"678":{"position":[[44,5]]}}}],["manual",{"_index":68,"t":{"702":{"position":[[0,6]]}}}],["multi",{"_index":36,"t":{"671":{"position":[[0,5]]}}}],["mysql",{"_index":14,"t":{"649":{"position":[[34,5]]},"740":{"position":[[15,5]]}}}],["name",{"_index":39,"t":{"674":{"position":[[0,5]]},"676":{"position":[[63,4]]}}}],["node",{"_index":13,"t":{"649":{"position":[[29,4]]}}}],["o",{"_index":30,"t":{"665":{"position":[[7,1]]}}}],["okpacket",{"_index":83,"t":{"734":{"position":[[0,8]]}}}],["paramet",{"_index":74,"t":{"706":{"position":[[22,10]]}}}],["placehold",{"_index":40,"t":{"674":{"position":[[6,12]]}}}],["pool",{"_index":29,"t":{"663":{"position":[[28,7]]},"719":{"position":[[0,4]]}}}],["poolopt",{"_index":94,"t":{"759":{"position":[[0,11]]},"873":{"position":[[0,11]]}}}],["prepar",{"_index":24,"t":{"661":{"position":[[29,9]]},"702":{"position":[[7,7]]},"708":{"position":[[0,8]]}}}],["preparada",{"_index":23,"t":{"661":{"position":[[18,10]]}}}],["primeira",{"_index":18,"t":{"659":{"position":[[0,8]]}}}],["procedurecallpacket",{"_index":82,"t":{"732":{"position":[[0,19]]}}}],["promis",{"_index":31,"t":{"665":{"position":[[9,7]]},"693":{"position":[[6,7]]},"923":{"position":[[6,8]]}}}],["queri",{"_index":20,"t":{"659":{"position":[[18,7]]},"721":{"position":[[0,5]]}}}],["query(opt",{"_index":103,"t":{"826":{"position":[[0,14]]},"849":{"position":[[0,14]]},"879":{"position":[[0,14]]},"881":{"position":[[0,14]]},"892":{"position":[[0,14]]}}}],["query(sql",{"_index":102,"t":{"824":{"position":[[0,10]]},"847":{"position":[[0,10]]},"877":{"position":[[0,10]]},"890":{"position":[[0,10]]}}}],["queryopt",{"_index":101,"t":{"796":{"position":[[0,12]]},"806":{"position":[[0,12]]},"818":{"position":[[0,12]]},"831":{"position":[[0,12]]},"843":{"position":[[0,12]]},"854":{"position":[[0,12]]},"884":{"position":[[0,12]]},"897":{"position":[[0,12]]}}}],["rd",{"_index":89,"t":{"752":{"position":[[21,3]]},"777":{"position":[[27,3]]},"866":{"position":[[21,3]]}}}],["re",{"_index":67,"t":{"700":{"position":[[31,2]]}}}],["receiv",{"_index":41,"t":{"676":{"position":[[0,9]]}}}],["relat",{"_index":90,"t":{"754":{"position":[[0,7]]},"779":{"position":[[0,7]]},"868":{"position":[[0,7]]},"925":{"position":[[0,7]]}}}],["resourc",{"_index":15,"t":{"651":{"position":[[6,9]]}}}],["resultado",{"_index":33,"t":{"667":{"position":[[0,10]]}}}],["resultsethead",{"_index":81,"t":{"728":{"position":[[0,15]]},"730":{"position":[[0,17]]},"794":{"position":[[0,15]]},"816":{"position":[[0,15]]},"829":{"position":[[0,15]]},"841":{"position":[[0,15]]},"852":{"position":[[0,15]]},"895":{"position":[[0,15]]}}}],["row",{"_index":42,"t":{"676":{"position":[[10,4]]},"881":{"position":[[17,3]]}}}],["rowdatapacket",{"_index":80,"t":{"724":{"position":[[0,15]]},"726":{"position":[[0,17]]}}}],["run",{"_index":8,"t":{"643":{"position":[[0,7]]}}}],["send",{"_index":47,"t":{"678":{"position":[[0,7]]}}}],["serial",{"_index":72,"t":{"706":{"position":[[0,13]]}}}],["server",{"_index":57,"t":{"683":{"position":[[0,6]]},"740":{"position":[[21,6]]}}}],["sha1",{"_index":87,"t":{"748":{"position":[[21,4]]},"773":{"position":[[27,4]]},"862":{"position":[[21,4]]}}}],["sock",{"_index":92,"t":{"756":{"position":[[21,5]]},"781":{"position":[[27,5]]},"870":{"position":[[21,5]]}}}],["specif",{"_index":79,"t":{"723":{"position":[[5,13]]}}}],["ssl",{"_index":88,"t":{"750":{"position":[[21,3]]},"752":{"position":[[25,3]]},"775":{"position":[[27,3]]},"777":{"position":[[31,3]]},"864":{"position":[[21,3]]},"866":{"position":[[25,3]]}}}],["stabil",{"_index":5,"t":{"637":{"position":[[0,9]]}}}],["statement",{"_index":25,"t":{"661":{"position":[[39,11]]},"708":{"position":[[9,10]]}}}],["stream",{"_index":53,"t":{"678":{"position":[[50,7]]},"680":{"position":[[24,7]]}}}],["tabular",{"_index":48,"t":{"678":{"position":[[8,7]]}}}],["test",{"_index":9,"t":{"643":{"position":[[8,5]]}}}],["type",{"_index":78,"t":{"723":{"position":[[0,4]]}}}],["us",{"_index":55,"t":{"680":{"position":[[11,5]]},"700":{"position":[[34,4]]},"740":{"position":[[9,5]]},"921":{"position":[[0,5]]},"923":{"position":[[0,5]]}}}],["usag",{"_index":77,"t":{"715":{"position":[[0,5]]}}}],["usando",{"_index":21,"t":{"661":{"position":[[0,6]]},"663":{"position":[[0,6]]},"665":{"position":[[0,6]]}}}],["valu",{"_index":99,"t":{"787":{"position":[[13,7]]},"791":{"position":[[17,7]]},"799":{"position":[[13,7]]},"803":{"position":[[17,7]]},"809":{"position":[[13,7]]},"813":{"position":[[17,7]]},"834":{"position":[[13,7]]},"838":{"position":[[17,7]]}}}],["wrapper",{"_index":32,"t":{"665":{"position":[[17,7]]}}}]],"pipeline":["stemmer"]}},{"documents":[{"i":622,"t":"O MySQL2 é maioritariamente compatível com a API do Node MySQL. Uma incompatibilidade conhecida é que os valores em DECIMAL são retornados como strings, enquanto no Node MySQL eles são retornados como números. Isso inclui o resultado das funções SUM() e AVG() quando aplicadas a argumentos INTEGER. Isso é feito deliberadamente para evitar a perda de precisão - veja https://github.com/sidorares/node-mysql2/issues/935. info Se você encontrar qualquer outra incompatibilidade com o Node MySQL, por favor, reporte através do acompanhamento de Issues. Nós corrigiremos a incompatibilidade relatada como uma prioridade.","s":"API e Configuração","u":"/node-mysql2/pt-BR/docs/api-and-configurations","h":"","p":621},{"i":624,"t":"O protocolo interno é escrito por @sidorares MySQL-Native Constants, interpolação de parâmetros SQL, Pooling e a classe ConnectionConfig foram retirados do node-mysql O Código de atualização SSL é baseado no código feito por @TooTallNate Flags de API de conexão segura / comprimida compatíveis com o cliente MariaSQL. Contribuidores","s":"Agradecimentos","u":"/node-mysql2/pt-BR/docs/acknowledgements","h":"","p":623},{"i":626,"t":"Quer melhorar algo no MySQL2? Consulte o arquivo Contributing.md para instruções detalhadas sobre como começar.","s":"Contribuições","u":"/node-mysql2/pt-BR/docs/contributing","h":"","p":625},{"i":628,"t":"This website is built using Docusaurus 3, a modern static website generator.","s":"Website Contributing Guidelines","u":"/node-mysql2/pt-BR/docs/contributing/website","h":"","p":627},{"i":630,"t":"You will need these tools installed on your system: Node.js (18.x or higher)","s":"Environment","u":"/node-mysql2/pt-BR/docs/contributing/website","h":"#environment","p":627},{"i":632,"t":"Fork the MySQL2 repository. Download your forked repository locally. The website's workspace is the \"website\" directory in node-mysql2 root. Create a new branch from master (optional). Run cd website to enter the website workspace. Run npm ci to install the dependecies from package-lock.json. Run npm start to starting the local development. It will start a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. For Docusaurus complete documentation, please see here. CLI example git clone https://github.com/sidorares/node-mysql2.git git checkout -b website # optional cd /path-to/node-mysql2/website npm ci npm start Documentation is auto-generated from MDX files placed in these directories: ./docs/documentation ./docs/examples ./docs/faq Caution Note that the website has its own package.json. Please, do not install dependencies for the website in node-mysql2 root.","s":"Development","u":"/node-mysql2/pt-BR/docs/contributing/website","h":"#development","p":627},{"i":634,"t":"Every extra component is thoroughly documented with complete typings descriptions. Docusaurus Markdown Features: The MDX compiler transforms Markdown files to React components, and allows you to use JSX in your Markdown content. This enables you to easily interleave React components within your content, and create delightful learning experiences.","s":"Extras Components","u":"/node-mysql2/pt-BR/docs/contributing/website","h":"#extras-components","p":627},{"i":636,"t":"The History component displays version changes in a table format, listing version numbers alongside their changes. import { History } from '@site/src/components/History'; dica You can also utilize React components in the changes option. Example History Version Changes v1.0.0 Some change message.","s":"History","u":"/node-mysql2/pt-BR/docs/contributing/website","h":"#history","p":627},{"i":638,"t":"See the Stability Badges for more detais. import { Stability } from '@site/src/components/Stability'; dica You can also utilize React components in the message option. Available levels: 0, 1, 1.1, 1.2, 2 and 3. Example 2Stable 2Stable Some message.","s":"Stability","u":"/node-mysql2/pt-BR/docs/contributing/website","h":"#stability","p":627},{"i":640,"t":"import { FAQ } from '@site/src/components/FAQ'; > Some markdown (**MDX**) content. dica The FAQ component can be utilized in any section or page. Code blocks are compatible and can be used within the FAQ component. Example Title Some markdown (MDX) content.","s":"FAQ","u":"/node-mysql2/pt-BR/docs/contributing/website","h":"#faq","p":627},{"i":642,"t":"import { ExternalCodeEmbed } from '@site/src/components/ExternalCodeEmbed'; Example","s":"ExternalCodeEmbed","u":"/node-mysql2/pt-BR/docs/contributing/website","h":"#externalcodeembed","p":627},{"i":644,"t":"npm run test Check Prettier and ESLint rules for compliance npm run lintcheck Included in the GitHub Actions workflow. Check for typings errors 1Experimental Checks for MDX components are missing. npm run typecheck Included in the GitHub Actions workflow. Clear and build the website npm run clear npm run build Included in the GitHub Actions workflow. Fix issues from Prettier and ESLint rules npm run lint To prevent lint issues, it is recommended to execute this command before creating your commit. Not included in the GitHub Actions workflow.","s":"Running Tests","u":"/node-mysql2/pt-BR/docs/contributing/website","h":"#running-tests","p":627},{"i":646,"t":"MySQL2 aims to be a drop in replacement for Node MySQL. nota If you see any API incompatibilities with Node MySQL, please report via github issue. Not only MySQL2 offers better performance over Node MySQL, we also support these additional features: Prepared Statements Promise Wrapper Authentication Switch More Features MySQL Server Pooling SSL MySQL Compression Binary Log Protocol Client","s":"Documentation","u":"/node-mysql2/pt-BR/docs/documentation","h":"","p":645},{"i":648,"t":"Please check these examples for MySQL2.","s":"Examples","u":"/node-mysql2/pt-BR/docs/documentation","h":"#examples","p":645},{"i":650,"t":"zeroFill flag is ignored in type conversion. You need to check corresponding field's zeroFill flag and convert to string manually if this is of importance to you. DECIMAL and NEWDECIMAL types always returned as string unless you pass this config option: { decimalNumbers: true, } nota This option could lose precision on the number as Javascript Number is a Float!","s":"Known incompatibilities with Node MySQL","u":"/node-mysql2/pt-BR/docs/documentation","h":"#known-incompatibilities-with-node-mysql","p":645},{"i":652,"t":"Wire protocol documentation Node MySQL - Most popular node.js mysql client library node-mariasql - Bindings to libmariasql. One of the fastest clients node-libmysqlclient - Bindings to libmysqlclient go-mysql - MySQL Go client (prepared statements, binlog protocol, server)","s":"Other Resources","u":"/node-mysql2/pt-BR/docs/documentation","h":"#other-resources","p":645},{"i":654,"t":"https://gist.github.com/sidorares/ffe9ee9c423f763e3b6b npm run benchmarks node-mysql-benchmarks try to run example benchmarks on your system","s":"Benchmarks","u":"/node-mysql2/pt-BR/docs/documentation","h":"#benchmarks","p":645},{"i":656,"t":"Cliente MySQL para Node.js com foco em performance. Suporta instruções preparadas (prepared statements), Codificações non-utf8, protocolo de log binário (binary log protocol), compressão, SSL e muito mais.","s":"MySQL2","u":"/node-mysql2/pt-BR/docs","h":"","p":655},{"i":658,"t":"O MySQL2 não tem restrições nativas e pode ser instalado no Linux, Mac OS ou Windows sem qualquer problema. JavaScript TypeScript npm install --save mysql2 npm install --save mysql2 npm install --save-dev @types/node Para documentação e exemplos usando TypeScript, veja aqui.","s":"Instalação","u":"/node-mysql2/pt-BR/docs","h":"#instalação","p":655},{"i":660,"t":"Para explorar mais exemplos de consulta (queries), visite a seção de exemplos Consultas Simples e Instruções Preparadas (Prepared Statements). Promise Callback // Obtém o cliente import mysql from 'mysql2/promise'; // Cria a conexão com o Banco de Dados const connection = await mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', }); // Consulta simples try { const [results, fields] = await connection.query( 'SELECT * FROM `table` WHERE `name` = \"Page\" AND `age` > 45' ); console.log(results); // \"results\" contêm as linhas retornadas pelo servidor console.log(fields); // \"fields\" contêm metadados adicionais sobre os resultados, quando disponíveis } catch (err) { console.log(err); } // Utilizando espaços reservados (placeholders) try { const [results] = await connection.query( 'SELECT * FROM `table` WHERE `name` = ? AND `age` > ?', ['Page', 45] ); console.log(results); } catch (err) { console.log(err); } // Obtém o cliente const mysql = require('mysql2'); // Cria a conexão com o Banco de Dados const connection = mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', }); // Consulta simples connection.query( 'SELECT * FROM `table` WHERE `name` = \"Page\" AND `age` > 45', function (err, results, fields) { console.log(results); // \"results\" contêm as linhas retornadas pelo servidor console.log(fields); // \"fields\" contêm metadados adicionais sobre os resultados, quando disponíveis } ); // Utilizando espaços reservados (placeholders) connection.query( 'SELECT * FROM `table` WHERE `name` = ? AND `age` > ?', ['Page', 45], function (err, results) { console.log(results); } );","s":"Primeira Consulta (Query)","u":"/node-mysql2/pt-BR/docs","h":"#primeira-consulta-query","p":655},{"i":662,"t":"Com o MySQL2 você também pode obter Instruções Preparadas (Prepared Statements). Dessa forma o MySQL não precisa preparar um plano para a mesma consulta todas as vezes, resultando em um melhor desempenho. Se você não sabe por que isso é importante, veja essa discussão: Como as instruções preparadas (prepared statements) podem proteger contra ataques de injeção SQL O MySQL2 fornece o método auxiliar execute que irá preparar e consultar as declarações (statements) SQL. Além disso, você também pode usar os métodos prepare e unprepare para preparar ou desfazer a preparação de declarações (statements) manualmente, se necessário. Para explorar mais exemplos de Instruções Preparadas (Prepared Statements), visite a seção de exemplos Instruções Preparadas (Prepared Statements). Promise Callback import mysql from 'mysql2/promise'; try { // Cria a conexão com o Banco de Dados const connection = await mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', }); // \"execute\" irá chamar internamente a preparação e a consulta (query) const [results, fields] = await connection.execute( 'SELECT * FROM `table` WHERE `name` = ? AND `age` > ?', ['Rick C-137', 53] ); console.log(results); // \"results\" contêm as linhas retornadas pelo servidor console.log(fields); // \"fields\" contêm metadados adicionais sobre os resultados, quando disponíveis } catch (err) { console.log(err); } const mysql = require('mysql2'); // Cria a conexão com o Banco de Dados const connection = mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', }); // \"execute\" irá chamar internamente a preparação e a consulta (query) connection.execute( 'SELECT * FROM `table` WHERE `name` = ? AND `age` > ?', ['Rick C-137', 53], function (err, results, fields) { console.log(results); // \"results\" contêm as linhas retornadas pelo servidor console.log(fields); // \"fields\" contêm metadados adicionais sobre os resultados, quando disponíveis } ); dica Se você executar a mesma declaração novamente, ela será selecionada a partir do LRU Cache, o que economizará tempo de preparação da consulta e proporcionará melhor desempenho.","s":"Usando Instruções Preparadas (Prepared Statements)","u":"/node-mysql2/pt-BR/docs","h":"#usando-instruções-preparadas-prepared-statements","p":655},{"i":664,"t":"O conjunto de conexões (pools) ajuda a reduzir o tempo gasto na conexão com o servidor MySQL, reutilizando uma conexão anterior e deixando-as abertas ao invés de fechá-las quando você termina de usá-las. Isto melhora a latência das consultas (queries), pois evita toda a sobrecarga associada à criação de uma nova conexão. Para explorar mais exemplos de Conjunto de Conexões (pools), visite a seção de exemplos createPool. Promise Callback import mysql from 'mysql2/promise'; // Cria a conexão (pool). As definições específicadas do \"createPool\" são as predefinições padrões const pool = mysql.createPool({ host: 'localhost', user: 'root', database: 'test', waitForConnections: true, connectionLimit: 10, maxIdle: 10, // Máximo de conexões inativas; o valor padrão é o mesmo que \"connectionLimit\" idleTimeout: 60000, // Tempo limite das conexões inativas em milissegundos; o valor padrão é \"60000\" queueLimit: 0, enableKeepAlive: true, keepAliveInitialDelay: 0, }); const mysql = require('mysql2'); // Cria a conexão (pool). As definições específicadas do \"createPool\" são as predefinições padrões const pool = mysql.createPool({ host: 'localhost', user: 'root', database: 'test', waitForConnections: true, connectionLimit: 10, maxIdle: 10, // Máximo de conexões inativas; o valor padrão é o mesmo que \"connectionLimit\" idleTimeout: 60000, // Tempo limite das conexões inativas em milissegundos; o valor padrão é \"60000\" queueLimit: 0, enableKeepAlive: true, keepAliveInitialDelay: 0, }); nota O pool não estabelece todas as conexões previamente, mas as cria sob demanda até que o limite de conexões seja atingido. Você pode usar o pool da mesma maneira como em uma conexão (usando pool.query() e pool.execute()): Promise Callback try { // Para a inicialização do \"pool\", veja acima const [rows, fields] = await pool.query('SELECT `field` FROM `table`'); // A conexão é automaticamente liberada quando a consulta (query) é resolvida } catch (err) { console.log(err); } // Para a inicialização do \"pool\", veja acima pool.query('SELECT `field` FROM `table`', function (err, rows, fields) { // A conexão é automaticamente liberada quando a consulta (query) é resolvida }); Alternativamente, também existe a possibilidade de adquirir manualmente uma conexão do pool e liberá-la posteriormente: Promise Callback // Para a inicialização do \"pool\", veja acima const conn = await pool.getConnection(); // Fazer algo com a conexão await conn.query(/* ... */); // Não se esqueça de liberar a conexão quando terminar! pool.releaseConnection(conn); // Para a inicialização do \"pool\", veja acima pool.getConnection(function (err, conn) { // Fazer algo com a conexão conn.query(/* ... */); // Não se esqueça de liberar a conexão quando terminar! pool.releaseConnection(conn); }); Adicionalmente, você pode liberar a conexão usando o objeto connection: conn.release();","s":"Usando Conjunto de Conexões (pools)","u":"/node-mysql2/pt-BR/docs","h":"#using-connection-pools","p":655},{"i":666,"t":"O MySQL2 também suporta Promise API. O que funciona muito bem com o ES7 async await. import mysql from 'mysql2/promise'; async function main() { // Cria a conexão com o Banco de Dados const connection = await mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', }); // Consulta no Banco de Dados const [rows, fields] = await connection.execute( 'SELECT * FROM `table` WHERE `name` = ? AND `age` > ?', ['Morty', 14] ); } O MySQL2 usa o objeto Promise padrão disponível no escopo. Mas você pode escolher qual implementação de Promise deseja usar. // Obtém o cliente import mysql from 'mysql2/promise'; // Obtém a implementação de \"Promise\" (nós usaremos o \"bluebird\") import bluebird from 'bluebird'; // Cria a conexão, especificando o \"bluebird\" como \"Promise\" const connection = await mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', Promise: bluebird, }); // Consulta no Banco de Dados const [rows, fields] = await connection.execute( 'SELECT * FROM `table` WHERE `name` = ? AND `age` > ?', ['Morty', 14] ); MySQL2 also exposes a .promise() function on Pools, so you can create a promise/non-promise connections from the same pool. import mysql from 'mysql2'; async function main() { // create the pool const pool = mysql.createPool({ host: 'localhost', user: 'root', database: 'test', }); // now get a Promise wrapped instance of that pool const promisePool = pool.promise(); // query database using promises const [rows, fields] = await promisePool.query('SELECT 1'); } O MySQL2 também expõe o método .promise() em Pools, então você pode criar conexões \"promise/non-promise\" para o mesmo pool. const mysql = require('mysql2'); // Cria a conexão const conn = mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', }); conn .promise() .query('SELECT 1') .then(([rows, fields]) => { console.log(rows); }) .catch(console.log) .then(() => conn.end());","s":"Usando o Promise Wrapper","u":"/node-mysql2/pt-BR/docs","h":"#usando-o-promise-wrapper","p":655},{"i":668,"t":"Se você tiver duas colunas com o mesmo nome, pode preferir receber os resultados como um array, em vez de um objeto, para evitar conflitos. Isso é uma divergência da biblioteca Node MySQL. Por exemplo: SELECT 1 AS `foo`, 2 AS `foo`. Você pode habilitar essa configuração tanto no nível de conexão (aplica-se a todas as consultas), quanto no nível de consulta (aplica-se apenas a essa consulta específica). Connection Level Promise Callback const conn = await mysql.createConnection({ host: 'localhost', database: 'test', user: 'root', rowsAsArray: true, }); const conn = mysql.createConnection({ host: 'localhost', database: 'test', user: 'root', rowsAsArray: true, }); Query Level Promise Callback try { const [results, fields] = await conn.query({ sql: 'SELECT 1 AS `foo`, 2 AS `foo`', rowsAsArray: true, }); console.log(results); // nessa consulta, \"results\" contêm um array de arrays ao invés de um array de objetos console.log(fields); // \"fields\" mantêm-se inalterados } catch (err) { console.log(err); } conn.query( { sql: 'SELECT 1 AS `foo`, 2 AS `foo`', rowsAsArray: true, }, function (err, results, fields) { console.log(results); // nessa consulta, \"results\" contêm um array de arrays ao invés de um array de objetos console.log(fields); // \"fields\" mantêm-se inalterados } ); Obtendo Ajuda Precisa de ajuda? Faça sua pergunta no Stack Overflow ou GitHub. Se você encontrou um erro, registre-o no GitHub.","s":"Resultados em Array","u":"/node-mysql2/pt-BR/docs","h":"#resultados-em-array","p":655},{"i":670,"t":"During the connection phase the server may ask the client to switch to a different auth method. If the authPlugins connection config option is set, it must be an object where each key is the name of a potential authentication plugin requested by the server, and the corresponding value must be a function that optionally receives the connection config options and returns another function, which in turn, optionally receives the switch request data. The plugin is loaded with a ({user,password,...}) signature, and each call has a (pluginData) signature. Each call should make the plugin return any additional authentication data (Buffer) that should be sent back to the server, either synchronously or asynchronously using a Promise, or should yield an error accordingly. Example: (imaginary ssh-key-auth plugin) pseudo code const conn = mysql.createConnection({ user: 'test_user', password: 'test', database: 'test_database', authPlugins: { 'ssh-key-auth': function ({ password }) { return function (pluginData) { return getPrivate(key) .then((key) => { const response = encrypt(key, password, pluginData); // continue handshake by sending response data return response; }) .catch((err) => { // throw error to propagate error to connect/changeUser handlers }); }; }, }, }); There is also a deprecated API where if a authSwitchHandler connection config option is set it must be a function that receives switch request data and responds via a callback. In this case, the first invocation always has a ({pluginName, pluginData}) signature, following calls - ({pluginData}). The client replies with an opaque blob matching the requested plugin via callback(null, data: Buffer). const conn = mysql.createConnection({ user: 'test_user', password: 'test', database: 'test_database', authSwitchHandler: function ({ pluginName, pluginData }, cb) { if (pluginName === 'ssh-key-auth') { getPrivateKey((key) => { const response = encrypt(key, pluginData); // continue handshake by sending response data // respond with error to propagate error to connect/changeUser handlers cb(null, response); }); } else { const err = new Error( `Unknown AuthSwitchRequest plugin name ${pluginName}` ); err.fatal = true; cb(err); } }, }); The initial handshake is always performed using mysql_native_password plugin. This will be possible to override in future versions. Note that if the mysql_native_password method is requested it will be handled internally according to Authentication::Native41 and no authPlugins function or the authSwitchHandler will be invoked. These MAY be called multiple times if the plugin algorithm requires multiple roundtrips of data exchange between client and server.","s":"Authentication Switch Request","u":"/node-mysql2/pt-BR/docs/documentation/authentication-switch","h":"","p":669},{"i":672,"t":"If the user requires multi-factor authentication in the server, the client will receive a AuthNextFactor request, which is similar in structure to the regular authentication switch request and contains the name and possible initial data for the additional authentication factor plugin (up to 3). Additional passwords can be provided using the connection config options - password2 and password3. Again, for each authentication factor, multiple roundtrips of data exchange can be required by the plugin algoritm. const conn = mysql.createConnection({ user: 'test_user', password: 'secret1', password2: 'secret2', password3: 'secret3', database: 'test_database', authPlugins: { // password1 === password 'auth-plugin1': function ({ password1 }) { return function (serverPluginData) { return clientPluginData(password1, serverPluginData); }; }, 'auth-plugin2': function ({ password2 }) { return function (serverPluginData) { return clientPluginData(password2, serverPluginData); }; }, 'auth-plugin3': function ({ password3 }) { return function (serverPluginData) { return clientPluginData(password3, serverPluginData); }; }, }, });","s":"Multi-factor authentication","u":"/node-mysql2/pt-BR/docs/documentation/authentication-switch","h":"#multi-factor-authentication","p":669},{"i":675,"t":"You can use named placeholders for parameters by setting namedPlaceholders config value or query/execute time option. Named placeholders are converted to unnamed ? on the client (mysql protocol does not support named parameters). If you reference parameter multiple times under the same name it is sent to server multiple times. Unnamed placeholders can still be used by providing the values as an array instead of an object. connection.config.namedPlaceholders = true; connection.execute('select :x + :y as z', { x: 1, y: 2 }, (err, rows) => { // statement prepared as \"select ? + ? as z\" and executed with [1,2] values // rows returned: [ { z: 3 } ] }); connection.execute('select :x + :x as z', { x: 1 }, (err, rows) => { // select ? + ? as z, execute with [1, 1] }); connection.query('select :x + :x as z', { x: 1 }, (err, rows) => { // query select 1 + 1 as z }); // unnamed placeholders are still valid if the values are provided in an array connection.query('select ? + ? as z', [1, 1], (err, rows) => { // query select 1 + 1 as z });","s":"Named placeholders","u":"/node-mysql2/pt-BR/docs/documentation/extras","h":"#named-placeholders","p":673},{"i":677,"t":"const options = { sql: 'select A,B,C,D from foo', rowsAsArray: true }; connection.query(options, (err, results) => { /* results will be an array of arrays like this now: [[ 'field A value', 'field B value', 'field C value', 'field D value', ], ...] */ });","s":"Receiving rows as array of columns instead of hash with column name as key:","u":"/node-mysql2/pt-BR/docs/documentation/extras","h":"#receiving-rows-as-array-of-columns-instead-of-hash-with-column-name-as-key","p":673},{"i":679,"t":"In addition to sending local fs files you can send any stream using infileStreamFactory query option. If set, it has to be a function that return a readable stream. It gets file path from query as a parameter. Note: starting from version 2.0 infileStreamFactory is required parameter for LOAD DATA LOCAL INFILE. Response from server indicates that it wants access to a local file and no infileStreamFactory option is provided the query ends with error. // local file connection.query( 'LOAD DATA LOCAL INFILE \"/tmp/data.csv\" INTO TABLE test FIELDS TERMINATED BY ? (id, title)', onInserted1 ); // local stream const sql = 'LOAD DATA LOCAL INFILE \"mystream\" INTO TABLE test FIELDS TERMINATED BY ? (id, title)'; connection.query( { sql: sql, infileStreamFactory: function (path) { return getStream(); }, }, onInserted2 ); The infileStreamFactory option may also be set at a connection-level: const fs = require('fs'); const mysql = require('mysql2'); const connection = mysql.createConnection({ user: 'test', database: 'test', infileStreamFactory: (path) => { // Validate file path const validPaths = ['/tmp/data.csv']; if (!validPaths.includes(path)) { throw new Error( `invalid file path: ${path}: expected to be one of ${validPaths.join( ',' )}` ); } return fs.createReadStream(path); }, }); connection.query( 'LOAD DATA LOCAL INFILE \"/tmp/data.csv\" INTO TABLE test', onInserted );","s":"Sending tabular data with 'load infile' and local stream:","u":"/node-mysql2/pt-BR/docs/documentation/extras","h":"#sending-tabular-data-with-load-infile-and-local-stream","p":673},{"i":681,"t":"const net = require('net'); const mysql = require('mysql2'); const shape = require('shaper'); const connection = mysql.createConnection({ user: 'test', database: 'test', stream: net.connect('/tmp/mysql.sock').pipe(shape(10)), // emulate 10 bytes/sec link }); connection.query('SELECT 1+1 as test1', console.log); stream also can be a function. In that case function result has to be duplex stream, and it is used for connection transport. This is required if you connect pool using custom transport as new pooled connection needs new stream. Example connecting over socks5 proxy: const mysql = require('mysql2'); const SocksConnection = require('socksjs'); const pool = mysql.createPool({ database: 'test', user: 'foo', password: 'bar', stream: function (cb) { const newStream = new SocksConnection( { host: 'remote.host', port: 3306 }, { host: 'localhost', port: 1080 } ); cb(null, newStream); }, }); In addition to password createConnection(), createPool() and changeUser() accept passwordSha1 option. This is useful when implementing proxies as plaintext password might be not available.","s":"Connecting using custom stream:","u":"/node-mysql2/pt-BR/docs/documentation/extras","h":"#connecting-using-custom-stream","p":673},{"i":684,"t":"createServer() - creates server instance Server.listen - listen port / unix socket (same arguments as net.Server.listen)","s":"Server","u":"/node-mysql2/pt-BR/docs/documentation/mysql-server","h":"#server","p":682},{"i":686,"t":"connect new incoming connection.","s":"Events","u":"/node-mysql2/pt-BR/docs/documentation/mysql-server","h":"#events","p":682},{"i":688,"t":"serverHandshake({ serverVersion, protocolVersion, connectionId, statusFlags, characterSet, capabilityFlags }) send server handshake initialisation packet, wait handshake response and start listening for commands writeOk({ affectedRows: num, insertId: num }) send OK packet to client writeEof(warnings, statusFlags) send EOF packet writeTextResult(rows, fields) write query result to client. Rows and fields are in the same format as in connection.query callback. writeColumns(fields) write fields + EOF packets. writeTextRow(row) write array (not hash!) of values as result row TODO: binary protocol","s":"Connection","u":"/node-mysql2/pt-BR/docs/documentation/mysql-server","h":"#connection","p":682},{"i":690,"t":"Every command packet received by the server will be emitted as a packet event with the parameters: packet: Packet The packet itself knownCommand: boolean is this command known to the server *commandCode: number the parsed command code (first byte) In addition special events are emitted for commands received from the client. If no listener is present a fallback behavior will be invoked. quit() Default: close the connection init_db(schemaName: string) Default: return OK query(sql: string) Please attach a listener to this. Default: return HA_ERR_INTERNAL_ERROR field_list(table: string, fields: string) Default: return ER_WARN_DEPRECATED_SYNTAX ping() - Default: return OK","s":"Events","u":"/node-mysql2/pt-BR/docs/documentation/mysql-server","h":"#events-1","p":682},{"i":692,"t":"In addition to errback interface there is thin wrapper to expose Promise-based api","s":"Promise Wrappers","u":"/node-mysql2/pt-BR/docs/documentation/promise-wrapper","h":"","p":691},{"i":694,"t":"/* eslint-env es6 */ const mysql = require('mysql2/promise'); // or require('mysql2').createConnectionPromise mysql .createConnection({ /* same parameters as for non-promise createConnection */ }) .then((conn) => conn.query('select foo from bar')) .then(([rows, fields]) => console.log(rows[0].foo)); const pool = require('mysql2/promise').createPool({}); // or require('mysql2').createPoolPromise({}) or require('mysql2').createPool({}).promise() pool .getConnection() .then((conn) => { const res = conn.query('select foo from bar'); conn.release(); return res; }) .then((result) => { console.log(result[0][0].foo); }) .catch((err) => { console.log(err); // any of connection time or query time errors from above });","s":"Basic Promise","u":"/node-mysql2/pt-BR/docs/documentation/promise-wrapper","h":"#basic-promise","p":691},{"i":696,"t":"async function example1() { const mysql = require('mysql2/promise'); const conn = await mysql.createConnection({ database: test }); const [rows, fields] = await conn.execute('select ?+? as sum', [2, 2]); await conn.end(); } async function example2() { const mysql = require('mysql2/promise'); const pool = mysql.createPool({ database: test }); // execute in parallel, next console.log in 3 seconds await Promise.all([ pool.query('select sleep(2)'), pool.query('select sleep(3)'), ]); console.log('3 seconds after'); await pool.end(); }","s":"ES7 Async Await","u":"/node-mysql2/pt-BR/docs/documentation/promise-wrapper","h":"#es7-async-await","p":691},{"i":698,"t":"const mysql = require('mysql2'); const co = require('co'); co(function* () { const c = yield mysql.createConnectionPromise({ user: 'root', namedPlaceholders: true, }); const rows = yield c.query('show databases'); console.log(rows); console.log(yield c.execute('select 1+:toAdd as qqq', { toAdd: 10 })); yield c.end(); }); Examples in /examples/promise-co-await","s":"With CO","u":"/node-mysql2/pt-BR/docs/documentation/promise-wrapper","h":"#with-co","p":691},{"i":701,"t":"Similar to connection.query(). connection.execute('select 1 + ? + ? as result', [5, 6], (err, rows) => { // rows: [ { result: 12 } ] // internally 'select 1 + ? + ? as result' is prepared first. On subsequent calls cached statement is re-used }); // close cached statement for 'select 1 + ? + ? as result'. noop if not in cache connection.unprepare('select 1 + ? + ? as result'); Note that connection.execute() will cache the prepared statement for better performance, remove the cache with connection.unprepare() when you're done.","s":"Automatic creation, cached and re-used by connection","u":"/node-mysql2/pt-BR/docs/documentation/prepared-statements","h":"#automatic-creation-cached-and-re-used-by-connection","p":699},{"i":703,"t":"Manually prepared statements doesn't comes with LRU cache and SHOULD be closed using statement.close() instead of connection.unprepare(). connection.prepare('select ? + ? as tests', (err, statement) => { // statement.parameters - array of column definitions, length === number of params, here 2 // statement.columns - array of result column definitions. Can be empty if result schema is dynamic / not known // statement.id // statement.query statement.execute([1, 2], (err, rows, columns) => { // -> [ { tests: 3 } ] }); // don't use connection.unprepare(), it won't work! // note that there is no callback here. There is no statement close ack at protocol level. statement.close(); }); Note that you should not use statement after connection reset (changeUser() or disconnect). Statement scope is connection, you need to prepare statement for each new connection in order to use it.","s":"Manual prepare / execute","u":"/node-mysql2/pt-BR/docs/documentation/prepared-statements","h":"#manual-prepare--execute","p":699},{"i":705,"t":"maxPreparedStatements : We keep the cached statements in a lru-cache. Default size is 16000 but you can use this option to override it. Any statements that are dropped from cache will be closed.","s":"Configuration","u":"/node-mysql2/pt-BR/docs/documentation/prepared-statements","h":"#configuration","p":699},{"i":707,"t":"The bind parameter values passed to execute are serialized JS -> MySQL as: null -> NULL number -> DOUBLE boolean -> TINY (0 for false, 1 for true) object -> depending on prototype: Date -> DATETIME JSON like object - JSON Buffer -> VAR_STRING Other -> VAR_STRING Passing in undefined or a function will result in an error.","s":"Serialization of bind parameters","u":"/node-mysql2/pt-BR/docs/documentation/prepared-statements","h":"#serialization-of-bind-parameters","p":699},{"i":709,"t":"MySQL2 provides execute helper which will prepare and query the statement. You can also manually prepare / unprepare statement with prepare / unprepare methods. connection.execute( 'select ?+1 as qqq, ? as rrr, ? as yyy', [1, null, 3], (err, rows, fields) => { console.log(err, rows, fields); connection.execute( 'select ?+1 as qqq, ? as rrr, ? as yyy', [3, null, 3], (err, rows, fields) => { console.log(err, rows, fields); connection.unprepare('select ?+1 as qqq, ? as rrr, ? as yyy'); connection.execute( 'select ?+1 as qqq, ? as rrr, ? as yyy', [3, null, 3], (err, rows, fields) => { console.log(err, rows, fields); } ); } ); } );","s":"Prepared Statements Helper","u":"/node-mysql2/pt-BR/docs/documentation/prepared-statements","h":"#prepared-statements-helper","p":699},{"i":711,"t":"For Prepared Statements examples, please see here.","s":"Examples","u":"/node-mysql2/pt-BR/docs/documentation/prepared-statements","h":"#examples","p":699},{"i":714,"t":"npm install --save mysql2 npm install --save-dev @types/node The @types/node ensure the proper interaction between TypeScript and the Node.js modules used by MySQL2 (net, events, stream, tls, etc.). info Requires TypeScript >=4.5.2.","s":"Installation","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#installation","p":712},{"i":716,"t":"You can import MySQL2 in two ways: By setting the esModuleInterop option to true in tsconfig.json import mysql from 'mysql2'; import mysql from 'mysql2/promise'; By setting the esModuleInterop option to false in tsconfig.json import * as mysql from 'mysql2'; import * as mysql from 'mysql2/promise';","s":"Usage","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#usage","p":712},{"i":718,"t":"import mysql, { ConnectionOptions } from 'mysql2'; const access: ConnectionOptions = { user: 'test', database: 'test', }; const conn = mysql.createConnection(access);","s":"Connection","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#connection","p":712},{"i":720,"t":"import mysql, { PoolOptions } from 'mysql2'; const access: PoolOptions = { user: 'test', database: 'test', }; const conn = mysql.createPool(access);","s":"Pool Connection","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#pool-connection","p":712},{"i":722,"t":"A simple query conn.query('SELECT 1 + 1 AS `test`;', (_err, rows) => { /** * @rows: [ { test: 2 } ] */ }); conn.execute('SELECT 1 + 1 AS `test`;', (_err, rows) => { /** * @rows: [ { test: 2 } ] */ }); The rows output will be these possible types: RowDataPacket[] RowDataPacket[][] ResultSetHeader ResultSetHeader[] ProcedureCallPacket In this example, you need to manually check the output types","s":"Query and Execute","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#query-and-execute","p":712},{"i":725,"t":"2Stable An array with the returned rows, for example: import mysql, { RowDataPacket } from 'mysql2'; const conn = mysql.createConnection({ user: 'test', database: 'test', }); // SELECT conn.query('SELECT 1 + 1 AS `test`;', (_err, rows) => { console.log(rows); /** * @rows: [ { test: 2 } ] */ }); // SHOW conn.query('SHOW TABLES FROM `test`;', (_err, rows) => { console.log(rows); /** * @rows: [ { Tables_in_test: 'test' } ] */ }); Using rowsAsArray option as true: import mysql, { RowDataPacket } from 'mysql2'; const conn = mysql.createConnection({ user: 'test', database: 'test', rowsAsArray: true, }); // SELECT conn.query( 'SELECT 1 + 1 AS test, 2 + 2 AS test;', (_err, rows) => { console.log(rows); /** * @rows: [ [ 2, 4 ] ] */ } ); // SHOW conn.query('SHOW TABLES FROM `test`;', (_err, rows) => { console.log(rows); /** * @rows: [ [ 'test' ] ] */ });","s":"RowDataPacket[]","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#rowdatapacket","p":712},{"i":727,"t":"2Stable Using multipleStatements option as true with multiple queries: import mysql, { RowDataPacket } from 'mysql2'; const conn = mysql.createConnection({ user: 'test', database: 'test', multipleStatements: true, }); const sql = ` SELECT 1 + 1 AS test; SELECT 2 + 2 AS test; `; conn.query(sql, (_err, rows) => { console.log(rows); /** * @rows: [ [ { test: 2 } ], [ { test: 4 } ] ] */ });","s":"RowDataPacket[][]","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#rowdatapacket-1","p":712},{"i":729,"t":"2Stable History Version Changes v3.5.1 OkPacket is deprecated and might be removed in the future major release. Please use ResultSetHeader instead. changedRows option is deprecated and might be removed in the future major release. Please use affectedRows instead. For INSERT, UPDATE, DELETE, TRUNCATE, etc.: import mysql, { ResultSetHeader } from 'mysql2'; const conn = mysql.createConnection({ user: 'test', database: 'test', }); const sql = ` SET @1 = 1; `; conn.query(sql, (_err, result) => { console.log(result); /** * @result: ResultSetHeader { fieldCount: 0, affectedRows: 0, insertId: 0, info: '', serverStatus: 2, warningStatus: 0, changedRows: 0 } */ });","s":"ResultSetHeader","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#resultsetheader","p":712},{"i":731,"t":"2Stable History Version Changes v3.5.1 Introduce ResultSetHeader[] For multiples INSERT, UPDATE, DELETE, TRUNCATE, etc. when using multipleStatements as true: import mysql, { ResultSetHeader } from 'mysql2'; const conn = mysql.createConnection({ user: 'test', database: 'test', multipleStatements: true, }); const sql = ` SET @1 = 1; SET @2 = 2; `; conn.query(sql, (_err, results) => { console.log(results); /** * @results: [ ResultSetHeader { fieldCount: 0, affectedRows: 0, insertId: 0, info: '', serverStatus: 10, warningStatus: 0, changedRows: 0 }, ResultSetHeader { fieldCount: 0, affectedRows: 0, insertId: 0, info: '', serverStatus: 2, warningStatus: 0, changedRows: 0 } ] */ });","s":"ResultSetHeader[]","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#resultsetheader-1","p":712},{"i":733,"t":"2Stable History Version Changes v3.5.1 Introduce ProcedureCallPacket dica By performing a Call Procedure using INSERT, UPDATE, etc., the return will be a ProcedureCallPacket (even if you perform multiples queries and set multipleStatements to true): import mysql, { ProcedureCallPacket, ResultSetHeader } from 'mysql2'; const conn = mysql.createConnection({ user: 'test', database: 'test', }); /** ResultSetHeader */ conn.query('DROP PROCEDURE IF EXISTS myProcedure'); /** ResultSetHeader */ conn.query(` CREATE PROCEDURE myProcedure() BEGIN SET @1 = 1; SET @2 = 2; END `); /** ProcedureCallPacket */ const sql = 'CALL myProcedure()'; conn.query>(sql, (_err, result) => { console.log(result); /** * @result: ResultSetHeader { fieldCount: 0, affectedRows: 0, insertId: 0, info: '', serverStatus: 2, warningStatus: 0, changedRows: 0 } */ }); For CREATE PROCEDURE and DROP PROCEDURE, these returns will be the default ResultSetHeader. By using SELECT and SHOW queries in a Procedure Call, it groups the results as: /** ProcedureCallPacket */ [RowDataPacket[], ResultSetHeader] For ProcedureCallPacket, please see the following examples.","s":"ProcedureCallPacket","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#procedurecallpacket","p":712},{"i":735,"t":"0Deprecated OkPacket is deprecated and might be removed in the future major release. Please use ResultSetHeader instead.","s":"OkPacket","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#okpacket","p":712},{"i":737,"t":"You can also check some code examples using MySQL2 and TypeScript to understand advanced concepts: Extending and using Interfaces with RowDataPacket Extending and using Interfaces with RowDataPacket and rowAsArray Extending and using Interfaces with RowDataPacket and multipleStatements Extending and using Interfaces with RowDataPacket, rowAsArray and multipleStatements Checking for ResultSetHeader, extending and using Interfaces with RowDataPacket from ProcedureCallPacket Checking for ResultSetHeader, extending and using Interfaces with RowDataPacket and rowAsArray from ProcedureCallPacket Creating a basic custom MySQL2 Class","s":"Examples","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#examples","p":712},{"i":739,"t":"dica To explore the examples, please use the sidebar navigation on desktop or access the menu on mobile devices.","s":"Examples","u":"/node-mysql2/pt-BR/docs/examples","h":"","p":738},{"i":741,"t":"MySQL-pg-proxy - MySQL to Postgres proxy server. MySQLite.js - MySQL server with JS-only (emscripten compiled) sqlite backend. SQL-engine - MySQL server with LevelDB backend. MySQL-osquery-proxy - Connect to facebook osquery using MySQL client PlyQL - Connect to Druid using MySQL client","s":"Examples using MySQL server API","u":"/node-mysql2/pt-BR/docs/examples","h":"#examples-using-mysql-server-api","p":738},{"i":743,"t":"info For queries please see the Simple Queries and Prepared Statements examples.","s":"createPool","u":"/node-mysql2/pt-BR/docs/examples/connections/create-pool","h":"","p":742},{"i":745,"t":"createPool(connectionUri: string) promise.js callback.js import mysql from 'mysql2/promise'; try { const pool = mysql.createPool('mysql://root:password@localhost:3306/test'); const connection = await pool.getConnection(); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const pool = mysql.createPool('mysql://root:password@localhost:3306/test'); pool.getConnection(function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); atenção Don't forget to release the connection when finished by using: pool.releaseConnection(connection) connection.release()","s":"createPool(connectionUri)","u":"/node-mysql2/pt-BR/docs/examples/connections/create-pool","h":"#createpoolconnectionuri","p":742},{"i":747,"t":"createPool(config: PoolOptions) promise.js callback.js import mysql from 'mysql2/promise'; try { const pool = mysql.createPool({ host: 'localhost', user: 'root', database: 'test', // port: 3306, // password: '', }); const connection = await pool.getConnection(); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const pool = mysql.createPool({ host: 'localhost', user: 'root', database: 'test', // port: 3306, // password: '', }); pool.getConnection(function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); atenção Don't forget to release the connection when finished by using: pool.releaseConnection(connection) connection.release()","s":"createPool(config)","u":"/node-mysql2/pt-BR/docs/examples/connections/create-pool","h":"#createpoolconfig","p":742},{"i":749,"t":"createPool(config: PoolOptions) promise.js callback.js import mysql from 'mysql2/promise'; try { const pool = mysql.createPool({ // ... passwordSha1: Buffer.from( '8bb6118f8fd6935ad0876a3be34a717d32708ffd', 'hex' ), }); const connection = await pool.getConnection(); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const pool = mysql.createPool({ // ... passwordSha1: Buffer.from('8bb6118f8fd6935ad0876a3be34a717d32708ffd', 'hex'), }); pool.getConnection(function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); atenção Don't forget to release the connection when finished by using: pool.releaseConnection(connection) connection.release()","s":"createPool(config) — SHA1","u":"/node-mysql2/pt-BR/docs/examples/connections/create-pool","h":"#createpoolconfig--sha1","p":742},{"i":751,"t":"createPool(config: PoolOptions) promise.js callback.js certs/ca-cert.pem import mysql from 'mysql2/promise'; try { const pool = mysql.createPool({ // ... ssl: { // key: fs.readFileSync('./certs/client-key.pem'), // cert: fs.readFileSync('./certs/client-cert.pem') ca: fs.readFileSync('./certs/ca-cert.pem'), }, }); const connection = await pool.getConnection(); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const pool = mysql.createPool({ // ... ssl: { // key: fs.readFileSync('./certs/client-key.pem'), // cert: fs.readFileSync('./certs/client-cert.pem') ca: fs.readFileSync('./certs/ca-cert.pem'), }, }); pool.getConnection(function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); See ssl/certs. atenção Don't forget to release the connection when finished by using: pool.releaseConnection(connection) connection.release()","s":"createPool(config) — SSL","u":"/node-mysql2/pt-BR/docs/examples/connections/create-pool","h":"#createpoolconfig--ssl","p":742},{"i":753,"t":"createPool(config: PoolOptions) You can use Amazon RDS string as value to ssl property to connect to Amazon RDS MySQL over SSL. In that case https://s3.amazonaws.com/rds-downloads/mysql-ssl-ca-cert.pem CA cert is used: promise.js callback.js import mysql from 'mysql2/promise'; try { const pool = mysql.createPool({ // ... host: 'db.id.ap-southeast-2.rds.amazonaws.com', ssl: 'Amazon RDS', }); const connection = await pool.getConnection(); // ... some query connection.release(); } catch (err) { console.log(err); } Testing try { const [res] = await connection.query('SHOW `status` LIKE \"Ssl_cipher\"'); await pool.end(); console.log(res); } catch (err) { console.log(err); } const mysql = require('mysql2'); const pool = mysql.createPool({ // ... host: 'db.id.ap-southeast-2.rds.amazonaws.com', ssl: 'Amazon RDS', }); pool.getConnection(function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); Testing connectionquery('SHOW `status` LIKE \"Ssl_cipher\"', function (err, res) { pool.end(); if (err instanceof Error) { console.log(err); return; } console.log(res); }); atenção Don't forget to release the connection when finished by using: pool.releaseConnection(connection) connection.release()","s":"createPool(config) — RDS SSL","u":"/node-mysql2/pt-BR/docs/examples/connections/create-pool","h":"#createpoolconfig--rds-ssl","p":742},{"i":755,"t":"Issues #2130 — Update TLS certs for Amazon RDS instances Pull Requests #2119 — fix: make startTls code compatible with Bun #2131 — Update Amazon RDS SSL CA cert","s":"Related Links","u":"/node-mysql2/pt-BR/docs/examples/connections/create-pool","h":"#related-links","p":742},{"i":757,"t":"createPool(config: PoolOptions) A.js B.js const mysql = require('mysql2'); const SocksConnection = require('socksjs'); const socksProxy = new SocksConnection({ port: 3306 }); const pool = mysql.createPool({ stream: socksProxy, }); const mysql = require('mysql2'); const SocksConnection = require('socksjs'); const pool = mysql.createPool({ debug: 1, stream: function () { return new SocksConnection({ port: 3306 }); }, }); Testing pool.execute('SELECT SLEEP(1.1) AS `www`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); }); pool.execute('SELECT SLEEP(1) AS `qqq`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); }); pool.execute('SELECT SLEEP(1) AS `qqq`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); });","s":"createPool(config) — Socks","u":"/node-mysql2/pt-BR/docs/examples/connections/create-pool","h":"#createpoolconfig--socks","p":742},{"i":760,"t":"PoolOptions extends all options from ConnectionOptions: ConnectionOptions Specification PoolOptions Specification","s":"PoolOptions","u":"/node-mysql2/pt-BR/docs/examples/connections/create-pool","h":"#pooloptions","p":742},{"i":762,"t":"index.js 'use strict'; const mysql = require('mysql2'); const through2 = require('through2'); const binlogStream = mysql.createBinlogStream({ serverId: 123, // slave ID, first field in \"show slave hosts\" sql response // you can also specify slave host, username, password and port masterId: 0, filename: 'mysql-bin.000007', binlogPos: 120, flags: 1, // 1 = \"non-blocking mode\" }); binlogStream.pipe( through2.obj((obj, enc, next) => { console.log(obj); next(); }) );","s":"Binlog Watcher","u":"/node-mysql2/pt-BR/docs/examples/binlog-watcher","h":"","p":761},{"i":764,"t":"await.js co.js .babelrc package.json 'use strict'; const mysql = require('mysql2/promise'); async function test() { const c = await mysql.createConnection({ port: 3306, user: 'testuser', namedPlaceholders: true, password: 'testpassword', }); console.log('connected!'); const [rows, fields] = await c.query('show databases'); console.log(rows); try { const [rows, fields] = await c.query('some invalid sql here'); } catch (e) { console.log('caught exception!', e); } console.log(await c.execute('select sleep(0.5)')); console.log('after first sleep'); console.log(await c.execute('select sleep(0.5)')); console.log('after second sleep'); let start = +new Date(); console.log( await Promise.all([ c.execute('select sleep(2.5)'), c.execute('select sleep(2.5)'), ]) ); console.log( 'after 2+3 parallel sleep which is in fact not parallel because commands are queued per connection' ); let end = +new Date(); console.log(end - start); await c.end(); const p = mysql.createPool({ port: 3306, user: 'testuser', namedPlaceholders: true, password: 'testpassword', }); console.log(await p.execute('select sleep(0.5)')); console.log('after first pool sleep'); start = +new Date(); console.log( await Promise.all([ p.execute('select sleep(2.5)'), p.execute('select sleep(2.5)'), ]) ); console.log('after 2+3 parallel pool sleep'); end = +new Date(); console.log(end - start); await p.end(); } test() .then(() => { console.log('done'); }) .catch((err) => { console.log('error!', err); throw err; }); 'use strict'; const mysql = require('mysql2/promise'); const co = require('co'); co(function* () { const c = yield mysql.createConnection({ port: 3306, user: 'root', namedPlaceholders: true, }); const rows = yield c.query('show databases'); console.log(rows); console.log(yield c.execute('select 1+:toAdd as qqq', { toAdd: 10 })); yield c.end(); }) .then(function () { console.log('done'); }) .catch(function (err) { console.log(err); throw err; }); { \"plugins\": [\"transform-async-to-generator\"] } { \"name\": \"promise-co-await\", \"version\": \"1.0.0\", \"description\": \"\", \"main\": \"await.js\", \"scripts\": { \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\" }, \"author\": \"\", \"license\": \"ISC\", \"dependencies\": { \"babel-cli\": \"^6.9.0\" } }","s":"await — co","u":"/node-mysql2/pt-BR/docs/examples/promise-wrapper/co-await","h":"","p":763},{"i":766,"t":"MySQL2 provides execute helper which will prepare and query the statement. You can also manually prepare / unprepare statement with prepare / unprepare methods. See detailed documentaion in Prepared Statements. dica If you execute same statement again, it will be picked form a LRU cache which will save query preparation time and give better performance. Usage examples: INSERT SELECT UPDATE DELETE","s":"Prepared Statements","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements","h":"","p":765},{"i":768,"t":"info For queries please see the Simple Queries and Prepared Statements examples.","s":"createConnection","u":"/node-mysql2/pt-BR/docs/examples/connections/create-connection","h":"","p":767},{"i":770,"t":"createConnection(connectionUri: string) promise.js callback.js import mysql from 'mysql2/promise'; try { const connection = await mysql.createConnection( 'mysql://root:password@localhost:3306/test' ); } catch (err) { console.log(err); } const mysql = require('mysql2'); const connection = mysql.createConnection( 'mysql://root:password@localhost:3306/test' ); connection.addListener('error', (err) => { console.log(err); });","s":"createConnection(connectionUri)","u":"/node-mysql2/pt-BR/docs/examples/connections/create-connection","h":"#createconnectionconnectionuri","p":767},{"i":772,"t":"createConnection(config: ConnectionOptions) promise.js callback.js import mysql from 'mysql2/promise'; try { const connection = await mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', // port: 3306, // password: '', }); } catch (err) { console.log(err); } const mysql = require('mysql2'); const connection = mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', // port: 3306, // password: '', }); connection.addListener('error', (err) => { console.log(err); });","s":"createConnection(config)","u":"/node-mysql2/pt-BR/docs/examples/connections/create-connection","h":"#createconnectionconfig","p":767},{"i":774,"t":"createConnection(config: ConnectionOptions) promise.js callback.js import mysql from 'mysql2/promise'; try { const connection = await mysql.createConnection({ // ... passwordSha1: Buffer.from( '8bb6118f8fd6935ad0876a3be34a717d32708ffd', 'hex' ), }); } catch (err) { console.log(err); } const mysql = require('mysql2'); const connection = mysql.createConnection({ // ... passwordSha1: Buffer.from('8bb6118f8fd6935ad0876a3be34a717d32708ffd', 'hex'), }); connection.addListener('error', (err) => { console.log(err); });","s":"createConnection(config) — SHA1","u":"/node-mysql2/pt-BR/docs/examples/connections/create-connection","h":"#createconnectionconfig--sha1","p":767},{"i":776,"t":"createConnection(config: ConnectionOptions) promise.js callback.js certs/ca-cert.pem import mysql from 'mysql2/promise'; try { const connection = await mysql.createConnection({ // ... ssl: { // key: fs.readFileSync('./certs/client-key.pem'), // cert: fs.readFileSync('./certs/client-cert.pem') ca: fs.readFileSync('./certs/ca-cert.pem'), }, }); } catch (err) { console.log(err); } const mysql = require('mysql2'); const connection = mysql.createConnection({ // ... ssl: { // key: fs.readFileSync('./certs/client-key.pem'), // cert: fs.readFileSync('./certs/client-cert.pem') ca: fs.readFileSync('./certs/ca-cert.pem'), }, }); connection.addListener('error', (err) => { console.log(err); }); See ssl/certs.","s":"createConnection(config) — SSL","u":"/node-mysql2/pt-BR/docs/examples/connections/create-connection","h":"#createconnectionconfig--ssl","p":767},{"i":778,"t":"createConnection(config: ConnectionOptions) You can use Amazon RDS string as value to ssl property to connect to Amazon RDS MySQL over SSL. In that case https://s3.amazonaws.com/rds-downloads/mysql-ssl-ca-cert.pem CA cert is used: promise.js callback.js import mysql from 'mysql2/promise'; try { const connection = await mysql.createConnection({ // ... host: 'db.id.ap-southeast-2.rds.amazonaws.com', ssl: 'Amazon RDS', }); } catch (err) { console.log(err); } Testing try { const [res] = await connection.query('SHOW `status` LIKE \"Ssl_cipher\"'); await connection.end(); console.log(res); } catch (err) { console.log(err); } const mysql = require('mysql2'); const connection = mysql.createConnection({ // ... host: 'db.id.ap-southeast-2.rds.amazonaws.com', ssl: 'Amazon RDS', }); connection.addListener('error', (err) => { console.log(err); }); Testing connectionquery('SHOW `status` LIKE \"Ssl_cipher\"', function (err, res) { connection.end(); if (err instanceof Error) { console.log(err); return; } console.log(res); });","s":"createConnection(config) — RDS SSL","u":"/node-mysql2/pt-BR/docs/examples/connections/create-connection","h":"#createconnectionconfig--rds-ssl","p":767},{"i":780,"t":"Issues #2130 — Update TLS certs for Amazon RDS instances Pull Requests #2119 — fix: make startTls code compatible with Bun #2131 — Update Amazon RDS SSL CA cert","s":"Related Links","u":"/node-mysql2/pt-BR/docs/examples/connections/create-connection","h":"#related-links","p":767},{"i":782,"t":"createConnection(config: ConnectionOptions) A.js B.js const mysql = require('mysql2'); const SocksConnection = require('socksjs'); const socksProxy = new SocksConnection({ port: 3306 }); const connection = mysql.createConnection({ stream: socksProxy, }); connection.addListener('error', (err) => { console.log(err); }); const mysql = require('mysql2'); const SocksConnection = require('socksjs'); const connection = mysql.createConnection({ debug: 1, stream: function () { return new SocksConnection({ port: 3306 }); }, }); connection.addListener('error', (err) => { console.log(err); }); Testing connection.execute('SELECT SLEEP(1.1) AS `www`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); }); connection.execute('SELECT SLEEP(1) AS `qqq`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); }); connection.execute('SELECT SLEEP(1) AS `qqq`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); });","s":"createConnection(config) — Socks","u":"/node-mysql2/pt-BR/docs/examples/connections/create-connection","h":"#createconnectionconfig--socks","p":767},{"i":785,"t":"ConnectionOptions Specification","s":"ConnectionOptions","u":"/node-mysql2/pt-BR/docs/examples/connections/create-connection","h":"#connectionoptions","p":767},{"i":788,"t":"execute(sql: string, values: any[]) promise.js callback.js try { const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (?, ?), (?,?)'; const values = ['Josh', 19, 'Page', 45]; const [result, fields] = await connection.execute(sql, values); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (?, ?), (?,?)'; const values = ['Josh', 19, 'Page', 45]; connection.execute(sql, values, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); }); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(sql, values)","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/insert","h":"#executesql-values","p":786},{"i":790,"t":"execute(options: QueryOptions) promise.js callback.js try { const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (?, ?), (?,?)'; const values = ['Josh', 19, 'Page', 45]; const [result, fields] = await connection.execute({ sql, values, // ... other options }); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (?, ?), (?,?)'; const values = ['Josh', 19, 'Page', 45]; connection.execute( { sql, values, // ... other options }, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options)","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/insert","h":"#executeoptions","p":786},{"i":792,"t":"execute(options: QueryOptions, values: any[]) promise.js callback.js try { const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (?, ?), (?,?)'; const values = ['Josh', 19, 'Page', 45]; const [result, fields] = await connection.execute( { sql, // ... other options }, values ); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (?, ?), (?,?)'; const values = ['Josh', 19, 'Page', 45]; connection.execute( { sql, // ... other options }, values, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options, values)","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/insert","h":"#executeoptions-values","p":786},{"i":795,"t":"ResultSetHeader Specification","s":"ResultSetHeader","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/insert","h":"#resultsetheader","p":786},{"i":797,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/insert","h":"#queryoptions","p":786},{"i":800,"t":"execute(sql: string, values: any[]) promise.js callback.js try { const sql = 'SELECT * FROM `users` WHERE `name` = ? AND `age` > ?'; const values = ['Page', 45]; const [rows, fields] = await connection.execute(sql, values); console.log(rows); console.log(fields); } catch (err) { console.log(err); } const sql = 'SELECT * FROM `users` WHERE `name` = ? AND `age` > ?'; const values = ['Page', 45]; connection.execute(sql, values, (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows); console.log(fields); }); rows contains rows returned by server fields contains extra meta data about rows, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(sql, values)","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/select","h":"#executesql-values","p":798},{"i":802,"t":"execute(options: QueryOptions) promise.js callback.js try { const sql = 'SELECT * FROM `users` WHERE `name` = ? AND `age` > ?'; const values = ['Page', 45]; const [rows, fields] = await connection.execute({ sql, values, // ... other options }); console.log(rows); console.log(fields); } catch (err) { console.log(err); } const sql = 'SELECT * FROM `users` WHERE `name` = ? AND `age` > ?'; const values = ['Page', 45]; connection.execute( { sql, values, // ... other options }, (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows); console.log(fields); } ); rows contains rows returned by server fields contains extra meta data about rows, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options)","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/select","h":"#executeoptions","p":798},{"i":804,"t":"execute(options: QueryOptions, values: any[]) promise.js callback.js try { const sql = 'SELECT * FROM `users` WHERE `name` = ? AND `age` > ?'; const values = ['Page', 45]; const [rows, fields] = await connection.execute( { sql, // ... other options }, values ); console.log(rows); console.log(fields); } catch (err) { console.log(err); } const sql = 'SELECT * FROM `users` WHERE `name` = ? AND `age` > ?'; const values = ['Page', 45]; connection.execute( { sql, // ... other options }, values, (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows); console.log(fields); } ); rows contains rows returned by server fields contains extra meta data about rows, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options, values)","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/select","h":"#executeoptions-values","p":798},{"i":807,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/select","h":"#queryoptions","p":798},{"i":810,"t":"execute(sql: string, values: any[]) promise.js callback.js try { const sql = 'UPDATE `users` SET `age` = ? WHERE `name` = ? LIMIT 1'; const values = [20, 'Josh']; const [result, fields] = await connection.execute(sql, values); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'UPDATE `users` SET `age` = ? WHERE `name` = ? LIMIT 1'; const values = [20, 'Josh']; connection.execute(sql, values, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); }); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(sql, values)","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/update","h":"#executesql-values","p":808},{"i":812,"t":"execute(options: QueryOptions) promise.js callback.js try { const sql = 'UPDATE `users` SET `age` = ? WHERE `name` = ? LIMIT 1'; const values = [20, 'Josh']; const [result, fields] = await connection.execute({ sql, values, // ... other options }); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'UPDATE `users` SET `age` = ? WHERE `name` = ? LIMIT 1'; const values = [20, 'Josh']; connection.execute( { sql, values, // ... other options }, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options)","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/update","h":"#executeoptions","p":808},{"i":814,"t":"execute(options: QueryOptions, values: any[]) promise.js callback.js try { const sql = 'UPDATE `users` SET `age` = ? WHERE `name` = ? LIMIT 1'; const values = [20, 'Josh']; const [result, fields] = await connection.execute( { sql, // ... other options }, values ); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'UPDATE `users` SET `age` = ? WHERE `name` = ? LIMIT 1'; const values = [20, 'Josh']; connection.execute( { sql, // ... other options }, values, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options, values)","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/update","h":"#executeoptions-values","p":808},{"i":817,"t":"ResultSetHeader Specification","s":"ResultSetHeader","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/update","h":"#resultsetheader","p":808},{"i":819,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/update","h":"#queryoptions","p":808},{"i":821,"t":"info For Prepared Statements or Placeholders / Parameters examples, please see here. Usage examples: INSERT SELECT UPDATE DELETE","s":"Simple Queries","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries","h":"","p":820},{"i":823,"t":"The examples below also work for the execute method.","s":"DELETE","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/delete","h":"","p":822},{"i":825,"t":"query(sql: string) promise.js callback.js try { const sql = 'DELETE FROM `users` WHERE `name` = \"Page\" LIMIT 1'; const [result, fields] = await connection.query(sql); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'DELETE FROM `users` WHERE `name` = \"Page\" LIMIT 1'; connection.query(sql, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); }); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(sql)","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/delete","h":"#querysql","p":822},{"i":827,"t":"query(options: QueryOptions) promise.js callback.js try { const sql = 'DELETE FROM `users` WHERE `name` = \"Page\" LIMIT 1'; const [result, fields] = await connection.query({ sql, // ... other options }); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'DELETE FROM `users` WHERE `name` = \"Page\" LIMIT 1'; connection.query( { sql, // ... other options }, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(options)","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/delete","h":"#queryoptions","p":822},{"i":830,"t":"ResultSetHeader Specification","s":"ResultSetHeader","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/delete","h":"#resultsetheader","p":822},{"i":832,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/delete","h":"#queryoptions-1","p":822},{"i":835,"t":"execute(sql: string, values: any[]) promise.js callback.js try { const sql = 'DELETE FROM `users` WHERE `name` = ? LIMIT 1'; const values = ['Page']; const [result, fields] = await connection.execute(sql, values); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'DELETE FROM `users` WHERE `name` = ? LIMIT 1'; const values = ['Page']; connection.execute(sql, values, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); }); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(sql, values)","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/delete","h":"#executesql-values","p":833},{"i":837,"t":"execute(options: QueryOptions) promise.js callback.js try { const sql = 'DELETE FROM `users` WHERE `name` = ? LIMIT 1'; const values = ['Page']; const [result, fields] = await connection.execute({ sql, values, // ... other options }); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'DELETE FROM `users` WHERE `name` = ? LIMIT 1'; const values = ['Page']; connection.execute( { sql, values, // ... other options }, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options)","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/delete","h":"#executeoptions","p":833},{"i":839,"t":"execute(options: QueryOptions, values: any[]) promise.js callback.js try { const sql = 'DELETE FROM `users` WHERE `name` = ? LIMIT 1'; const values = ['Page']; const [result, fields] = await connection.execute( { sql, // ... other options }, values ); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'DELETE FROM `users` WHERE `name` = ? LIMIT 1'; const values = ['Page']; connection.execute( { sql, // ... other options }, values, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options, values)","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/delete","h":"#executeoptions-values","p":833},{"i":842,"t":"ResultSetHeader Specification","s":"ResultSetHeader","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/delete","h":"#resultsetheader","p":833},{"i":844,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/delete","h":"#queryoptions","p":833},{"i":846,"t":"The examples below also work for the execute method.","s":"INSERT","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/insert","h":"","p":845},{"i":848,"t":"query(sql: string) promise.js callback.js try { const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (\"Josh\", 19), (\"Page\", 45)'; const [result, fields] = await connection.query(sql); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (\"Josh\", 19), (\"Page\", 45)'; connection.query(sql, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); }); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(sql)","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/insert","h":"#querysql","p":845},{"i":850,"t":"query(options: QueryOptions) promise.js callback.js try { const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (\"Josh\", 19), (\"Page\", 45)'; const [result, fields] = await connection.query({ sql, // ... other options }); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (\"Josh\", 19), (\"Page\", 45)'; connection.query( { sql, // ... other options }, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(options)","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/insert","h":"#queryoptions","p":845},{"i":853,"t":"ResultSetHeader Specification","s":"ResultSetHeader","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/insert","h":"#resultsetheader","p":845},{"i":855,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/insert","h":"#queryoptions-1","p":845},{"i":857,"t":"info For queries please see the Simple Queries and Prepared Statements examples.","s":"createPoolCluster","u":"/node-mysql2/pt-BR/docs/examples/connections/createPoolCluster","h":"","p":856},{"i":859,"t":"add(group: string, connectionUri: string) promise.js callback.js import mysql from 'mysql2/promise'; try { const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', 'mysql://root:password@localhost:3306/test'); // poolCluster.add('clusterB', '...'); const connection = await poolCluster.getConnection('clusterA'); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', 'mysql://root:password@localhost:3306/test'); // poolCluster.add('clusterB', '...'); poolCluster.getConnection('clusterA', function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); atenção Don't forget to release the connection when finished by using: connection.release()","s":"add(group, connectionUri)","u":"/node-mysql2/pt-BR/docs/examples/connections/createPoolCluster","h":"#addgroup-connectionuri","p":856},{"i":861,"t":"add(group: string, config: PoolOptions) promise.js callback.js import mysql from 'mysql2/promise'; try { const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { host: 'localhost', user: 'root', database: 'test', // port: 3306, // password: '', }); // poolCluster.add('clusterB', '...'); const connection = await poolCluster.getConnection('clusterA'); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { host: 'localhost', user: 'root', database: 'test', // port: 3306, // password: '', }); // poolCluster.add('clusterB', '...'); poolCluster.getConnection('clusterA', function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); atenção Don't forget to release the connection when finished by using: connection.release()","s":"add(group, config)","u":"/node-mysql2/pt-BR/docs/examples/connections/createPoolCluster","h":"#addgroup-config","p":856},{"i":863,"t":"add(group: string, config: PoolOptions) promise.js callback.js import mysql from 'mysql2/promise'; try { const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { // ... passwordSha1: Buffer.from( '8bb6118f8fd6935ad0876a3be34a717d32708ffd', 'hex' ), }); // poolCluster.add('clusterB', '...'); const connection = await poolCluster.getConnection('clusterA'); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { // ... passwordSha1: Buffer.from('8bb6118f8fd6935ad0876a3be34a717d32708ffd', 'hex'), }); // poolCluster.add('clusterB', '...'); poolCluster.getConnection('clusterA', function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); atenção Don't forget to release the connection when finished by using: connection.release()","s":"add(group, config) — SHA1","u":"/node-mysql2/pt-BR/docs/examples/connections/createPoolCluster","h":"#addgroup-config--sha1","p":856},{"i":865,"t":"add(group: string, config: PoolOptions) promise.js callback.js certs/ca-cert.pem import mysql from 'mysql2/promise'; try { const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { // ... ssl: { // key: fs.readFileSync('./certs/client-key.pem'), // cert: fs.readFileSync('./certs/client-cert.pem') ca: fs.readFileSync('./certs/ca-cert.pem'), }, }); // poolCluster.add('clusterB', '...'); const connection = await poolCluster.getConnection('clusterA'); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { // ... ssl: { // key: fs.readFileSync('./certs/client-key.pem'), // cert: fs.readFileSync('./certs/client-cert.pem') ca: fs.readFileSync('./certs/ca-cert.pem'), }, }); // poolCluster.add('clusterB', '...'); poolCluster.getConnection('clusterA', function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); See ssl/certs. atenção Don't forget to release the connection when finished by using: connection.release()","s":"add(group, config) — SSL","u":"/node-mysql2/pt-BR/docs/examples/connections/createPoolCluster","h":"#addgroup-config--ssl","p":856},{"i":867,"t":"add(group: string, config: PoolOptions) You can use Amazon RDS string as value to ssl property to connect to Amazon RDS MySQL over SSL. In that case https://s3.amazonaws.com/rds-downloads/mysql-ssl-ca-cert.pem CA cert is used: promise.js callback.js import mysql from 'mysql2/promise'; try { const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { // ... host: 'db.id.ap-southeast-2.rds.amazonaws.com', ssl: 'Amazon RDS', }); // poolCluster.add('clusterB', '...'); const connection = await poolCluster.getConnection('clusterA'); // ... some query connection.release(); } catch (err) { console.log(err); } Testing try { const [res] = await connection.query('SHOW `status` LIKE \"Ssl_cipher\"'); await poolCluster.end(); console.log(res); } catch (err) { console.log(err); } const mysql = require('mysql2'); const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { // ... host: 'db.id.ap-southeast-2.rds.amazonaws.com', ssl: 'Amazon RDS', }); // poolCluster.add('clusterB', '...'); poolCluster.getConnection('clusterA', function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); Testing connectionquery('SHOW `status` LIKE \"Ssl_cipher\"', function (err, res) { poolCluster.end(); if (err instanceof Error) { console.log(err); return; } console.log(res); }); atenção Don't forget to release the connection when finished by using: connection.release()","s":"add(group, config) — RDS SSL","u":"/node-mysql2/pt-BR/docs/examples/connections/createPoolCluster","h":"#addgroup-config--rds-ssl","p":856},{"i":869,"t":"Issues #2130 — Update TLS certs for Amazon RDS instances Pull Requests #2119 — fix: make startTls code compatible with Bun #2131 — Update Amazon RDS SSL CA cert","s":"Related Links","u":"/node-mysql2/pt-BR/docs/examples/connections/createPoolCluster","h":"#related-links","p":856},{"i":871,"t":"add(group: string, config: PoolOptions) A.js B.js const mysql = require('mysql2'); const SocksConnection = require('socksjs'); const socksProxy = new SocksConnection({ port: 3306 }); const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { stream: socksProxy, }); // poolCluster.add('clusterB', '...'); const poolNamespace = poolCluster.of('clusterA'); const mysql = require('mysql2'); const SocksConnection = require('socksjs'); const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { debug: 1, stream: function () { return new SocksConnection({ port: 3306 }); }, }); // poolCluster.add('clusterB', '...'); const poolNamespace = poolCluster.of('clusterA'); Testing poolNamespace.execute('SELECT SLEEP(1.1) AS `www`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); }); poolNamespace.execute('SELECT SLEEP(1) AS `qqq`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); }); poolNamespace.execute('SELECT SLEEP(1) AS `qqq`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); });","s":"add(group, config) — Socks","u":"/node-mysql2/pt-BR/docs/examples/connections/createPoolCluster","h":"#addgroup-config--socks","p":856},{"i":874,"t":"PoolOptions extends all options from ConnectionOptions: ConnectionOptions Specification PoolOptions Specification","s":"PoolOptions","u":"/node-mysql2/pt-BR/docs/examples/connections/createPoolCluster","h":"#pooloptions","p":856},{"i":876,"t":"The examples below also work for the execute method.","s":"SELECT","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/select","h":"","p":875},{"i":878,"t":"query(sql: string) promise.js callback.js try { const sql = 'SELECT * FROM `users` WHERE `name` = \"Page\" AND `age` > 45'; const [rows, fields] = await connection.query(sql); console.log(rows); console.log(fields); } catch (err) { console.log(err); } const sql = 'SELECT * FROM `users` WHERE `name` = \"Page\" AND `age` > 45'; connection.query(sql, (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows); console.log(fields); }); rows contains rows returned by server fields contains extra meta data about rows, if available info The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(sql)","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/select","h":"#querysql","p":875},{"i":880,"t":"query(options: QueryOptions) promise.js callback.js try { const sql = 'SELECT * FROM `users` WHERE `name` = \"Page\" AND `age` > 45'; const [rows, fields] = await connection.query({ sql, // ... other options }); console.log(rows); console.log(fields); } catch (err) { console.log(err); } const sql = 'SELECT * FROM `users` WHERE `name` = \"Page\" AND `age` > 45'; connection.query( { sql, // ... other options }, (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows); console.log(fields); } ); rows contains rows returned by server fields contains extra meta data about rows, if available info The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(options)","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/select","h":"#queryoptions","p":875},{"i":882,"t":"query(options: QueryOptions) promise.js callback.js try { const sql = 'SELECT * FROM `users` WHERE `name` = \"Page\" AND `age` > 45'; const [rows, fields] = await connection.query({ sql, rowsAsArray: true, // ... other options }); console.log(rows); console.log(fields); } catch (err) { console.log(err); } const sql = 'SELECT * FROM `users` WHERE `name` = \"Page\" AND `age` > 45'; connection.query( { sql, rowsAsArray: true, // ... other options }, (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows); console.log(fields); } ); rows contains rows returned by server as array fields contains extra meta data about rows, if available info The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(options) — Row as Array","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/select","h":"#queryoptions--row-as-array","p":875},{"i":885,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/select","h":"#queryoptions-1","p":875},{"i":887,"t":"index.js 'use strict'; const pool = require('mysql2').createPool({ host: 'localhost', user: 'root', database: 'test', password: 'root', }); setInterval(() => { for (let i = 0; i < 5; ++i) { pool.query((err, rows, fields) => { console.log(rows, fields); // Connection is automatically released once query resolves }); } }, 1000); setInterval(() => { for (let i = 0; i < 5; ++i) { pool.getConnection((err, db) => { db.query('select sleep(0.5) as qqq', (err, rows, fields) => { console.log(rows, fields); db.release(); }); }); } }, 1000);","s":"Pool","u":"/node-mysql2/pt-BR/docs/examples/tests/pool","h":"","p":886},{"i":889,"t":"The examples below also work for the execute method.","s":"UPDATE","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/update","h":"","p":888},{"i":891,"t":"query(sql: string) promise.js callback.js try { const sql = 'UPDATE `users` SET `age` = 20 WHERE `name` = \"Josh\" LIMIT 1'; const [result, fields] = await connection.query(sql); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'UPDATE `users` SET `age` = 20 WHERE `name` = \"Josh\" LIMIT 1'; connection.query(sql, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); }); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(sql)","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/update","h":"#querysql","p":888},{"i":893,"t":"query(options: QueryOptions) promise.js callback.js try { const sql = 'UPDATE `users` SET `age` = 20 WHERE `name` = \"Josh\" LIMIT 1'; const [result, fields] = await connection.query({ sql, // ... other options }); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'UPDATE `users` SET `age` = 20 WHERE `name` = \"Josh\" LIMIT 1'; connection.query( { sql, // ... other options }, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(options)","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/update","h":"#queryoptions","p":888},{"i":896,"t":"ResultSetHeader Specification","s":"ResultSetHeader","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/update","h":"#resultsetheader","p":888},{"i":898,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/update","h":"#queryoptions-1","p":888},{"i":900,"t":"index.js 'use strict'; const mysql = require('mysql2'); const flags = require('mysql2/lib/constants/client.js'); const auth = require('mysql2/lib/auth_41.js'); function authenticate(params, cb) { console.log(params); const doubleSha = auth.doubleSha1('pass123'); const isValid = auth.verifyToken( params.authPluginData1, params.authPluginData2, params.authToken, doubleSha ); if (isValid) { cb(null); } else { // for list of codes lib/constants/errors.js cb(null, { message: 'wrong password dude', code: 1045 }); } } const server = mysql.createServer(); server.listen(3333); server.on('connection', (conn) => { // we can deny connection here: // conn.writeError({ message: 'secret', code: 123 }); // conn.close(); conn.serverHandshake({ protocolVersion: 10, serverVersion: '5.6.10', // 'node.js rocks', connectionId: 1234, statusFlags: 2, characterSet: 8, // capabilityFlags: 0xffffff, // capabilityFlags: -2113931265, capabilityFlags: 2181036031, authCallback: authenticate, }); conn.on('field_list', (table, fields) => { console.log('FIELD LIST:', table, fields); conn.writeEof(); }); conn.on('query', (query) => { conn.writeColumns([ { catalog: 'def', schema: 'test', table: 'test_table', orgTable: 'test_table', name: 'beta', orgName: 'beta', characterSet: 33, columnLength: 384, columnType: 253, flags: 0, decimals: 0, }, ]); conn.writeTextRow(['test тест テスト փորձարկում পরীক্ষা kiểm tra ']); conn.writeTextRow(['ტესტი પરીક્ષણ מבחן פּרובירן اختبار परीक्षण']); conn.writeEof(); conn.close(); }); });","s":"Server","u":"/node-mysql2/pt-BR/docs/examples/tests/server","h":"","p":899},{"i":902,"t":"index.js 'use strict'; const mysql = require('mysql2'); const ClientFlags = require('mysql2/lib/constants/client.js'); const server = mysql.createServer(); server.listen(3307); server.on('connection', (conn) => { console.log('connection'); conn.serverHandshake({ protocolVersion: 10, serverVersion: 'node.js rocks', connectionId: 1234, statusFlags: 2, characterSet: 8, capabilityFlags: 0xffffff ^ ClientFlags.COMPRESS, }); conn.on('field_list', (table, fields) => { console.log('field list:', table, fields); conn.writeEof(); }); const remote = mysql.createConnection({ user: 'root', database: 'dbname', host: 'server.example.com', password: 'secret', }); conn.on('query', (sql) => { console.log(`proxying query: ${sql}`); remote.query(sql, function (err) { // overloaded args, either (err, result :object) // or (err, rows :array, columns :array) if (Array.isArray(arguments[1])) { // response to a 'select', 'show' or similar const rows = arguments[1], columns = arguments[2]; console.log('rows', rows); console.log('columns', columns); conn.writeTextResult(rows, columns); } else { // response to an 'insert', 'update' or 'delete' const result = arguments[1]; console.log('result', result); conn.writeOk(result); } }); }); conn.on('end', remote.end.bind(remote)); });","s":"MySQL Proxy","u":"/node-mysql2/pt-BR/docs/examples/tests/mysql-proxy","h":"","p":901},{"i":904,"t":"index.ts /** * The types are explicity for learning purpose * By extending the `RowDataPacket`, you can use your Interface in `query` and `execute` */ import mysql, { ConnectionOptions, ProcedureCallPacket, ResultSetHeader, RowDataPacket, } from 'mysql2/promise'; interface User extends RowDataPacket { /** id */ 0: number; /** name */ 1: string; } const isResultSetHeader = (data: unknown): data is ResultSetHeader => { if (!data || typeof data !== 'object') return false; const keys = [ 'fieldCount', 'affectedRows', 'insertId', 'info', 'serverStatus', 'warningStatus', 'changedRows', ]; return keys.every((key) => key in data); }; (async () => { const access: ConnectionOptions = { host: '', user: '', password: '', database: '', rowsAsArray: true, }; const conn = await mysql.createConnection(access); /** Deleting the `users` table, if it exists */ await conn.query('DROP TABLE IF EXISTS `users`;'); /** Creating a minimal user table */ await conn.query( 'CREATE TABLE `users` (`id` INT(11) AUTO_INCREMENT, `name` VARCHAR(50), PRIMARY KEY (`id`));' ); /** Inserting some users */ const [inserted] = await conn.execute( 'INSERT INTO `users`(`name`) VALUES(?), (?), (?), (?);', ['Josh', 'John', 'Marie', 'Gween'] ); console.log('Inserted:', inserted.affectedRows); /** Deleting the `getUsers` procedure, if it exists */ await conn.query('DROP PROCEDURE IF EXISTS getUsers'); /** Creating a procedure to get the users */ await conn.query(` CREATE PROCEDURE getUsers() BEGIN SELECT * FROM users ORDER BY name ASC; END `); /** Getting users */ const [procedureResult] = await conn.query>('CALL getUsers()'); procedureResult.forEach((users) => { /** By perform a `SELECT` or `SHOW`, The last item of `procedureResult` always be a `ResultSetHeader` */ if (isResultSetHeader(users)) { console.log('----------------'); console.log('Affected Rows:', users.affectedRows); } else { users.forEach((user) => { console.log('----------------'); console.log('id: ', user[0]); console.log('name:', user[1]); }); } }); await conn.end(); })(); /** Output * * Inserted: 4 * ---------------- * id: 4 * name: Gween * ---------------- * id: 2 * name: John * ---------------- * id: 1 * name: Josh * ---------------- * id: 3 * name: Marie * ---------------- * Affected Rows: 0 */","s":"Procedure Call Packet (Row as Array)","u":"/node-mysql2/pt-BR/docs/examples/typescript/procedure-call/row-as-array","h":"","p":903},{"i":906,"t":"index.ts /** * The types are explicity for learning purpose * By extending the `RowDataPacket`, you can use your Interface in `query` and `execute` */ import mysql, { ConnectionOptions, ResultSetHeader, RowDataPacket, } from 'mysql2/promise'; interface User extends RowDataPacket { id: number; name: string; } (async () => { const access: ConnectionOptions = { host: '', user: '', password: '', database: '', }; const conn = await mysql.createConnection(access); /** Deleting the `users` table, if it exists */ await conn.query('DROP TABLE IF EXISTS `users`;'); /** Creating a minimal user table */ await conn.query( 'CREATE TABLE `users` (`id` INT(11) AUTO_INCREMENT, `name` VARCHAR(50), PRIMARY KEY (`id`));' ); /** Inserting some users */ const [inserted] = await conn.execute( 'INSERT INTO `users`(`name`) VALUES(?), (?), (?), (?);', ['Josh', 'John', 'Marie', 'Gween'] ); console.log('Inserted:', inserted.affectedRows); /** Getting users */ const [users] = await conn.query( 'SELECT * FROM `users` ORDER BY `name` ASC;' ); users.forEach((user) => { console.log('-----------'); console.log('id: ', user.id); console.log('name:', user.name); }); await conn.end(); })(); /** Output * * Inserted: 4 * ----------- * id: 4 * name: Gween * ----------- * id: 2 * name: John * ----------- * id: 1 * name: Josh * ----------- * id: 3 * name: Marie */","s":"Row Data Packet","u":"/node-mysql2/pt-BR/docs/examples/typescript/row-data/index","h":"","p":905},{"i":908,"t":"index.ts /** * The types are explicity for learning purpose * By extending the `RowDataPacket`, you can use your Interface in `query` and `execute` */ import mysql, { ConnectionOptions, ResultSetHeader, RowDataPacket, } from 'mysql2/promise'; interface User extends RowDataPacket { id: number; name: string; } (async () => { const access: ConnectionOptions = { host: '', user: '', password: '', database: '', multipleStatements: true, }; const conn = await mysql.createConnection(access); /** Deleting the `users` table, if it exists */ await conn.query('DROP TABLE IF EXISTS `users`;'); /** Creating a minimal user table */ await conn.query( 'CREATE TABLE `users` (`id` INT(11) AUTO_INCREMENT, `name` VARCHAR(50), PRIMARY KEY (`id`));' ); /** Inserting some users */ const [inserted] = await conn.execute( 'INSERT INTO `users`(`name`) VALUES(?), (?), (?), (?);', ['Josh', 'John', 'Marie', 'Gween'] ); console.log('Inserted:', inserted.affectedRows); /** Getting users */ const [rows] = await conn.query( [ 'SELECT * FROM `users` ORDER BY `name` ASC LIMIT 2;', 'SELECT * FROM `users` ORDER BY `name` ASC LIMIT 2 OFFSET 2;', ].join(' ') ); rows.forEach((users) => { users.forEach((user) => { console.log('-----------'); console.log('id: ', user.id); console.log('name:', user.name); }); }); await conn.end(); })(); /** Output * * Inserted: 4 * ----------- * id: 4 * name: Gween * ----------- * id: 2 * name: John * ----------- * id: 1 * name: Josh * ----------- * id: 3 * name: Marie */","s":"Row Data Packet (Multi Statements)","u":"/node-mysql2/pt-BR/docs/examples/typescript/row-data/multi-statements","h":"","p":907},{"i":910,"t":"index.ts /** * The types are explicity for learning purpose * By extending the `RowDataPacket`, you can use your Interface in `query` and `execute` */ import mysql, { ConnectionOptions, ResultSetHeader, RowDataPacket, } from 'mysql2/promise'; interface User extends RowDataPacket { /** id */ 0: number; /** name */ 1: string; } (async () => { const access: ConnectionOptions = { host: '', user: '', password: '', database: '', rowsAsArray: true, }; const conn = await mysql.createConnection(access); /** Deleting the `users` table, if it exists */ await conn.query('DROP TABLE IF EXISTS `users`;'); /** Creating a minimal user table */ await conn.query( 'CREATE TABLE `users` (`id` INT(11) AUTO_INCREMENT, `name` VARCHAR(50), PRIMARY KEY (`id`));' ); /** Inserting some users */ const [inserted] = await conn.execute( 'INSERT INTO `users`(`name`) VALUES(?), (?), (?), (?);', ['Josh', 'John', 'Marie', 'Gween'] ); console.log('Inserted:', inserted.affectedRows); /** Getting users */ const [users] = await conn.query( 'SELECT * FROM `users` ORDER BY `name` ASC;' ); users.forEach((user) => { console.log('-----------'); console.log('id: ', user[0]); console.log('name:', user[1]); }); await conn.end(); })(); /** Output * * Inserted: 4 * ----------- * id: 4 * name: Gween * ----------- * id: 2 * name: John * ----------- * id: 1 * name: Josh * ----------- * id: 3 * name: Marie */","s":"Row Data Packet (Row as Array)","u":"/node-mysql2/pt-BR/docs/examples/typescript/row-data/row-as-array","h":"","p":909},{"i":912,"t":"index.ts /** * The types are explicity for learning purpose * By extending the `RowDataPacket`, you can use your Interface in `query` and `execute` */ import mysql, { ConnectionOptions, ResultSetHeader, RowDataPacket, } from 'mysql2/promise'; interface User extends RowDataPacket { /** id */ 0: number; /** name */ 1: string; } (async () => { const access: ConnectionOptions = { host: '', user: '', password: '', database: '', multipleStatements: true, rowsAsArray: true, }; const conn = await mysql.createConnection(access); /** Deleting the `users` table, if it exists */ await conn.query('DROP TABLE IF EXISTS `users`;'); /** Creating a minimal user table */ await conn.query( 'CREATE TABLE `users` (`id` INT(11) AUTO_INCREMENT, `name` VARCHAR(50), PRIMARY KEY (`id`));' ); /** Inserting some users */ const [inserted] = await conn.execute( 'INSERT INTO `users`(`name`) VALUES(?), (?), (?), (?);', ['Josh', 'John', 'Marie', 'Gween'] ); console.log('Inserted:', inserted.affectedRows); /** Getting users */ const [rows] = await conn.query( [ 'SELECT * FROM `users` ORDER BY `name` ASC LIMIT 2;', 'SELECT * FROM `users` ORDER BY `name` ASC LIMIT 2 OFFSET 2;', ].join(' ') ); rows.forEach((users) => { users.forEach((user) => { console.log('-----------'); console.log('id: ', user[0]); console.log('name:', user[1]); }); }); await conn.end(); })(); /** Output * * Inserted: 4 * ----------- * id: 4 * name: Gween * ----------- * id: 2 * name: John * ----------- * id: 1 * name: Josh * ----------- * id: 3 * name: Marie */","s":"Row Data Packet (Multi Statements and Row as Array)","u":"/node-mysql2/pt-BR/docs/examples/typescript/row-data/row-as-array-multi-statements","h":"","p":911},{"i":914,"t":"This section provides answers to commonly asked questions about MySQL2. dica To explore the FAQs, please use the sidebar navigation on desktop or access the menu on mobile devices.","s":"Frequently Asked Questions","u":"/node-mysql2/pt-BR/docs/faq","h":"","p":913},{"i":916,"t":"O projeto MySQL2 é uma continuação do MySQL-Native. O código do analisador de protocolo (protocol parser) foi reescrito do zero e a API foi alterada para corresponder ao popular mysqljs/mysql. A equipe do MySQL2 está trabalhando em conjunto com a equipe do mysqljs/mysql para fatorar o código compartilhado e movê-lo para a organização mysqljs. O MySQL2 é maioritariamente compatível com a API do mysqljs e suporta a maioria de suas funcionalidades. O MySQL2 também oferece essas funcionalidades adicionais: Desempenho mais rápido / melhor Instruções Preparadas (Prepared Statements) Protocolo de log binário MySQL (MySQL Binary Log Protocol) Servidor MySQL Estende o suporte para Encoding and Collation Promise Wrapper Compressão SSL e Authentication Switch Streams Personalizados Conjunto de Conexões (Pooling)","s":"História e Porque o MySQL2","u":"/node-mysql2/pt-BR/docs/history-and-why-mysq2","h":"","p":915},{"i":918,"t":"The Stability Badges are indications of a section's stability. The stability indices are as follows: 0Deprecated The feature might generate warnings and does not assure backward compatibility. Experimental: These features are not bound by semantic versioning. They may undergo non-backward compatible changes or be removed in future releases. Their use in production is discouraged. Use caution with Experimental features, especially in libraries. Users might not expect changes from these unstable features. To reduce surprises, consider using a command-line flag for Experimental features. Experimental features are classified into stages: 1Experimental Experimental features at this stage are currently in development and prone to considerable changes. 1.1Early Development Experimental features at this stage are approaching minimum viability. 1.2Release Candidate Experimental features are close to reaching stability. Major changes are not expected, but they could still occur based on user feedback. Testing and feedback are important to ascertain the readiness of these features for stable classification. 2Stable Compatibility with the MySQL ecosystem is a high priority. 3Legacy This feature, while not likely to be removed and still subject to semantic versioning, is not under active maintenance and other options are available. Features are classified as legacy instead of deprecated when they cause no harm and have widespread use in the MySQL ecosystem. It's unlikely that bugs in legacy features will be addressed.","s":"Stability Badges","u":"/node-mysql2/pt-BR/docs/stability-badges","h":"","p":917},{"i":920,"t":"This section details error handling techniques in MySQL2. It covers essential error management strategies for methods such as createConnection, createPool, createPoolCluster, execute and query.","s":"How to handle errors?","u":"/node-mysql2/pt-BR/docs/faq/how-to-handle-errors","h":"","p":919},{"i":922,"t":"createConnection 2Stable This solution has been tested and confirmed as the correct answer. Handling connection errors by adding an error event listener: const mysql = require('mysql2'); connection = mysql.createConnection({ host: '', user: '', database: '', }); connection.addListener('error', (err) => { if (err instanceof Error) { console.log(`createConnection error:`, err); } }); createPool 2Stable This solution has been tested. Handling connection errors through callback's err parameter: const mysql = require('mysql2'); const pool = mysql.createPool({ host: '', user: '', database: '', }); pool.getConnection((err, connection) => { if (err instanceof Error) { console.log('pool.getConnection error:', err); return; } }); createPoolCluster 2Stable This solution has been tested. Handling connection errors through callback's err parameter: const mysql = require('mysql2'); const poolCluster = mysql.createPoolCluster(); poolCluster.add('NodeI', { host: '', user: '', database: '', }); poolCluster.getConnection('NodeI', (err, connection) => { if (err instanceof Error) { console.log('poolCluster.getConnection error:', err); return; } }); execute 2Stable This solution has been tested. Handling execute errors through callback's err parameter: connection.execute('SELEC 1 + 1', (err, rows) => { if (err instanceof Error) { console.log('execute error:', err); return; } console.log(rows); }); It will work for both createConnection, createPool and createPoolCluster connections. query 2Stable This solution has been tested. Handling query errors through callback's err parameter: connection.query('SELEC 1 + 1', (err, rows) => { if (err instanceof Error) { console.log('query error:', err); return; } console.log(rows); }); It will work for both createConnection, createPool and createPoolCluster connections.","s":"Using callbacks","u":"/node-mysql2/pt-BR/docs/faq/how-to-handle-errors","h":"#using-callbacks","p":919},{"i":924,"t":"createConnection 2Stable This solution has been tested and confirmed as the correct answer. Handling connection errors through try-catch block: import mysql from 'mysql2/promise'; try { const connection = await mysql.createConnection({ host: '', user: '', database: '', }); } catch (err) { if (err instanceof Error) { console.log(err); } } createPool 2Stable This solution has been tested. Handling connection errors through try-catch block: import mysql from 'mysql2/promise'; const pool = mysql.createPool({ host: '', user: '', database: '', }); try { const connection = await pool.getConnection(); } catch (err) { if (err instanceof Error) { console.log(err); } } createPoolCluster 2Stable This solution has been tested. Handling connection errors through try-catch block: import mysql from 'mysql2/promise'; const poolCluster = mysql.createPoolCluster(); poolCluster.add('NodeI', { host: '', user: '', database: '', }); try { await poolCluster.getConnection('NodeI'); } catch (err) { if (err instanceof Error) { console.log('createConnection error:', err); } } execute 2Stable This solution has been tested. Handling execute errors through try-catch block: try { const [rows] = await connection.execute('SELEC 1 + 1'); console.log(rows); } catch (err) { if (err instanceof Error) { console.log('execute error:', err); } } It will work for both createConnection, createPool and createPoolCluster connections. query 2Stable This solution has been tested. Handling query errors through try-catch block: try { const [rows] = await connection.query('SELEC 1 + 1'); console.log(rows); } catch (err) { if (err instanceof Error) { console.log('query error:', err); } } It will work for both createConnection, createPool and createPoolCluster connections.","s":"Using promises","u":"/node-mysql2/pt-BR/docs/faq/how-to-handle-errors","h":"#using-promises","p":919},{"i":926,"t":"Discussions #1998 #2282","s":"Related Links","u":"/node-mysql2/pt-BR/docs/faq/how-to-handle-errors","h":"#related-links","p":919},{"i":928,"t":"index.ts db.ts /** * The types are explicity for learning purpose */ import { PoolOptions } from 'mysql2/promise'; import { MySQL } from './db.js'; interface User extends RowDataPacket { id: number; name: string; } const access: PoolOptions = { host: '', user: '', password: '', database: '', }; (async () => { const mysql = new MySQL(access); /** Deleting the `users` table, if it exists */ await mysql.queryResult('DROP TABLE IF EXISTS `users`;'); /** Creating a minimal user table */ await mysql.queryResult( 'CREATE TABLE `users` (`id` INT(11) AUTO_INCREMENT, `name` VARCHAR(50), PRIMARY KEY (`id`));' ); /** Inserting some users */ const [inserted] = await mysql.executeResult( 'INSERT INTO `users`(`name`) VALUES(?), (?), (?), (?);', ['Josh', 'John', 'Marie', 'Gween'] ); console.log('Inserted:', inserted.affectedRows); /** Getting users */ const [users] = await mysql.queryRows( 'SELECT * FROM `users` ORDER BY `name` ASC;' ); users.forEach((user: User) => { console.log('-----------'); console.log('id: ', user.id); console.log('name:', user.name); }); await mysql.connection.end(); })(); /** Output * * Inserted: 4 * ----------- * id: 4 * name: Gween * ----------- * id: 2 * name: John * ----------- * id: 1 * name: Josh * ----------- * id: 3 * name: Marie */ /** * The types are explicity for learning purpose */ import { createPool, PoolOptions, Pool, ResultSetHeader, RowDataPacket, } from 'mysql2/promise'; export class MySQL { private conn: Pool; private credentials: PoolOptions; constructor(credentials: PoolOptions) { this.credentials = credentials; this.conn = createPool(this.credentials); } /** A random method to simulate a step before to get the class methods */ private ensureConnection() { if (!this?.conn) this.conn = createPool(this.credentials); } /** For `SELECT` and `SHOW` */ get queryRows() { this.ensureConnection(); return this.conn.query.bind(this.conn); } /** For `SELECT` and `SHOW` with `rowAsArray` as `true` */ get queryRowsAsArray() { this.ensureConnection(); return this.conn.query.bind(this.conn); } /** For `INSERT`, `UPDATE`, etc. */ get queryResult() { this.ensureConnection(); return this.conn.query.bind(this.conn); } /** For multiple `INSERT`, `UPDATE`, etc. with `multipleStatements` as `true` */ get queryResults() { this.ensureConnection(); return this.conn.query.bind(this.conn); } /** For `SELECT` and `SHOW` */ get executeRows() { this.ensureConnection(); return this.conn.execute.bind(this.conn); } /** For `SELECT` and `SHOW` with `rowAsArray` as `true` */ get executeRowsAsArray() { this.ensureConnection(); return this.conn.execute.bind(this.conn); } /** For `INSERT`, `UPDATE`, etc. */ get executeResult() { this.ensureConnection(); return this.conn.execute.bind(this.conn); } /** For multiple `INSERT`, `UPDATE`, etc. with `multipleStatements` as `true` */ get executeResults() { this.ensureConnection(); return this.conn.execute.bind(this.conn); } /** Expose the Pool Connection */ get connection() { return this.conn; } }","s":"Basic Custom Class","u":"/node-mysql2/pt-BR/docs/examples/typescript/basic-custom-class","h":"","p":927},{"i":930,"t":"index.ts /** * The types are explicity for learning purpose * By extending the `RowDataPacket`, you can use your Interface in `query` and `execute` */ import mysql, { ConnectionOptions, ProcedureCallPacket, ResultSetHeader, RowDataPacket, } from 'mysql2/promise'; interface User extends RowDataPacket { id: number; name: string; } const isResultSetHeader = (data: unknown): data is ResultSetHeader => { if (!data || typeof data !== 'object') return false; const keys = [ 'fieldCount', 'affectedRows', 'insertId', 'info', 'serverStatus', 'warningStatus', 'changedRows', ]; return keys.every((key) => key in data); }; (async () => { const access: ConnectionOptions = { host: '', user: '', password: '', database: '', }; const conn = await mysql.createConnection(access); /** Deleting the `users` table, if it exists */ await conn.query('DROP TABLE IF EXISTS `users`;'); /** Creating a minimal user table */ await conn.query( 'CREATE TABLE `users` (`id` INT(11) AUTO_INCREMENT, `name` VARCHAR(50), PRIMARY KEY (`id`));' ); /** Inserting some users */ const [inserted] = await conn.execute( 'INSERT INTO `users`(`name`) VALUES(?), (?), (?), (?);', ['Josh', 'John', 'Marie', 'Gween'] ); console.log('Inserted:', inserted.affectedRows); /** Deleting the `getUsers` procedure, if it exists */ await conn.query('DROP PROCEDURE IF EXISTS getUsers'); /** Creating a procedure to get the users */ await conn.query(` CREATE PROCEDURE getUsers() BEGIN SELECT * FROM users ORDER BY name ASC; END `); /** Getting users */ const [procedureResult] = await conn.query>('CALL getUsers()'); procedureResult.forEach((users) => { /** By perform a `SELECT` or `SHOW`, The last item of `procedureResult` always be a `ResultSetHeader` */ if (isResultSetHeader(users)) { console.log('----------------'); console.log('Affected Rows:', users.affectedRows); } else { users.forEach((user) => { console.log('----------------'); console.log('id: ', user.id); console.log('name:', user.name); }); } }); await conn.end(); })(); /** Output * * Inserted: 4 * ---------------- * id: 4 * name: Gween * ---------------- * id: 2 * name: John * ---------------- * id: 1 * name: Josh * ---------------- * id: 3 * name: Marie * ---------------- * Affected Rows: 0 */","s":"Procedure Call Packet","u":"/node-mysql2/pt-BR/docs/examples/typescript/procedure-call/index","h":"","p":929}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/622",[0,4.11,1,1.805,2,0.63,3,4.019,4,4.019,5,3.726,6,2.933,7,4.636,8,1.376,9,4.745,10,7.149,11,4.523,12,3.438,13,3.24,14,4.019,15,2.933,16,3.686,17,5.546,18,6.243,19,4.859,20,1.614,21,4.523,22,4.523,23,4.523,24,5.087,25,4.523,26,3.438,27,3.438,28,4.523,29,4.019,30,2.7,31,4.523,32,3.438,33,4.523,34,4.523,35,4.523,36,4.019,37,4.523,38,2.601,39,4.019,40,4.523,41,3.726,42,4.523,43,3.438,44,4.019,45,4.523,46,1.484,47,3.438,48,3.24,49,4.523,50,4.019,51,4.523,52,3.438,53,4.523,54,4.019,55,4.523,56,4.523,57,3.075,58,4.019,59,4.523,60,4.523,61,4.523]],["t/624",[0,4.519,2,0.693,5,3.259,6,3.541,7,3.541,8,1.363,30,3.259,36,4.851,41,4.963,52,5.382,62,4.45,63,5.461,64,5.461,65,5.461,66,4.851,67,5.461,68,5.461,69,5.461,70,1.721,71,2.401,72,4.45,73,5.461,74,5.461,75,5.461,76,6.292,77,5.461,78,2.84,79,5.461,80,5.461,81,3.911,82,3.712,83,5.461,84,5.461,85,5.461,86,2.932,87,4.851,88,5.461]],["t/626",[0,3.96,1,2.748,19,4.682,38,3.96,89,6.888,90,6.888,91,6.12,92,6.888,93,6.888,94,6.888,95,4.933,96,6.888,97,5.613,98,6.888]],["t/628",[99,6.828,100,7.172,101,1.209,102,5.845,103,3.618,104,7.172,105,7.172,106,5.451]],["t/630",[107,5.223,108,7.293,109,5.543,110,6.479,111,4.957,112,7.293,113,7.293]],["t/632",[1,2.704,2,0.361,7,3.777,44,3.64,99,6.603,102,3.339,106,3.114,109,4.427,114,5.825,115,5.825,116,4.097,117,6.021,118,4.097,119,5.825,120,5.825,121,3.029,122,2.067,123,2.274,124,4.097,125,4.097,126,1.951,127,5.523,128,5.825,129,4.097,130,5.286,131,5.825,132,4.097,133,4.097,134,4.097,135,5.61,136,5.175,137,1.835,138,4.097,139,3.64,140,4.097,141,3.64,142,2.785,143,4.097,144,4.097,145,4.097,146,4.097,147,4.097,148,3.64,149,4.747,150,2.938,151,2.131,152,2.785,153,3.64,154,1.562,155,5.825,156,4.097,157,4.097,158,4.097,159,3.64,160,3.64,161,4.097,162,4.097,163,4.097,164,3.114,165,3.339,166,4.097,167,4.097,168,4.097,169,4.097,170,3.64,171,2.934,172,3.64,173,3.339]],["t/634",[101,1.009,102,4.879,122,3.02,148,5.319,149,4.879,164,4.55,165,4.879,174,2.446,175,5.877,176,5.987,177,3.323,178,5.319,179,7.29,180,4.879,181,5.319,182,5.319,183,6.12,184,5.987,185,5.987,186,6.672,187,5.987,188,5.987,189,5.987,190,5.319,191,5.987,192,3.719,193,5.987]],["t/636",[2,0.787,126,1.901,142,6.164,154,2.163,175,5.199,183,4.624,194,6.413,195,5.675,196,5.241,197,2.702,198,5.041,199,4.624,200,3.047,201,5.675,202,1.559,203,5.675,204,5.675,205,5.041,206,5.916,207,3.525,208,4.624,209,5.675]],["t/638",[2,0.753,103,2.959,126,1.965,151,3.051,154,2.236,175,4.201,183,4.78,202,1.612,206,6.625,207,3.643,208,4.78,210,7.588,211,5.211,212,5.211,213,5.866,214,5.866,215,7.414,216,5.866,217,2.287,218,4.458,219,3.051,220,1.742,221,5.866,222,5.866,223,2.515,224,4.425]],["t/640",[2,0.731,101,1.03,154,2.33,164,5.783,175,5.449,179,6.76,186,6.76,190,5.431,202,1.68,207,3.797,208,4.982,225,7.922,226,6.113,227,6.113,228,4.982,229,2.759,230,3.797,231,4.982,232,4.378,233,5.431]],["t/642",[2,0.786,154,2.525,202,1.821,234,8.584,235,6.626,236,6.626,237,6.626,238,6.626,239,6.626,240,6.626,241,6.626,242,6.626,243,6.626,244,6.626]],["t/644",[57,4.502,99,4.021,122,2.489,127,6.994,130,6.147,164,3.75,175,3.534,177,2.739,245,1.555,246,5.355,247,6.623,248,5.884,249,6.623,250,4.934,251,4.934,252,7.991,253,6.512,254,7.991,255,7.991,256,1.28,257,4.383,258,4.934,259,4.934,260,6.623,261,6.623,262,3.75,263,6.623,264,4.934,265,4.934,266,1.437,267,3.534,268,4.383,269,4.934]],["t/646",[1,2.849,6,3.586,7,5.127,8,1.665,54,4.913,57,3.759,71,2.432,78,2.876,86,2.969,137,1.743,150,2.79,151,2.876,180,5.819,212,4.913,253,4.507,270,5.53,271,4.507,272,5.53,273,4.507,274,5.53,275,4.913,276,5.53,277,4.507,278,3.435,279,3.961,280,4.913,281,3.586,282,2.634,283,2.563,284,3.07,285,4.507,286,3.961,287,4.203,288,5.53,289,4.203,290,4.507,291,3.586]],["t/648",[1,2.985,150,3.774,154,2.851,246,5.358]],["t/650",[2,0.651,16,4.748,20,2.634,81,5.287,107,4.173,126,2.473,177,4.098,200,3.963,202,1.601,246,4.173,273,4.748,292,7.383,293,5.827,294,5.827,295,4.748,296,5.827,297,5.177,298,4.173,299,5.827,300,4.428,301,1.403,302,5.827,303,5.177,304,3.477,305,5.827,306,2.499,307,5.827,308,5.827,309,5.177,310,5.827]],["t/652",[7,5.355,8,1.664,86,4.433,87,5.393,111,4.126,137,1.913,149,4.947,282,2.891,283,2.813,291,4.912,311,6.071,312,5.393,313,5.393,314,6.73,315,6.071,316,5.393,317,6.071,318,7.575,319,7.575,320,6.071]],["t/654",[7,4.539,8,1.347,110,6.218,127,6.731,130,5.013,154,2.668,321,6.999,322,8.786,323,1.851]],["t/656",[5,3.701,8,1.193,15,4.021,30,3.701,38,3.565,41,3.701,62,5.053,78,3.225,86,3.329,95,4.441,111,4.215,278,3.851,282,2.953,283,2.873,289,4.713,290,6.255,291,4.021,324,6.201,325,5.053,326,4.713,327,6.201,328,4.713,329,6.201,330,5.509,331,5.509,332,5.509,333,4.441]],["t/658",[0,3.263,1,3.194,13,4.064,30,4.332,38,3.263,43,4.313,50,5.041,109,6.084,130,5.733,141,5.041,309,5.041,334,4.624,335,5.675,336,5.675,337,5.675,338,4.064,339,5.041,340,5.675,341,5.675,342,5.675,343,4.624,344,5.675,345,5.675,346,5.916,347,6.523,348,5.041,349,5.041,350,5.675,351,4.064,352,5.041,353,5.675]],["t/660",[0,3.417,2,0.842,5,2.516,8,0.811,13,3.019,26,3.204,30,1.591,32,3.204,38,1.532,41,3.547,82,2.865,86,2.263,95,1.909,97,3.435,121,2.192,197,2.83,202,0.732,229,2.682,245,1.328,282,1.269,283,1.235,284,1.479,323,1.115,326,2.026,333,1.909,351,3.019,354,2.172,355,4.256,356,0.513,357,2.172,358,2.172,359,3.745,360,1.728,361,3.745,362,0.951,363,3.204,364,3.435,365,3.435,366,0.971,367,0.858,368,1.168,369,1.643,370,1.643,371,2.424,372,0.996,373,1.355,374,2.456,375,1.633,376,3.547,377,2.167,378,1.991,379,2.613,380,3.191,381,2.487,382,4.843,383,3.745,384,3.745,385,3.745,386,3.204,387,1.643,388,3.745,389,3.435,390,3.745,391,1.136,392,1.279,393,1.034,394,4.215,395,4.215,396,4.215,397,3.435,398,0.931,399,1.643]],["t/662",[0,3.82,1,1.432,2,0.801,5,2.727,8,0.879,12,3.473,13,3.272,15,1.416,19,1.484,24,1.779,26,2.728,27,1.659,30,3.49,32,2.728,38,2.627,41,3.965,43,1.659,47,3.473,48,3.79,52,1.659,70,1.131,82,2.439,95,3.79,97,2.925,121,1.866,197,1.709,202,0.6,207,1.356,245,1.131,266,1.33,282,2.785,283,2.913,284,1.212,323,0.577,326,4.022,333,1.564,334,2.925,338,2.57,339,1.94,343,1.779,351,2.57,354,1.779,355,3.79,356,0.691,357,1.779,358,1.779,360,1.416,362,0.779,363,2.728,364,2.925,365,2.925,366,0.793,367,0.73,368,0.802,369,1.399,370,1.399,371,2.063,372,0.848,373,1.154,374,1.888,375,1.454,377,1.309,378,1.202,379,1.578,381,1.502,382,4.313,383,3.188,384,3.188,385,3.188,386,2.728,387,1.399,388,3.188,389,2.925,390,3.188,391,0.589,392,0.772,393,0.536,398,0.763,399,0.851,400,2.728,401,2.183,402,2.183,403,2.183,404,1.94,405,4.569,406,3.188,407,2.183,408,3.188,409,1.779,410,2.183,411,2.183,412,3.188,413,3.188,414,2.183,415,2.183,416,1.779,417,2.183,418,2.183,419,2.183,420,2.183,421,2.183,422,2.183,423,2.183,424,3.188,425,2.183,426,4.569,427,2.183,428,3.589,429,2.183,430,2.183,431,1.779,432,1.779,433,2.183,434,5.292,435,1.94,436,2.183,437,3.589,438,3.589,439,1.927,440,3.589,441,2.728,442,3.589,443,3.589,444,2.183,445,2.183,446,2.183,447,2.183,448,2.183,449,2.183,450,1.659,451,1.564,452,2.183,453,1.94,454,2.183]],["t/664",[0,4.27,2,0.804,5,2.363,8,0.762,9,3.547,12,3.009,14,4.146,15,2.567,17,2.698,19,1.215,27,3.547,30,2.363,32,3.974,38,3.006,41,4.432,43,3.547,47,2.308,48,2.835,71,3.265,82,5.144,91,2.698,121,1.58,197,1.446,202,0.491,219,2.427,245,0.957,273,1.457,284,2.198,306,2.001,323,0.473,333,1.281,334,3.226,338,2.175,351,2.175,352,2.698,354,1.457,355,2.835,356,0.762,357,1.457,358,1.457,360,2.567,362,0.638,363,3.009,366,0.784,367,0.364,368,0.884,370,1.184,371,1.746,372,0.718,373,0.977,375,1.282,386,1.359,391,0.482,392,0.852,393,0.439,398,0.625,399,0.697,400,1.359,408,1.589,409,2.475,431,1.457,435,1.589,453,3.517,455,2.698,456,5.198,457,1.589,458,1.788,459,1.788,460,1.788,461,1.788,462,1.788,463,1.788,464,1.788,465,1.457,466,1.589,467,1.788,468,3.959,469,1.788,470,1.788,471,1.788,472,1.788,473,1.788,474,1.788,475,1.788,476,1.788,477,1.788,478,1.788,479,1.444,480,3.037,481,3.037,482,3.037,483,3.037,484,1.631,485,3.037,486,4.667,487,3.026,488,3.037,489,3.037,490,4.667,491,4.146,492,2.475,493,3.037,494,4.667,495,2.059,496,3.037,497,3.037,498,3.037,499,3.037,500,1.788,501,1.788,502,1.589,503,1.788,504,1.788,505,1.788,506,1.788,507,1.788,508,1.788,509,1.788,510,4.667,511,4.667,512,1.039,513,2.698,514,3.037,515,3.037,516,3.037,517,1.788,518,1.067,519,1.788,520,1.788,521,1.788,522,1.788,523,1.241,524,1.16,525,3.037,526,2.475,527,3.037,528,3.959,529,3.037,530,3.037,531,1.215,532,1.788,533,1.457,534,1.589]],["t/666",[0,4.552,1,2.431,2,0.826,5,2.283,6,1.531,8,1.067,12,1.795,15,1.531,19,1.605,38,1.358,41,3.636,48,2.74,58,2.098,71,3.02,82,3.278,86,1.268,101,0.398,121,2.884,122,1.93,197,1.822,202,1.524,220,1.136,245,1.747,284,4.468,325,1.924,332,2.098,338,2.74,355,2.74,356,0.454,361,3.399,362,1.365,363,3.665,364,3.93,365,3.93,366,1.108,367,0.982,368,1.457,369,1.88,370,2.162,371,3.188,372,1.31,373,1.959,375,1.524,377,1.395,378,1.282,379,1.682,398,0.825,399,1.88,400,2.908,424,2.098,431,1.924,439,2.054,456,1.924,484,1.268,491,2.098,492,1.924,502,2.098,512,1.65,523,1.563,533,1.924,535,2.361,536,2.361,537,2.361,538,2.773,539,3.399,540,3.826,541,3.826,542,2.361,543,2.361,544,2.361,545,2.361,546,2.361,547,3.826,548,2.361,549,2.361,550,6.093,551,2.361,552,1.924,553,3.826,554,1.605,555,2.098,556,2.361,557,1.691,558,2.361,559,2.361,560,2.361,561,2.361,562,2.361,563,2.361,564,2.361,565,2.098,566,1.094,567,2.361,568,1.467]],["t/668",[0,2.478,2,0.783,5,1.636,7,1.777,8,0.527,9,2.083,13,1.963,15,1.777,19,1.863,24,2.234,26,2.083,27,2.083,38,1.576,39,2.435,41,4.743,47,5.295,48,3.814,52,2.083,70,1.358,82,1.863,121,2.241,218,3.275,220,1.581,223,2.283,245,1.358,253,3.512,284,2.392,306,2.588,323,0.725,338,3.086,343,2.234,351,1.963,355,4.7,356,0.527,360,2.794,366,0.798,367,0.558,368,0.963,369,1.68,370,1.68,371,2.478,372,1.018,373,1.386,374,2.154,375,1.658,377,1.942,381,1.803,382,3.512,387,1.68,391,0.739,392,0.928,393,0.672,399,1.069,404,2.435,406,6.474,409,2.234,416,3.512,457,3.828,465,3.512,466,3.828,492,2.234,523,1.76,526,3.512,533,4.339,569,2.741,570,2.741,571,2.741,572,2.741,573,2.741,574,2.741,575,4.526,576,2.741,577,2.741,578,2.741,579,2.741,580,5.295,581,2.741,582,2.741,583,2.741,584,4.309,585,4.309,586,2.741,587,2.741,588,2.741,589,3.914,590,4.309,591,4.309,592,4.309,593,2.741,594,2.741,595,2.435,596,2.741,597,2.741,598,2.741,599,2.741,600,2.741,601,2.741]],["t/670",[2,0.815,6,1.456,86,2.501,101,0.619,123,1.246,126,1.988,137,1.696,154,0.856,171,1.608,196,1.395,230,1.395,245,1.157,256,1.653,275,3.262,278,1.395,281,1.456,284,1.246,286,2.63,287,3.541,295,1.83,300,2.791,301,1.429,304,2.781,306,0.963,360,1.456,366,0.89,367,1.095,369,1.432,372,0.868,373,1.181,378,1.23,392,0.483,399,2.622,523,1.5,602,2.245,603,2.245,604,1.995,605,2.245,606,4.386,607,1.256,608,4.139,609,1.972,610,0.94,611,3.797,612,2.988,613,2.245,614,5.717,615,4.25,616,0.784,617,3.797,618,2.245,619,2.245,620,2.506,621,1.995,622,2.245,623,4.659,624,4.386,625,6.724,626,1.707,627,3.262,628,1.995,629,2.245,630,2.245,631,2.245,632,1.83,633,2.245,634,2.245,635,4.659,636,2.245,637,3.262,638,2.429,639,3.262,640,2.245,641,2.245,642,4.563,643,3.672,644,3.672,645,4.139,646,2.993,647,1.83,648,1.83,649,3.672,650,3.672,651,3.672,652,1.707,653,4.659,654,3.672,655,1.608,656,1.608,657,2.245,658,5.382,659,1.83,660,2.245,661,2.245,662,2.245,663,2.245,664,2.245,665,1.83,666,2.245,667,1.83,668,1.83,669,2.245,670,2.245,671,2.245,672,1.995,673,3.672,674,1.83,675,1.995,676,1.707,677,1.707,678,1.995,679,2.245,680,2.245,681,1.995,682,2.381,683,1.707,684,2.245,685,1.608,686,1.995,687,1.995,688,1.995]],["t/672",[2,0.831,86,2.036,101,0.639,103,1.913,126,1.271,137,1.195,139,3.37,281,3.574,286,5.102,287,2.883,301,1.9,304,2.264,366,0.569,367,0.772,369,1.479,372,1.302,373,1.22,378,1.271,399,3.078,523,1.549,606,5.289,608,3.37,611,3.091,614,4.491,615,3.947,617,3.091,620,2.054,637,3.37,638,2.929,639,3.37,672,3.37,674,3.091,682,2.46,685,3.947,686,3.37,687,3.37,689,3.793,690,6.491,691,3.793,692,3.091,693,3.793,694,3.793,695,1.549,696,1.587,697,6.491,698,6.491,699,3.37,700,3.793,701,3.793,702,3.793,703,3.793,704,5.511,705,3.793,706,7.894,707,3.793,708,3.793,709,3.793,710,3.793,711,3.793]],["t/675",[2,0.849,8,0.633,86,1.767,101,0.836,103,1.66,126,1.102,137,1.037,220,2.519,223,1.411,266,1.444,280,2.924,282,1.567,283,1.525,291,2.134,297,2.924,301,0.792,304,1.964,306,1.411,356,0.955,377,2.424,378,2.227,392,1.431,397,5.417,512,2.44,554,2.237,575,3.081,609,1.767,610,1.377,616,2.322,628,2.924,682,3.217,683,4.538,696,2.076,712,3.872,713,2.682,714,3.291,715,5.971,716,3.291,717,2.924,718,4.407,719,2.357,720,3.291,721,4.043,722,8.009,723,4.961,724,8.195,725,3.291,726,4.407,727,2.924]],["t/677",[2,0.833,70,1.836,126,1.952,159,5.177,306,2.499,366,0.873,374,2.634,375,2.341,377,2.125,392,1.254,441,4.428,555,5.177,575,4.585,580,4.428,589,3.778,616,2.976,728,5.827,729,5.827,730,5.827]],["t/679",[2,0.821,8,0.621,70,1.86,101,0.544,117,7.075,123,1.793,126,1.977,135,2.455,137,1.018,160,6.613,165,6.066,171,2.313,196,2.006,197,2.811,218,2.455,233,4.345,245,2.229,256,1.269,281,2.094,301,1.421,316,2.869,356,1.136,366,1.061,367,0.995,369,1.259,372,0.763,373,1.038,375,1.344,376,3.523,398,1.128,399,1.907,609,2.626,620,2.454,621,5.85,642,2.313,646,3.986,648,2.632,685,2.313,696,1.351,712,3.172,727,2.869,731,4.891,732,3.828,733,7.444,734,3.23,735,2.006,736,3.23,737,6.584,738,2.869,739,1.734,740,2.313,741,5.903,742,4.891,743,2.919,744,3.23,745,3.23,746,3.23,747,3.23,748,3.23,749,3.23,750,3.23,751,2.869,752,2.869,753,3.23,754,3.23,755,3.23]],["t/681",[2,0.813,8,1.06,71,2.854,101,1.094,107,2.717,123,3.603,126,1.271,154,1.446,217,1.479,245,2.045,279,2.717,281,2.46,366,1.251,367,1.54,369,1.479,370,2.149,371,2.181,372,1.302,373,1.772,374,1.354,398,1.925,399,2.531,479,1.383,484,2.036,487,2.46,580,2.883,638,2.929,655,2.717,665,3.091,667,3.091,685,2.717,726,3.37,732,4.907,756,3.37,757,3.793,758,3.793,759,3.793,760,3.793,761,3.793,762,3.793,763,3.793,764,3.793,765,3.793,766,2.181,767,3.793,768,5.511,769,3.37,770,3.793,771,4.896,772,4.188,773,2.883,774,3.37,775,5.511,776,3.793,777,3.169,778,2.356,779,3.793,780,1.414,781,3.37,782,3.793,783,2.883,784,3.793,785,3.793]],["t/684",[2,0.612,122,3.503,137,2.188,554,4.719,557,4.973,777,3.992,786,6.943,787,6.943,788,5.277,789,6.943,790,6.943,791,6.943,792,6.943]],["t/686",[123,4.153,367,1.747,793,7.481]],["t/688",[2,0.663,86,3.583,135,3.793,137,1.573,198,4.434,267,3.574,289,3.793,291,3.236,356,0.96,360,3.236,374,2.382,375,2.066,376,2.978,512,2.283,554,3.392,575,3.1,616,1.743,642,3.574,645,5.929,646,6.128,788,3.793,794,4.991,795,4.067,796,4.067,797,4.067,798,5.439,799,4.067,800,4.067,801,4.991,802,7.133,803,4.991,804,4.991,805,3.392,806,6.674,807,3.392,808,4.434,809,4.991,810,6.674,811,4.991,812,7.52,813,4.991,814,4.991,815,4.991,816,4.991]],["t/690",[20,2.852,86,2.649,137,2.087,150,2.489,200,2.649,230,3.065,267,5.723,281,3.199,301,1.924,367,1.004,375,1.356,617,5.398,656,3.534,681,4.383,712,3.199,788,5.034,802,7.406,808,5.884,817,6.623,818,5.398,819,4.934,820,4.934,821,4.383,822,4.383,823,4.934,824,4.934,825,4.934,826,4.934,827,4.934,828,4.934,829,4.934,830,4.934,831,6.793,832,3.534,833,4.934,834,3.534,835,4.934,836,4.934,837,4.934,838,4.934,839,4.934]],["t/692",[6,4.651,281,4.651,284,3.981,285,5.845,552,5.845,840,7.172,841,4.281,842,7.172,843,6.372]],["t/694",[2,0.846,8,1.251,71,2.858,248,4.262,256,1.245,284,2.663,301,1.155,328,3.647,356,0.923,366,1.105,367,0.977,375,1.318,393,1.177,534,4.262,554,3.261,565,4.262,580,4.94,647,3.91,683,4.94,712,3.111,774,5.774,780,2.423,844,4.798,845,4.798,846,3.91,847,4.798,848,6.5,849,5.774,850,4.798,851,4.798,852,4.798,853,4.798,854,4.798,855,4.655,856,4.798,857,4.798,858,4.798]],["t/696",[2,0.827,8,1.279,29,4.408,71,2.182,103,2.503,223,2.851,245,2.095,266,1.445,366,1.252,368,1.866,369,1.935,373,2.138,375,1.363,399,2.592,484,2.664,512,1.697,513,5.907,523,2.027,538,3.823,568,3.082,766,2.853,846,5.418,859,4.962,860,4.408,861,4.962,862,4.408,863,4.408,864,5.907,865,4.408,866,4.962,867,4.962,868,4.962,869,4.408]],["t/698",[2,0.823,8,1.078,121,2.913,154,2.135,306,2.402,366,1.259,368,1.251,372,1.323,373,1.801,398,1.957,441,4.257,487,3.632,512,1.916,566,2.596,632,6.483,713,4.565,870,6.396,871,4.976,872,4.976,873,5.601,874,4.976,875,4.976,876,4.976,877,4.976,878,3.632,879,4.976,880,4.976,881,5.601]],["t/701",[2,0.851,101,0.791,171,3.362,220,2.325,277,3.825,278,2.916,282,3.05,283,3.377,374,2.924,376,2.802,377,2.335,392,1.01,439,2.52,451,5.869,512,2.19,624,3.825,656,3.362,678,4.17,692,3.825,721,3.825,832,3.362,855,3.362,882,4.17,883,4.694,884,4.694,885,4.694,886,4.694,887,4.17,888,3.568,889,4.17,890,4.694,891,4.694]],["t/703",[2,0.836,101,1.246,103,2.077,107,2.948,123,2.285,152,3.972,171,4.186,200,2.21,218,3.129,223,2.506,245,1.842,282,2.783,283,3.76,291,2.669,298,2.948,360,2.669,367,1.383,374,2.086,392,1.258,450,3.129,451,2.948,512,1.408,575,3.63,611,3.355,719,2.948,781,3.657,822,3.657,832,4.186,889,5.192,892,4.116,893,4.116,894,5.844,895,4.116,896,4.116,897,6.037,898,5.844,899,4.116,900,4.116,901,4.116,902,4.116,903,3.657,904,4.116,905,4.116,906,4.116,907,4.116,908,2.285,909,4.116,910,2.669,911,4.116,912,4.116,913,4.116,914,4.116,915,2.557]],["t/705",[2,0.593,101,1.134,126,2.254,271,5.483,283,3.738,450,5.114,451,6.188,675,5.978,831,5.483,832,4.819,916,6.728,917,6.728,918,6.728,919,6.728]],["t/707",[2,0.809,8,1.085,173,4.594,200,3.027,219,2.932,220,1.674,256,1.463,266,1.641,303,6.422,306,2.418,314,5.009,374,2.012,399,2.198,610,3.025,616,1.969,627,5.009,712,3.656,821,5.009,920,5.638,921,5.009,922,6.422,923,5.638,924,5.638,925,4.285,926,5.638,927,5.009,928,5.638,929,7.229,930,7.229,931,5.638]],["t/709",[1,1.75,2,0.839,103,4.035,220,2.375,266,1.277,282,3.349,283,2.832,298,3.142,356,0.844,375,2.276,377,2.565,392,1.514,393,1.725,432,4.98,439,3.776,512,2.833,607,1.5,696,1.835,878,4.933,887,3.897,922,6.248,932,3.897,933,7.607,934,7.607]],["t/711",[150,3.71,151,3.825,152,4.999,154,2.803,282,3.502,283,3.408]],["t/714",[1,3.063,46,2.035,101,1.045,109,5.834,111,4.215,130,5.497,346,6.255,347,6.255,348,5.509,349,6.819,685,4.441,688,5.509,732,4.021,756,5.509,818,5.053,935,6.201,936,6.201,937,6.201,938,6.201,939,4.713,940,4.441,941,6.201]],["t/716",[1,3.326,2,0.677,8,1.676,126,2.571,202,2.46,306,2.659,362,2.739,609,4.121,925,4.713,942,6.201,943,6.201,944,7.676,945,7.676]],["t/718",[1,2.624,2,0.816,8,1.265,202,1.807,245,2.507,366,1.193,372,1.554,373,2.114,523,2.686,739,3.53,946,3.898,947,4.264]],["t/720",[1,2.624,2,0.816,8,1.265,202,1.807,245,2.507,366,1.193,372,1.554,373,2.114,523,2.686,739,3.53,948,4.014,949,6.576]],["t/722",[2,0.851,107,3.68,154,1.958,177,3.777,220,2.411,223,2.918,245,2.559,246,3.68,298,3.68,356,0.989,359,3.68,512,2.89,674,4.187,849,4.565,860,4.565,950,4.625,951,4.227,952,3.653,953,2.144,954,3.68]],["t/725",[1,2.086,2,0.86,8,1.006,101,0.595,126,1.183,154,1.346,197,2.49,202,1.437,220,2.044,223,2.952,224,2.108,245,2.749,301,0.85,306,2.242,366,0.784,369,2.039,372,1.235,373,1.681,377,2.271,512,2.857,523,2.136,566,3.19,575,2.193,589,3.391,950,4.679,952,2.807,955,3.531,956,3.391,957,5.229,958,3.531,959,3.531,960,2.108]],["t/727",[1,1.969,2,0.853,8,0.949,70,1.555,101,0.831,126,1.653,202,1.356,220,1.966,223,3.206,224,2.945,245,2.704,306,2.84,356,0.949,366,0.993,369,1.924,372,1.166,373,1.586,377,2.415,512,2.265,523,2.015,566,2.286,682,3.199,950,3.354,952,2.649,960,2.945,961,4.295,962,4.934]],["t/729",[1,1.777,2,0.827,8,0.857,46,1.462,70,1.403,101,1.041,126,1.492,142,3.027,150,3.116,194,3.385,196,2.766,202,1.224,219,4.183,220,1.834,223,1.91,224,2.658,245,1.946,366,0.926,369,1.736,372,1.052,373,1.432,374,2.204,381,1.864,523,1.819,609,2.391,652,4.694,676,4.694,719,4.424,805,4.198,807,3.027,888,4.694,940,3.19,950,3.027,953,2.234,963,3.629,964,3.957,965,5.033,966,3.116,967,4.424,968,2.01,969,2.182,970,2.064,971,3.957,972,4.454,973,3.19,974,3.19,975,3.19]],["t/731",[1,1.69,2,0.838,8,0.815,46,1.957,70,1.335,101,0.714,142,2.88,194,3.22,196,2.632,202,1.164,219,4.604,220,1.771,223,2.96,224,2.529,245,1.88,306,2.558,366,0.894,369,1.652,372,1.001,373,1.362,374,2.128,381,1.773,487,2.747,523,1.731,609,3.202,682,2.747,805,4.054,807,4.054,940,3.034,950,2.88,953,2.361,961,3.868,963,3.453,967,4.272,968,1.912,969,2.076,970,1.963,971,3.764,973,4.272,974,4.272,975,4.272,976,3.764,977,4.237]],["t/733",[1,1.456,2,0.83,8,0.702,46,1.198,70,1.15,101,0.903,122,2.703,142,2.481,150,1.841,151,1.898,154,1.391,194,2.774,196,2.267,202,1.003,207,2.267,219,3.875,220,1.591,223,2.722,224,2.178,245,1.688,271,2.974,278,3.328,301,1.29,306,1.565,356,1.031,366,0.803,369,1.423,372,0.862,373,1.174,374,2.265,377,1.331,381,1.527,518,2.178,523,1.491,526,2.974,609,3.408,624,5.174,659,2.974,682,2.367,740,2.614,805,2.481,807,2.481,831,2.974,940,2.614,950,2.481,952,1.96,953,2.454,954,4.547,956,2.367,961,2.367,963,2.974,967,2.614,968,1.647,969,1.788,973,2.614,974,2.614,975,2.614,976,3.243,978,6.347,979,3.65,980,3.65,981,3.65,982,6.348,983,2.974,984,3.65,985,3.65,986,5.358]],["t/735",[101,1.189,150,3.559,652,5.363,676,5.363,719,5.054,888,5.363,953,2.223,964,6.269,965,5.75,966,3.559,987,6.269]],["t/737",[1,2.803,72,4.395,101,1.51,122,2.721,154,2.056,230,3.35,246,5.595,346,4.395,769,4.791,841,5.252,952,4.724,953,2.214,954,5.031,961,4.555,988,5.393,989,5.393,990,5.393,991,5.059,992,6.941,993,5.393]],["t/739",[101,1.179,150,3.531,154,2.668,207,4.347,739,3.758,994,6.218,995,6.218,996,6.218,997,6.218,998,6.218,999,6.218,1000,6.218]],["t/741",[8,1.758,70,1.848,86,3.98,101,1.249,137,2.562,181,5.211,367,1.509,771,7.222,921,5.211,1001,5.866,1002,5.866,1003,5.866,1004,5.866,1005,5.866,1006,7.414,1007,5.866,1008,5.866,1009,7.414,1010,5.866,1011,5.866,1012,5.866]],["t/743",[46,2.354,150,3.618,151,3.73,154,2.734,282,3.416,283,3.324,356,1.612,359,5.137]],["t/745",[2,0.836,8,1.289,20,1.791,71,2.946,101,0.846,202,1.379,256,1.303,301,1.208,323,1.328,356,1.289,362,1.791,366,1.206,367,1.535,368,1.121,391,1.353,392,1.623,393,1.643,398,1.753,524,3.255,531,3.412,908,2.786,966,2.532,1013,5.019,1014,1.52,1015,1.52,1016,6.7,1017,4.336,1018,1.49,1019,2.886,1020,2.886,1021,2.886,1022,3.595]],["t/747",[2,0.842,8,1.172,71,2.678,101,0.735,121,3.167,202,1.199,245,1.919,256,1.133,301,1.051,323,1.154,356,1.172,362,1.557,366,1.138,367,1.428,368,0.975,370,2.374,371,3.501,372,1.439,373,1.958,391,1.176,392,1.51,393,1.494,398,1.525,484,3.269,524,2.83,531,2.966,638,2.748,777,3.501,778,3.782,908,2.423,948,2.202,966,2.202,1014,1.322,1015,1.322,1017,4.033,1018,1.296,1019,2.509,1020,2.509,1021,2.509,1022,3.126,1023,3.126]],["t/749",[2,0.845,8,1.223,71,2.795,101,0.783,202,1.276,256,1.205,301,1.118,323,1.228,356,1.223,362,1.657,366,1.168,367,1.475,368,1.038,391,1.252,392,1.56,393,1.559,398,1.622,484,3.413,524,3.011,531,3.157,783,4.832,908,2.578,948,2.343,966,2.343,1014,1.406,1015,1.406,1017,4.167,1018,1.379,1019,2.67,1020,2.67,1021,2.67,1022,3.326,1023,3.326,1024,3.785,1025,3.785,1026,5.18,1027,3.785]],["t/751",[2,0.847,8,1.125,71,2.57,78,3.039,101,0.694,151,2.141,202,1.131,256,1.068,301,0.991,323,1.089,356,1.125,362,1.469,366,1.109,367,1.383,368,0.92,391,1.11,392,1.463,393,1.433,398,1.438,484,3.138,524,2.669,531,2.798,612,3.244,908,2.285,948,2.077,966,2.077,1014,1.246,1015,1.246,1017,3.907,1018,1.222,1019,2.367,1020,2.367,1021,2.367,1022,2.948,1023,2.948,1028,3.355,1029,5.31,1030,6.028,1031,4.763,1032,3.488,1033,3.488,1034,4.763,1035,3.355]],["t/753",[2,0.836,8,1.181,20,1.23,71,2.259,78,3.784,101,1.035,202,0.947,245,1.619,256,1.333,279,2.469,301,1.236,323,1.359,356,0.988,362,1.23,366,1.091,367,1.385,368,1.372,370,2.003,391,1.385,392,1.642,393,1.669,398,1.204,399,1.344,484,2.758,524,2.235,531,2.343,616,1.204,655,2.469,855,3.679,869,4.563,908,1.914,948,1.739,966,1.739,1014,1.044,1015,1.044,1017,3.53,1018,1.525,1019,1.982,1020,1.982,1021,1.982,1022,2.469,1023,2.469,1029,2.343,1032,2.057,1033,3.066,1036,4.624,1037,4.624,1038,2.809,1039,2.809,1040,2.809,1041,4.186,1042,4.186,1043,4.186,1044,2.809,1045,4.186,1046,4.186,1047,4.186,1048,2.809]],["t/755",[2,0.738,57,4.245,78,3.248,230,3.879,232,4.473,262,4.747,557,4.473,615,4.473,626,4.747,939,4.747,969,3.777,1032,4.601,1033,3.727,1036,5.24,1037,5.24,1049,5.089,1050,5.089,1051,5.089,1052,5.089,1053,5.089,1054,5.089]],["t/757",[2,0.843,8,1.092,71,2.495,123,3.149,220,1.172,245,1.244,256,1.723,301,1.747,366,1.236,375,2.199,392,1.723,393,1.628,398,1.982,399,1.539,484,3.046,512,2.271,566,3.077,732,3.678,772,5.516,773,4.311,777,3.262,778,3.523,878,3.678,948,1.992,1018,1.971,1023,2.828,1055,3.217,1056,3.217,1057,4.623,1058,3.217,1059,6.639,1060,3.217,1061,3.217,1062,4.623]],["t/760",[126,2.423,946,4.124,948,4.247,991,4.158,1063,3.901]],["t/762",[2,0.82,8,1.294,70,1.591,81,3.616,101,0.851,219,2.626,220,1.997,231,4.114,328,3.837,366,1.134,370,2.622,375,1.387,398,1.764,638,2.278,642,3.616,656,3.616,743,3.013,777,2.903,863,5.975,956,3.274,1064,3.837,1065,3.616,1066,5.049,1067,5.049,1068,5.049,1069,5.049,1070,5.049,1071,4.485,1072,7.563,1073,4.485,1074,5.049,1075,5.049,1076,5.049,1077,5.049,1078,5.049,1079,5.049,1080,5.049,1081,5.049,1082,5.049,1083,5.049,1084,5.049]],["t/764",[2,0.838,8,0.739,30,2.293,70,0.748,71,1.69,101,0.648,106,1.804,121,1.235,123,3.088,135,4.228,152,1.614,153,2.109,172,2.109,173,1.935,178,2.109,182,2.109,196,1.475,205,2.109,220,0.705,245,1.753,256,0.616,267,1.7,284,1.318,306,2.076,323,0.628,366,1.11,367,0.483,368,1.601,369,1.498,372,1.144,373,1.236,375,1.056,378,0.795,391,0.64,392,1.197,393,0.582,399,0.926,441,2.921,484,1.275,487,1.54,512,1.656,538,2.209,539,2.109,566,1.781,614,1.935,632,3.945,638,1.734,647,1.935,648,3.131,656,2.752,713,3.945,740,2.752,751,2.109,766,2.783,777,2.783,778,3.007,846,3.131,862,4.3,864,2.109,865,3.414,870,3.414,871,2.109,872,2.109,874,3.414,875,2.109,876,5.428,877,2.109,878,1.54,879,2.109,880,3.414,927,4.942,1065,2.752,1073,2.109,1085,3.843,1086,2.374,1087,2.374,1088,3.843,1089,3.843,1090,2.109,1091,2.374,1092,2.374,1093,2.374,1094,4.841,1095,4.3,1096,5.563,1097,6.11,1098,5.563,1099,3.843,1100,2.374,1101,2.374,1102,2.374,1103,3.843,1104,2.374,1105,4.841,1106,2.374,1107,3.843,1108,2.374,1109,2.374,1110,2.374,1111,2.374,1112,2.374,1113,2.374,1114,2.374,1115,2.374,1116,2.374,1117,2.374,1118,2.374]],["t/766",[1,2.235,2,0.635,151,2.913,154,2.135,207,3.479,266,2.096,277,4.565,278,3.479,282,4.136,283,3.891,298,4.012,347,4.565,356,1.385,377,2.043,432,5.867,450,4.257,451,4.012,554,3.807,607,1.916,683,4.257,696,2.344,699,4.976,932,4.976,968,2.528,969,2.744,970,2.596,1119,2.596,1120,5.601,1121,5.601,1122,5.601,1123,5.601,1124,4.976]],["t/768",[46,2.354,150,3.618,151,3.73,154,2.734,282,3.416,283,3.324,356,1.612,359,5.137]],["t/770",[2,0.837,8,1.415,20,2.065,202,1.59,323,1.531,362,2.065,366,1.211,367,1.496,368,1.293,369,2.866,391,1.56,392,1.582,393,1.803,398,2.022,1014,1.753,1015,1.753,1125,5.788,1126,6.531,1127,3.753]],["t/772",[2,0.842,8,1.294,121,3.498,202,1.387,245,2.119,323,1.335,362,1.802,366,1.134,367,1.369,368,1.128,369,2.622,370,2.622,371,3.867,372,1.589,373,2.163,391,1.361,392,1.448,393,1.65,398,1.764,638,3.035,777,3.867,778,4.177,946,2.473,1014,1.529,1015,1.529,1127,3.274,1128,3.616]],["t/774",[2,0.846,8,1.357,202,1.491,323,1.435,362,1.936,366,1.175,367,1.436,368,1.212,369,2.75,391,1.463,392,1.518,393,1.73,398,1.896,783,5.361,946,2.658,1014,1.643,1015,1.643,1024,4.422,1025,4.422,1026,5.748,1027,4.422,1127,3.519,1128,3.887]],["t/776",[2,0.848,8,1.237,78,3.343,151,2.455,202,1.297,323,1.248,362,1.684,366,1.096,367,1.308,368,1.054,369,2.506,391,1.272,392,1.383,393,1.576,398,1.649,612,3.568,946,2.312,1014,1.429,1015,1.429,1028,3.846,1029,5.58,1030,6.395,1031,5.238,1032,3.836,1033,3.836,1034,5.238,1035,3.846,1127,3.06,1128,3.38]],["t/778",[2,0.835,8,1.262,20,1.378,78,3.963,101,0.941,202,1.061,245,1.759,256,1.002,279,2.765,301,0.929,323,1.476,362,1.378,366,1.077,367,1.334,368,1.465,369,2.176,370,2.176,391,1.505,392,1.64,393,1.762,398,1.349,399,1.505,616,1.349,655,2.765,855,3.998,946,1.891,1014,1.169,1015,1.169,1018,1.146,1029,2.624,1032,2.304,1033,3.331,1036,4.882,1037,4.882,1038,3.146,1039,3.146,1040,3.146,1041,4.549,1042,4.549,1043,4.549,1044,3.146,1045,4.549,1046,4.549,1047,4.549,1048,3.146,1127,2.503,1128,2.765,1129,5.582]],["t/780",[2,0.738,57,4.245,78,3.248,230,3.879,232,4.473,262,4.747,557,4.473,615,4.473,626,4.747,939,4.747,969,3.777,1032,4.601,1033,3.727,1036,5.24,1037,5.24,1049,5.089,1050,5.089,1051,5.089,1052,5.089,1053,5.089,1054,5.089]],["t/782",[2,0.847,8,1.05,123,3.03,220,1.112,245,1.18,256,1.672,301,1.704,366,1.216,367,1.111,369,2.128,375,2.159,392,1.79,393,1.846,398,1.907,399,1.46,512,2.204,566,2.985,721,5.25,732,3.54,772,5.381,773,4.149,777,3.139,778,3.391,878,3.54,946,1.834,1018,1.913,1055,3.051,1056,3.051,1057,4.449,1058,3.051,1060,3.051,1061,3.051,1062,4.449,1127,3.54,1128,2.682]],["t/785",[946,3.729,1063,3.527]],["t/788",[2,0.828,20,1.462,46,1.344,70,1.835,101,0.69,137,1.291,174,1.674,217,1.597,229,2.628,256,1.063,266,1.696,301,0.986,323,1.084,356,0.788,366,1.169,367,0.834,368,0.915,374,2.418,375,1.862,379,2.561,380,3.127,381,2.437,387,2.271,391,1.104,392,1.459,393,1.429,479,1.494,607,1.401,610,1.714,616,2.912,620,1.527,695,2.379,696,1.714,780,1.527,953,1.291,968,2.628,1014,1.241,1015,1.241,1018,1.216,1119,1.898,1130,3.114,1131,3.127,1132,2.699,1133,4.172,1134,4.427,1135,2.853,1136,1.714,1137,1.714,1138,1.635,1139,1.597]],["t/790",[2,0.841,46,1.278,70,2.273,101,0.656,126,1.882,137,1.227,174,1.591,217,1.519,229,2.535,256,1.011,266,1.636,301,0.938,323,1.03,356,0.75,366,1.146,367,0.793,368,0.87,374,2.351,375,1.81,379,2.47,380,3.016,381,2.351,387,2.19,391,1.05,392,1.418,393,1.378,439,3.016,479,1.42,607,1.332,610,1.63,616,2.783,620,1.452,695,2.295,696,1.63,780,1.452,953,1.227,968,2.535,1014,1.179,1015,1.179,1018,1.156,1119,1.805,1131,3.016,1132,2.603,1133,4.023,1135,2.752,1136,1.63,1137,1.63,1138,1.554,1139,1.519,1140,2.419,1141,1.63]],["t/792",[2,0.843,46,1.261,70,2.259,101,0.648,126,1.864,137,1.211,174,1.57,217,1.499,229,2.511,256,0.997,266,1.62,301,0.925,323,1.017,356,0.74,366,1.14,367,0.782,368,0.859,374,2.334,375,1.797,379,2.447,380,2.987,381,2.328,387,2.169,391,1.036,392,1.408,393,1.365,439,2.987,479,1.402,607,1.315,610,1.608,616,2.857,620,1.433,695,2.273,696,1.608,780,1.433,953,1.211,968,2.511,1014,1.164,1015,1.164,1018,1.141,1119,1.781,1131,2.987,1132,2.578,1133,3.985,1135,2.726,1136,1.608,1137,1.608,1138,1.533,1139,1.499,1140,2.387,1141,1.608]],["t/795",[953,2.399,1063,3.527]],["t/797",[1063,3.527,1141,3.185]],["t/800",[2,0.839,20,1.49,46,1.37,70,1.86,101,0.704,137,1.316,174,1.706,217,1.628,229,2.664,256,1.084,266,1.216,301,1.421,323,1.104,356,0.804,366,1.177,367,0.85,368,0.933,372,1.395,375,1.882,377,2.153,378,1.978,379,2.596,380,3.17,387,2.302,391,1.126,392,1.474,393,1.448,479,1.523,512,2.686,566,2.736,607,1.428,616,2.744,620,1.556,695,2.412,780,1.556,1014,1.264,1015,1.264,1018,1.24,1130,3.174,1134,4.487,1136,1.747,1137,1.747,1138,1.666,1139,1.628]],["t/802",[2,0.847,46,1.302,70,2.292,101,0.668,126,1.906,137,1.25,174,1.62,217,1.546,229,2.568,256,1.029,266,1.155,301,1.37,323,1.049,356,0.763,366,1.154,367,0.807,368,0.886,372,1.345,375,1.829,377,2.075,378,1.906,379,2.503,380,3.055,387,2.219,391,1.069,392,1.433,393,1.396,439,3.055,479,1.446,512,2.634,566,2.637,607,1.357,616,2.541,620,1.478,695,2.325,780,1.478,1014,1.201,1015,1.201,1018,1.178,1136,1.66,1137,1.66,1138,1.582,1139,1.546,1140,2.463,1141,1.66]],["t/804",[2,0.849,46,1.284,70,2.278,101,0.659,126,1.888,137,1.233,174,1.598,217,1.525,229,2.543,256,1.015,266,1.139,301,1.357,323,1.035,356,0.753,366,1.148,367,0.796,368,0.874,372,1.332,375,1.815,377,2.055,378,1.888,379,2.478,380,3.026,387,2.197,391,1.055,392,1.422,393,1.382,439,3.026,479,1.427,512,2.62,566,2.612,607,1.338,616,2.676,620,1.458,695,2.302,780,1.458,1014,1.185,1015,1.185,1018,1.162,1136,1.637,1137,1.637,1138,1.561,1139,1.525,1140,2.43,1141,1.637]],["t/807",[1063,3.527,1141,3.185]],["t/810",[2,0.831,20,1.435,46,1.32,70,1.811,101,0.678,137,1.267,174,1.643,217,1.568,220,1.707,256,1.044,266,1.673,301,0.968,323,1.064,356,0.774,366,1.161,367,0.818,368,0.898,372,1.358,374,2.394,375,1.843,378,1.925,379,2.527,381,2.405,387,2.241,391,1.084,392,1.444,393,1.41,479,1.466,495,2.989,607,1.375,609,3.086,610,1.683,616,2.704,620,1.499,695,2.348,696,1.683,780,1.499,953,1.267,969,2.816,1014,1.218,1015,1.218,1018,1.194,1119,1.863,1130,3.056,1132,2.663,1134,4.368,1135,2.816,1136,1.683,1137,1.683,1138,1.604,1139,1.568,1142,4.116]],["t/812",[2,0.842,46,1.256,70,2.254,101,0.645,126,1.858,137,1.206,174,1.563,217,1.492,220,1.647,256,0.993,266,1.615,301,0.921,323,1.012,356,0.736,366,1.138,367,0.779,368,0.855,372,1.31,374,2.328,375,1.792,378,1.858,379,2.439,381,2.321,387,2.162,391,1.032,392,1.404,393,1.36,439,2.978,479,1.395,495,2.884,607,1.309,609,2.978,610,1.601,616,2.499,620,1.426,695,2.265,696,1.601,780,1.426,953,1.206,969,2.717,1014,1.159,1015,1.159,1018,1.136,1119,1.773,1132,2.57,1135,2.717,1136,1.601,1137,1.601,1138,1.527,1139,1.492,1140,2.377,1141,1.601,1142,3.972]],["t/814",[2,0.844,46,1.239,70,2.24,101,0.636,126,1.84,137,1.19,174,1.543,217,1.472,220,1.631,256,0.98,266,1.599,301,0.909,323,0.999,356,0.727,366,1.132,367,0.769,368,0.844,372,1.298,374,2.31,375,1.779,378,1.84,379,2.416,381,2.299,387,2.142,391,1.018,392,1.394,393,1.347,439,2.949,479,1.377,495,2.857,607,1.292,609,2.949,610,1.58,616,2.639,620,1.408,695,2.244,696,1.58,780,1.408,953,1.19,969,2.691,1014,1.144,1015,1.144,1018,1.121,1119,1.75,1132,2.546,1135,2.691,1136,1.58,1137,1.58,1138,1.507,1139,1.472,1140,2.346,1141,1.58,1142,3.934]],["t/817",[953,2.399,1063,3.527]],["t/819",[1063,3.527,1141,3.185]],["t/821",[2,0.598,46,2.225,150,3.421,151,3.526,152,4.609,154,3.089,282,3.229,283,3.142,377,2.473,397,5.526,712,4.397,968,3.06,969,3.322,970,3.142,1124,6.024]],["t/823",[154,2.827,266,2.16,607,2.537,910,4.81,1143,5.637]],["t/825",[2,0.815,20,1.589,46,1.462,70,1.946,101,0.751,137,1.403,174,1.819,217,1.736,220,1.834,229,2.787,256,1.156,266,1.297,301,1.072,323,1.178,356,1.189,366,1.063,367,0.907,368,0.995,372,1.459,374,2.53,375,1.948,378,2.069,381,2.584,387,2.408,391,1.201,392,1.526,393,1.515,479,1.624,495,3.212,607,1.523,610,1.864,620,1.66,695,2.523,696,1.864,780,1.66,834,3.19,953,1.403,970,2.862,1014,1.349,1015,1.349,1018,1.322,1119,2.064,1135,3.026,1136,1.864,1137,1.864,1138,1.777,1139,1.736,1144,4.694]],["t/827",[2,0.835,46,1.377,70,2.351,101,0.707,126,1.984,137,1.322,174,1.714,217,1.636,220,1.759,229,2.673,256,1.089,266,1.222,301,1.01,323,1.11,356,1.14,366,1.029,367,0.854,368,0.937,372,1.4,374,2.45,375,1.887,376,3.535,378,1.984,381,2.479,387,2.31,391,1.131,392,1.478,393,1.453,479,1.53,495,3.081,607,1.435,610,1.756,620,1.564,695,2.42,696,1.756,780,1.564,953,1.322,970,2.745,1014,1.271,1015,1.271,1018,1.246,1119,1.944,1135,2.902,1136,1.756,1137,1.756,1138,1.674,1139,1.636,1141,1.756,1145,3.005]],["t/830",[953,2.399,1063,3.527]],["t/832",[1063,3.527,1141,3.185]],["t/835",[2,0.825,20,1.505,46,1.384,70,1.873,101,0.71,137,1.329,174,1.722,217,1.644,220,1.765,229,2.682,256,1.094,266,1.731,301,1.015,323,1.115,356,0.811,366,1.182,367,0.858,368,0.942,372,1.404,374,2.457,375,1.892,378,1.991,381,2.487,387,2.318,391,1.137,392,1.482,393,1.458,479,1.537,495,3.091,607,1.442,610,1.764,616,2.753,620,1.572,695,2.428,696,1.764,780,1.572,953,1.329,970,2.754,1014,1.277,1015,1.277,1018,1.252,1119,1.954,1130,3.204,1134,4.518,1135,2.912,1136,1.764,1137,1.764,1138,1.682,1139,1.644]],["t/837",[2,0.839,46,1.314,70,2.301,101,0.675,126,1.919,137,1.261,174,1.635,217,1.561,220,1.701,229,2.585,256,1.039,266,1.668,301,0.964,323,1.059,356,0.77,366,1.159,367,0.815,368,0.894,372,1.353,374,2.387,375,1.838,378,1.919,381,2.397,387,2.234,391,1.079,392,1.44,393,1.405,439,3.076,479,1.46,495,2.979,607,1.369,610,1.675,616,2.551,620,1.492,695,2.34,696,1.675,780,1.492,953,1.261,970,2.655,1014,1.212,1015,1.212,1018,1.188,1119,1.855,1135,2.806,1136,1.675,1137,1.675,1138,1.597,1139,1.561,1140,2.486,1141,1.675]],["t/839",[2,0.842,46,1.296,70,2.287,101,0.665,126,1.9,137,1.244,174,1.613,217,1.539,220,1.684,229,2.56,256,1.025,266,1.652,301,0.95,323,1.044,356,0.76,366,1.152,367,0.804,368,0.882,372,1.34,374,2.369,375,1.824,378,1.9,381,2.374,387,2.212,391,1.064,392,1.429,393,1.391,439,3.046,479,1.44,495,2.95,607,1.35,610,1.652,616,2.685,620,1.472,695,2.317,696,1.652,780,1.472,953,1.244,970,2.629,1014,1.196,1015,1.196,1018,1.172,1119,1.83,1135,2.779,1136,1.652,1137,1.652,1138,1.575,1139,1.539,1140,2.452,1141,1.652]],["t/842",[953,2.399,1063,3.527]],["t/844",[1063,3.527,1141,3.185]],["t/846",[154,2.827,266,2.16,607,2.537,910,4.81,1143,5.637]],["t/848",[2,0.802,20,1.573,46,1.447,70,1.933,101,0.743,137,1.389,174,1.801,217,1.719,229,2.767,256,1.144,266,1.284,301,1.061,323,1.166,356,1.18,366,1.057,367,0.897,368,0.985,374,2.517,375,1.938,379,2.697,380,3.293,381,2.566,387,2.391,391,1.188,392,1.518,393,1.504,479,1.608,607,1.508,610,1.845,616,2.142,620,1.643,695,2.505,696,1.845,780,1.643,834,3.157,953,1.389,968,2.767,1014,1.335,1015,1.335,1018,1.309,1119,2.043,1131,3.293,1132,2.842,1133,4.392,1135,3.004,1136,1.845,1137,1.845,1138,1.759,1139,1.719,1144,4.661]],["t/850",[2,0.829,46,1.364,70,2.341,101,0.7,126,1.971,137,1.31,174,1.698,217,1.62,229,2.655,256,1.079,266,1.21,301,1,323,1.099,356,1.132,366,1.024,367,0.846,368,0.928,374,2.437,375,1.877,376,3.512,379,2.587,380,3.159,381,2.462,387,2.294,391,1.12,392,1.47,393,1.443,479,1.515,607,1.421,610,1.739,616,2.055,620,1.549,695,2.403,696,1.739,780,1.549,953,1.31,968,2.655,1014,1.258,1015,1.258,1018,1.234,1119,1.926,1131,3.159,1132,2.726,1133,4.214,1135,2.882,1136,1.739,1137,1.739,1138,1.658,1139,1.62,1141,1.739,1145,2.976]],["t/853",[953,2.399,1063,3.527]],["t/855",[1063,3.527,1141,3.185]],["t/857",[46,2.354,150,3.618,151,3.73,154,2.734,282,3.416,283,3.324,356,1.612,359,5.137]],["t/859",[2,0.84,8,1.232,20,2.285,101,0.791,202,1.29,256,1.218,301,1.13,323,1.242,356,1.232,362,1.675,366,1.174,367,1.484,368,1.049,391,1.265,392,1.569,393,1.571,398,1.64,399,1.83,908,2.606,966,2.368,1014,1.421,1015,1.421,1017,4.191,1018,1.394,1019,2.699,1020,2.699,1021,2.699,1126,5.689,1146,3.191,1147,4.694,1148,3.977,1149,3.977,1150,4.353,1151,4.353,1152,4.586]],["t/861",[2,0.847,8,1.125,20,1.469,101,0.694,121,3.039,202,1.131,245,1.842,256,1.068,301,0.991,304,2.457,323,1.089,356,1.125,362,1.469,366,1.109,367,1.383,368,0.92,370,2.279,371,3.36,372,1.381,373,1.879,391,1.11,392,1.463,393,1.433,398,1.438,399,1.605,638,2.637,777,3.36,778,3.63,908,2.285,948,2.077,966,2.077,1014,1.246,1015,1.246,1017,3.907,1018,1.222,1019,2.367,1020,2.367,1021,2.367,1146,2.798,1148,3.63,1149,3.63,1150,3.972,1151,3.972,1152,4.186]],["t/863",[2,0.85,8,1.172,20,1.557,101,0.735,202,1.199,256,1.133,301,1.051,304,2.605,323,1.154,356,1.172,362,1.557,366,1.138,367,1.428,368,0.975,391,1.176,392,1.51,393,1.494,398,1.525,399,1.702,783,4.628,908,2.423,948,2.202,966,2.202,1014,1.322,1015,1.322,1017,4.033,1018,1.296,1019,2.509,1020,2.509,1021,2.509,1024,3.557,1025,3.557,1026,4.963,1027,3.557,1146,2.966,1148,3.782,1149,3.782,1150,4.139,1151,4.139,1152,4.362]],["t/865",[2,0.851,8,1.081,20,1.39,78,2.922,101,0.656,151,2.026,202,1.07,256,1.011,301,0.938,304,2.325,323,1.03,356,1.081,362,1.39,366,1.081,367,1.341,368,0.87,391,1.05,392,1.418,393,1.378,398,1.361,399,1.519,612,3.118,908,2.162,948,1.965,966,1.965,1014,1.179,1015,1.179,1017,3.788,1018,1.156,1019,2.24,1020,2.24,1021,2.24,1028,3.174,1029,5.198,1030,5.878,1031,4.578,1032,3.353,1033,3.353,1034,4.578,1035,3.174,1146,2.648,1148,3.489,1149,3.489,1150,3.818,1151,3.818,1152,4.023]],["t/867",[2,0.841,8,1.149,20,1.77,78,3.709,101,1.006,202,0.904,245,1.563,256,1.287,279,2.357,301,1.194,304,1.964,323,1.312,356,0.955,362,1.174,366,1.069,367,1.353,368,1.334,370,1.934,391,1.337,392,1.614,393,1.63,398,1.15,399,1.934,616,1.15,655,2.357,855,3.553,908,1.827,948,1.66,966,1.66,1014,0.996,1015,0.996,1017,3.433,1018,1.473,1019,1.892,1020,1.892,1021,1.892,1029,2.237,1032,1.964,1033,2.961,1036,4.518,1037,4.518,1038,2.682,1039,2.682,1040,2.682,1041,4.043,1042,4.043,1043,4.043,1044,2.682,1045,4.043,1046,4.043,1047,4.043,1048,2.682,1146,2.237,1148,3.081,1149,3.081,1150,3.372,1151,3.372,1152,3.553,1153,4.961]],["t/869",[2,0.738,57,4.245,78,3.248,230,3.879,232,4.473,262,4.747,557,4.473,615,4.473,626,4.747,939,4.747,969,3.777,1032,4.601,1033,3.727,1036,5.24,1037,5.24,1049,5.089,1050,5.089,1051,5.089,1052,5.089,1053,5.089,1054,5.089]],["t/871",[2,0.847,8,1.025,20,1.292,123,2.956,220,1.075,245,1.141,256,1.64,301,1.677,304,2.16,366,1.26,375,2.134,392,1.671,393,1.55,398,1.86,399,1.411,512,2.161,566,2.927,732,3.453,772,5.295,773,4.047,777,3.062,778,3.308,878,3.453,948,1.826,1018,1.876,1055,2.95,1056,2.95,1057,4.34,1058,2.95,1060,2.95,1061,2.95,1062,4.34,1146,2.46,1148,3.308,1149,3.308,1150,3.62,1151,3.62,1154,5.325,1155,5.325,1156,6.318]],["t/874",[126,2.423,946,4.124,948,4.247,991,4.158,1063,3.901]],["t/876",[154,2.827,266,2.16,607,2.537,910,4.81,1143,5.637]],["t/878",[2,0.83,20,1.589,46,1.462,70,1.946,101,0.751,137,1.403,174,1.819,217,1.736,229,2.787,256,1.156,301,1.487,323,1.178,356,1.189,366,1.063,367,0.907,368,0.995,372,1.459,375,1.948,377,2.252,378,2.069,379,2.716,380,3.316,387,2.408,391,1.201,392,1.526,393,1.515,479,1.624,512,2.751,566,2.862,607,1.523,620,1.66,695,2.523,780,1.66,834,3.19,1014,1.349,1015,1.349,1018,1.322,1136,1.864,1137,1.864,1138,1.777,1139,1.736,1144,4.694]],["t/880",[2,0.843,46,1.377,70,2.351,101,0.707,126,1.984,137,1.322,174,1.714,217,1.636,229,2.673,256,1.089,301,1.426,323,1.11,356,1.14,366,1.029,367,0.854,368,0.937,372,1.4,375,1.887,376,3.535,377,2.16,378,1.984,379,2.605,380,3.18,387,2.31,391,1.131,392,1.478,393,1.453,479,1.53,512,2.691,566,2.745,607,1.435,620,1.564,695,2.42,780,1.564,1014,1.271,1015,1.271,1018,1.246,1136,1.756,1137,1.756,1138,1.674,1139,1.636,1141,1.756,1145,3.005]],["t/882",[2,0.841,46,1.344,70,2.326,101,0.69,126,1.951,137,1.291,174,1.674,217,1.597,229,2.628,256,1.063,301,1.402,306,2.498,323,1.084,356,1.121,366,1.016,367,0.834,368,0.915,372,1.376,375,1.862,376,3.476,377,2.124,378,1.951,379,2.561,380,3.127,387,2.271,391,1.104,392,1.459,393,1.429,479,1.494,512,2.667,566,2.699,575,2.545,589,3.777,607,1.401,620,1.527,695,2.379,780,1.527,1014,1.241,1015,1.241,1018,1.216,1136,1.714,1137,1.714,1138,1.635,1139,1.597,1141,1.714,1145,2.934]],["t/885",[1063,3.527,1141,3.185]],["t/887",[2,0.852,71,2.098,101,0.804,121,3.368,219,3.368,245,1.504,356,0.918,366,0.715,367,0.971,370,1.86,371,2.743,372,1.127,373,1.534,375,2.166,392,1.027,512,2.215,566,3.001,638,2.153,878,3.094,882,5.753,966,2.407,1064,3.626,1065,3.417,1095,4.239,1157,4.772,1158,6.475,1159,4.772,1160,4.772,1161,4.772,1162,4.772,1163,6.475,1164,4.239,1165,4.772,1166,4.772,1167,4.772]],["t/889",[154,2.827,266,2.16,607,2.537,910,4.81,1143,5.637]],["t/891",[2,0.819,20,1.527,46,1.404,70,1.893,101,0.721,137,1.348,174,1.748,217,1.668,220,1.783,256,1.11,266,1.246,301,1.03,323,1.132,356,1.156,366,1.04,367,0.871,368,0.956,372,1.419,374,2.476,375,1.907,378,2.012,379,2.641,381,2.513,387,2.342,391,1.153,392,1.494,393,1.473,479,1.56,495,3.123,607,1.463,609,3.224,610,1.79,620,1.595,695,2.453,696,1.79,780,1.595,834,3.064,953,1.348,969,2.942,1014,1.296,1015,1.296,1018,1.27,1119,1.983,1132,2.783,1135,2.942,1136,1.79,1137,1.79,1138,1.707,1139,1.668,1142,4.301,1144,4.565]],["t/893",[2,0.836,46,1.326,70,2.311,101,0.681,126,1.932,137,1.273,174,1.65,217,1.575,220,1.712,256,1.048,266,1.176,301,0.972,323,1.068,356,1.11,366,1.008,367,0.822,368,0.903,372,1.362,374,2.4,375,1.848,376,3.442,378,1.932,379,2.536,381,2.413,387,2.248,391,1.089,392,1.447,393,1.414,479,1.473,495,2.999,607,1.382,609,3.096,610,1.69,620,1.506,695,2.356,696,1.69,780,1.506,953,1.273,969,2.825,1014,1.223,1015,1.223,1018,1.199,1119,1.872,1132,2.672,1135,2.825,1136,1.69,1137,1.69,1138,1.612,1139,1.575,1141,1.69,1142,4.13,1145,2.893]],["t/896",[953,2.399,1063,3.527]],["t/898",[1063,3.527,1141,3.185]],["t/900",[2,0.849,8,0.617,16,2.612,81,3.483,101,0.54,111,2.179,137,1.01,152,2.179,197,2.799,199,3.963,206,3.963,219,2.529,223,1.375,230,3.65,245,1.01,286,2.296,356,0.617,366,1.113,367,0.652,375,1.336,378,1.074,398,1.12,399,1.25,487,2.079,523,1.31,606,2.612,638,1.447,665,2.612,667,3.963,795,2.612,796,2.612,797,2.612,798,2.612,799,3.963,800,4.789,903,2.848,1064,2.437,1065,2.296,1071,2.848,1168,2.848,1169,3.206,1170,3.206,1171,3.206,1172,4.864,1173,3.206,1174,4.864,1175,3.206,1176,3.206,1177,3.206,1178,3.206,1179,3.206,1180,3.206,1181,3.206,1182,3.206,1183,2.848,1184,3.206,1185,2.848,1186,3.206,1187,3.206,1188,2.848,1189,4.864,1190,2.848,1191,3.206,1192,2.848,1193,2.848,1194,2.848,1195,2.848,1196,3.206,1197,3.206,1198,3.206,1199,2.848,1200,2.848,1201,4.321,1202,2.848,1203,3.206,1204,3.206,1205,3.206,1206,4.864,1207,3.206,1208,4.864,1209,3.206,1210,3.206,1211,3.206,1212,3.206,1213,3.206,1214,3.206,1215,3.206,1216,3.206,1217,3.206,1218,3.206]],["t/902",[2,0.838,8,0.705,70,1.694,101,0.618,111,2.491,121,1.906,137,1.155,197,2.56,199,2.987,223,1.572,356,0.705,366,1.169,369,1.429,370,1.429,372,0.866,373,1.179,374,2.271,375,1.477,377,1.337,392,1.37,398,1.28,399,1.429,487,2.377,512,2.177,523,1.497,575,3.338,610,1.534,638,1.654,642,3.849,692,2.987,795,2.987,796,2.987,797,2.987,798,2.987,799,2.987,800,2.987,897,6.227,956,2.377,968,1.654,969,1.796,970,1.698,1064,2.786,1065,2.625,1090,3.256,1168,3.256,1183,3.256,1185,3.256,1188,3.256,1190,3.256,1192,3.256,1193,3.256,1194,3.256,1195,3.256,1199,3.256,1200,3.256,1201,3.256,1202,3.256,1219,3.665,1220,3.665,1221,3.665,1222,3.665,1223,3.665,1224,3.665,1225,3.665,1226,3.665,1227,3.665,1228,3.665,1229,3.665,1230,5.375,1231,3.665,1232,3.665,1233,3.665,1234,3.665,1235,3.665,1236,3.665,1237,3.665,1238,3.665]],["t/904",[2,0.855,8,0.437,20,0.81,46,0.745,101,0.382,103,1.145,122,2.732,177,1.259,192,1.409,197,2.579,200,1.218,202,0.623,219,1.926,220,1.1,223,0.973,266,0.661,278,1.409,300,1.724,301,0.891,306,0.973,356,0.437,362,0.81,366,0.96,368,1.574,370,0.885,372,1.771,373,0.73,377,1.35,378,2.262,512,1.267,518,3.232,523,0.927,538,1.305,568,1.409,589,1.471,610,0.949,612,2.605,616,0.793,620,2.224,638,1.024,668,1.849,735,1.409,739,1.218,740,1.625,743,4.031,766,2.129,805,1.542,807,1.542,841,2.21,915,1.409,925,1.724,946,1.814,947,1.471,951,1.409,952,2.519,953,1.479,954,1.625,956,1.471,960,2.21,967,1.625,968,2.444,970,1.716,973,1.625,974,1.625,975,1.625,978,4.413,983,1.849,991,2.129,1131,1.218,1132,1.716,1239,1.471,1240,1.471,1241,1.471,1242,2.016,1243,2.016,1244,2.016,1245,2.517,1246,1.471,1247,2.517,1248,1.471,1249,1.471,1250,1.471,1251,1.471,1252,1.542,1253,2.402,1254,2.402,1255,2.402,1256,1.471,1257,1.471,1258,4.811,1259,1.471,1260,3.29,1261,2.016,1262,2.016,1263,2.016,1264,2.016,1265,2.016,1266,2.016,1267,2.016,1268,1.471,1269,1.471,1270,1.849,1271,1.471,1272,1.849,1273,2.016]],["t/906",[2,0.854,8,0.585,20,1.084,101,0.512,103,1.532,122,2.355,177,1.686,192,1.887,197,3.038,200,1.631,202,0.835,220,0.902,223,1.303,266,0.884,356,0.585,362,1.084,366,0.956,368,1.624,370,1.184,372,1.932,373,0.977,377,1.108,378,2.535,518,2.786,523,1.241,538,1.747,568,1.887,612,1.686,616,1.061,638,1.371,735,1.887,739,1.631,743,4.517,766,1.747,841,2.786,915,1.887,946,2.287,947,1.97,951,1.887,952,3.052,953,0.957,960,2.786,968,2.879,970,1.408,991,2.684,1131,1.631,1132,2.163,1239,1.97,1240,1.97,1241,1.97,1245,2.065,1246,1.97,1247,2.065,1248,1.97,1249,1.97,1250,1.97,1251,1.97,1252,2.065,1253,3.027,1254,3.027,1255,3.027,1256,1.97,1257,1.97,1259,1.97,1268,1.97,1269,1.97,1271,1.97,1274,2.309,1275,2.309,1276,2.309]],["t/908",[2,0.854,8,0.545,20,1.01,101,0.477,103,1.428,122,2.229,177,1.571,192,1.758,197,2.925,200,1.519,202,0.778,220,0.84,223,2.634,266,0.824,306,1.214,356,0.545,362,1.01,366,0.921,368,1.577,370,1.103,372,1.895,373,0.91,377,1.611,378,2.556,495,2.298,512,0.968,518,2.637,523,1.156,538,1.627,568,1.758,612,1.571,616,0.989,638,1.277,735,1.758,739,1.519,743,4.402,766,1.627,841,2.637,915,2.744,946,2.165,947,1.835,951,1.758,952,2.918,953,0.892,960,2.637,961,1.835,968,2.772,970,1.311,991,2.541,1131,1.519,1132,2.048,1239,1.835,1240,1.835,1241,1.835,1245,1.924,1246,1.835,1247,1.924,1248,1.835,1249,1.835,1250,1.835,1251,1.835,1252,1.924,1253,2.865,1254,2.865,1255,2.865,1256,1.835,1257,1.835,1259,2.865,1268,1.835,1269,1.835,1271,1.835,1274,2.151,1275,2.151,1276,2.151,1277,2.514,1278,2.514,1279,2.514]],["t/910",[2,0.855,8,0.569,20,1.055,101,0.498,103,1.491,122,2.305,177,1.64,192,1.836,197,2.994,200,1.587,202,0.812,219,1.537,220,1.357,223,1.267,266,0.86,306,1.267,356,0.569,362,1.055,366,0.942,368,1.606,370,1.152,372,1.918,373,0.95,377,1.078,378,2.51,518,2.727,523,1.207,538,1.699,568,1.836,589,1.916,612,1.64,616,1.032,638,1.334,735,1.836,739,1.587,743,4.472,766,1.699,841,2.727,915,1.836,946,2.239,947,1.916,951,1.836,952,3,953,0.931,960,2.727,968,2.837,970,1.369,991,2.627,1131,1.587,1132,2.117,1239,1.916,1240,1.916,1241,1.916,1245,2.009,1246,1.916,1247,2.009,1248,1.916,1249,1.916,1250,1.916,1251,1.916,1252,2.009,1253,2.963,1254,2.963,1255,2.963,1256,1.916,1257,1.916,1259,1.916,1268,1.916,1269,1.916,1270,2.408,1271,1.916,1272,2.408,1274,2.246]],["t/912",[2,0.855,8,0.531,20,0.984,101,0.465,103,1.391,122,2.185,177,1.531,192,1.713,197,2.885,200,1.481,202,0.758,219,1.435,220,1.286,223,2.597,266,0.803,306,1.857,356,0.531,362,0.984,366,0.908,368,1.561,370,1.075,372,1.881,373,0.887,377,1.579,378,2.534,495,2.252,512,0.943,518,2.585,523,1.127,538,1.586,568,1.713,589,1.789,612,1.531,616,0.964,638,1.245,735,1.713,739,1.481,743,4.36,766,1.586,841,2.585,915,2.69,946,2.122,947,1.789,951,1.713,952,2.87,953,0.869,960,2.585,961,1.789,968,2.733,970,1.278,991,2.49,1131,1.481,1132,2.007,1239,1.789,1240,1.789,1241,1.789,1245,1.875,1246,1.789,1247,1.875,1248,1.789,1249,1.789,1250,1.789,1251,1.789,1252,1.875,1253,2.808,1254,2.808,1255,2.808,1256,1.789,1257,1.789,1259,2.808,1268,1.789,1269,1.789,1270,2.248,1271,1.789,1272,2.248,1274,2.096,1277,2.451,1278,2.451,1279,2.451]],["t/914",[1,2.644,101,1.117,150,3.342,207,4.115,225,5.887,228,5.4,604,5.887,696,2.772,739,3.557,994,5.887,995,5.887,996,5.887,997,5.887,998,5.887,999,5.887,1000,5.887,1280,5.4,1281,6.626,1282,6.626]],["t/916",[0,4.608,1,2.902,2,0.587,3,3.524,4,3.524,5,3.397,6,3.691,8,1.4,9,3.014,15,2.572,30,4.341,38,4.182,41,4.341,62,4.638,66,3.524,71,1.744,76,5.056,78,2.063,95,2.841,282,1.889,283,1.838,284,2.202,285,3.232,286,2.841,287,3.014,289,3.014,290,4.638,291,3.691,295,3.232,312,3.524,325,3.232,326,3.014,330,3.524,331,3.524,333,2.841,386,3.014,389,3.232,400,3.014,412,3.524,413,3.524,416,3.232,455,5.056,456,3.232,465,3.232,595,3.524,732,2.572,1283,3.966,1284,3.966,1285,3.966,1286,3.966,1287,5.691,1288,3.966,1289,3.966,1290,3.966,1291,5.691,1292,5.691,1293,3.966,1294,3.966,1295,3.966,1296,3.966,1297,3.966,1298,3.966,1299,3.966,1300,5.691,1301,3.966,1302,5.691,1303,3.966,1304,3.966,1305,3.966,1306,3.966,1307,3.966,1308,3.966,1309,3.966]],["t/918",[8,1.018,81,2.571,101,1.169,106,2.728,126,1.202,136,4.702,142,4.717,170,3.189,180,7.207,196,3.287,202,0.986,210,6.165,211,3.189,217,1.4,224,2.142,232,4.503,245,1.131,257,3.189,267,2.571,313,3.189,328,2.728,372,1.25,652,2.728,659,2.925,676,2.728,717,3.189,718,4.702,719,2.571,738,4.702,752,4.702,832,2.571,843,3.189,888,4.023,965,2.925,966,1.811,987,3.189,1310,3.59,1311,3.59,1312,3.59,1313,5.293,1314,8.006,1315,3.59,1316,5.293,1317,3.59,1318,3.59,1319,3.59,1320,3.59,1321,3.59,1322,3.59,1323,3.59,1324,3.59,1325,3.59,1326,5.293,1327,6.287,1328,3.59,1329,3.59,1330,3.59,1331,3.59,1332,3.59,1333,3.59,1334,3.59,1335,3.59,1336,3.59,1337,3.59,1338,3.59,1339,5.293,1340,3.59,1341,3.59,1342,3.59,1343,3.59,1344,5.293,1345,3.59,1346,3.59,1347,3.59,1348,3.59,1349,3.59,1350,3.59,1351,5.293,1352,3.59,1353,3.59,1354,3.59,1355,3.59,1356,3.59,1357,3.59,1358,3.59]],["t/920",[1,2.664,228,5.441,256,2.084,266,1.944,356,1.285,479,2.435,607,2.284,677,5.075,780,2.489,1119,3.094,1139,2.603,1359,6.677,1360,6.677,1361,6.677,1362,6.677,1363,6.677,1364,6.677]],["t/922",[2,0.841,8,1.044,71,1.24,220,1.821,224,3.97,245,2.096,256,2.252,266,1.283,301,1.476,356,0.848,366,0.997,367,1.552,369,1.1,370,2.115,372,1.282,373,1.744,392,1.897,398,1.895,479,1.978,484,1.515,512,1.508,566,2.042,677,5.056,712,3.976,780,2.022,788,2.144,818,2.299,910,2.858,1018,1.975,1127,1.829,1138,2.446,1139,2.115,1148,1.752,1149,1.752,1164,2.506,1280,2.299,1365,5.91,1366,2.506,1367,2.506,1368,2.821,1369,2.821,1370,6.132,1371,2.821,1372,2.506,1373,2.506,1374,2.821,1375,2.506,1376,2.506,1377,3.916,1378,2.506,1379,2.506]],["t/924",[2,0.843,8,1.012,71,1.183,202,1.445,220,1.774,224,3.881,231,5.299,245,2.049,256,2.158,266,1.236,323,2.09,356,0.817,362,1.877,366,1.036,367,1.473,368,1.453,369,1.049,370,2.051,372,1.243,373,1.691,391,2.13,392,1.79,393,1.041,479,1.918,484,1.444,512,1.452,524,1.744,566,1.968,677,4.942,780,1.961,910,2.753,1018,1.931,1138,2.595,1139,2.051,1148,1.671,1149,1.671,1280,2.192,1365,5.777,1366,2.39,1367,2.39,1372,2.39,1373,2.39,1375,2.39,1376,2.39,1377,3.772,1378,2.39,1379,2.39,1380,2.69]],["t/926",[1381,7.546,1382,7.546,1383,7.546]],["t/928",[2,0.857,8,0.818,20,0.703,71,1.869,72,2.686,103,0.994,122,1.663,123,1.094,177,1.83,192,2.047,197,2.365,200,1.058,202,1.168,220,0.585,223,0.845,268,1.751,301,1.664,306,2.13,362,1.176,366,0.745,367,0.671,368,1.235,370,0.768,372,1.732,373,0.634,377,2.016,378,2.126,479,0.719,518,1.967,523,0.805,538,1.133,552,1.606,607,1.127,612,1.094,616,0.688,638,0.889,682,2.138,735,1.224,739,1.058,743,3.787,766,1.133,841,1.176,915,1.224,940,3.557,948,2.788,951,1.224,952,1.77,953,0.621,956,3.221,960,1.967,961,2.138,968,3.002,969,2.433,970,0.913,991,1.133,992,2.929,1131,1.058,1132,1.527,1239,1.278,1240,2.138,1241,2.138,1246,1.278,1248,1.278,1249,1.278,1250,1.278,1251,1.278,1253,2.138,1254,2.138,1255,2.138,1256,1.278,1257,1.278,1259,1.278,1268,1.278,1269,1.278,1271,1.278,1275,1.498,1276,1.498,1384,1.971,1385,1.971,1386,1.971,1387,1.971,1388,1.971,1389,1.971,1390,1.971,1391,1.971,1392,1.971,1393,4.249,1394,3.296,1395,1.971,1396,1.971,1397,4.249,1398,3.296,1399,1.971,1400,1.971,1401,1.971,1402,1.971,1403,1.971,1404,1.971,1405,6.653,1406,3.296,1407,1.971,1408,3.296,1409,3.296,1410,1.971,1411,3.296,1412,1.971,1413,3.296,1414,3.296]],["t/930",[2,0.854,8,0.446,20,0.827,46,0.76,101,0.39,103,1.169,122,2.766,177,1.286,192,1.439,197,2.612,200,1.244,202,0.637,219,1.205,220,0.688,223,0.994,266,0.675,278,1.439,300,1.761,301,0.907,356,0.446,362,0.827,366,0.969,368,1.586,370,0.903,372,1.783,373,0.745,377,1.374,378,2.283,512,1.289,518,3.273,523,0.947,538,1.332,568,1.439,610,0.97,612,2.643,616,0.809,620,2.249,638,1.046,668,1.888,735,1.439,739,1.244,740,1.66,743,4.067,766,2.166,805,1.575,807,1.575,841,2.249,915,1.439,925,1.761,946,1.846,947,1.503,951,1.439,952,2.556,953,1.5,954,1.66,956,1.503,960,2.249,967,1.66,968,2.475,970,1.746,973,1.66,974,1.66,975,1.66,978,4.469,983,1.888,991,2.166,1131,1.244,1132,1.746,1239,1.503,1240,1.503,1241,1.503,1242,2.059,1243,2.059,1244,2.059,1245,2.561,1246,1.503,1247,2.561,1248,1.503,1249,1.503,1250,1.503,1251,1.503,1252,1.575,1253,2.443,1254,2.443,1255,2.443,1256,1.503,1257,1.503,1258,4.872,1259,1.503,1260,3.347,1261,2.059,1262,2.059,1263,2.059,1264,2.059,1265,2.059,1266,2.059,1267,2.059,1268,1.503,1269,1.503,1271,1.503,1273,2.059,1275,1.761,1276,1.761]]],"invertedIndex":[["",{"_index":2,"t":{"622":{"position":[[9,1],[96,1],[304,1]]},"624":{"position":[[20,1],[195,1],[269,1]]},"632":{"position":[[632,1]]},"636":{"position":[[122,1],[132,1],[191,1],[246,2],[249,2],[252,2]]},"638":{"position":[[49,1],[61,1],[123,2],[170,2]]},"640":{"position":[[7,1],[13,1],[68,1]]},"642":{"position":[[7,1],[27,1],[216,2],[385,2]]},"650":{"position":[[254,1],[278,1]]},"660":{"position":[[160,2],[215,2],[271,1],[355,3],[359,2],[383,1],[409,1],[443,1],[471,1],[490,1],[496,2],[521,2],[597,2],[677,1],[691,1],[711,1],[713,2],[765,1],[783,1],[817,1],[845,1],[847,1],[859,1],[861,3],[878,2],[903,1],[917,1],[937,1],[939,2],[970,1],[991,2],[1047,1],[1125,3],[1129,2],[1175,1],[1203,1],[1222,1],[1261,1],[1285,2],[1361,2],[1441,1],[1443,2],[1446,2],[1520,1],[1548,1],[1550,1],[1562,1],[1564,3],[1606,1],[1630,1],[1632,2]]},"662":{"position":[[235,1],[837,1],[839,2],[895,1],[979,3],[983,2],[1078,1],[1114,1],[1142,1],[1144,1],[1156,1],[1158,3],[1181,2],[1206,2],[1282,2],[1362,1],[1376,1],[1396,1],[1410,1],[1431,2],[1487,1],[1565,3],[1569,2],[1668,1],[1696,1],[1698,1],[1710,1],[1712,3],[1768,1],[1792,2],[1868,2],[1948,1],[1950,2]]},"664":{"position":[[292,1],[476,2],[586,1],[718,2],[765,1],[817,2],[888,1],[962,3],[978,1],[999,2],[1109,1],[1241,2],[1288,1],[1340,2],[1411,1],[1485,3],[1735,1],[1737,2],[1804,1],[1855,2],[1868,1],[1921,1],[1933,1],[1947,1],[1967,1],[1969,2],[2086,1],[2088,2],[2101,1],[2154,1],[2166,3],[2307,2],[2364,1],[2394,2],[2442,3],[2446,4],[2451,2],[2537,2],[2623,1],[2625,2],[2667,3],[2671,4],[2676,2],[2762,3]]},"666":{"position":[[143,1],[145,2],[201,1],[285,3],[289,2],[340,1],[376,1],[404,1],[406,1],[418,1],[420,3],[438,2],[441,1],[568,2],[623,2],[722,2],[800,1],[903,3],[907,2],[958,1],[994,1],[1022,1],[1024,1],[1036,1],[1038,3],[1056,2],[1233,1],[1235,2],[1265,1],[1337,3],[1341,2],[1410,1],[1428,2],[1482,1],[1521,1],[1659,1],[1680,2],[1709,1],[1787,3],[1849,2],[1852,1],[1873,2],[1905,2]]},"668":{"position":[[145,1],[452,1],[555,3],[570,1],[667,3],[705,1],[731,1],[809,3],[835,2],[943,2],[977,1],[991,1],[1011,1],[1025,1],[1084,2],[1119,1],[1143,2],[1251,2],[1285,1],[1287,2]]},"670":{"position":[[837,1],[941,1],[968,2],[980,2],[983,1],[1014,1],[1051,2],[1054,1],[1071,1],[1109,2],[1173,2],[1189,2],[1192,1],[1194,2],[1259,3],[1263,2],[1266,2],[1269,2],[1272,3],[1687,1],[1806,2],[1832,2],[1839,1],[1856,3],[1876,1],[1898,2],[1901,1],[1918,1],[1946,2],[1993,2],[2085,3],[2089,1],[2096,1],[2108,1],[2175,2],[2188,1],[2205,1],[2207,2],[2210,3]]},"672":{"position":[[523,1],[674,1],[676,2],[689,3],[727,2],[740,2],[743,1],[780,1],[836,2],[839,2],[867,2],[880,2],[883,1],[920,1],[976,2],[979,2],[1007,2],[1020,2],[1023,1],[1060,1],[1116,2],[1119,2],[1122,2],[1125,3]]},"675":{"position":[[162,1],[462,1],[500,1],[512,1],[525,2],[540,2],[543,1],[545,2],[578,1],[580,1],[582,1],[621,2],[639,1],[641,1],[648,1],[650,1],[652,3],[686,1],[698,1],[705,2],[720,2],[723,1],[725,2],[735,1],[737,1],[739,1],[767,3],[799,1],[811,1],[818,2],[833,2],[836,1],[838,2],[856,1],[865,3],[869,2],[973,1],[975,1],[977,1],[1006,2],[1009,1],[1011,2],[1029,1],[1038,3]]},"677":{"position":[[14,1],[16,1],[68,2],[112,2],[115,1],[117,2],[170,2],[241,2],[244,4],[249,2],[252,3]]},"679":{"position":[[453,2],[562,1],[590,2],[593,2],[619,1],[693,1],[727,1],[776,1],[798,2],[801,2],[816,2],[898,1],[927,1],[965,1],[1052,2],[1055,1],[1057,2],[1096,1],[1149,1],[1238,3],[1242,3],[1246,2],[1249,1],[1285,2],[1288,3],[1379,2]]},"681":{"position":[[10,1],[40,1],[73,1],[111,1],[226,2],[255,3],[592,1],[635,1],[668,1],[759,1],[777,1],[800,1],[834,2],[837,1],[869,1],[871,2],[895,2],[898,3]]},"684":{"position":[[69,1]]},"688":{"position":[[107,2],[255,2],[497,1]]},"694":{"position":[[0,2],[18,2],[33,1],[62,2],[136,2],[191,2],[194,2],[210,2],[271,2],[312,1],[356,2],[483,2],[486,1],[498,1],[563,2],[581,2],[584,1],[617,2],[633,2],[636,1],[656,2],[714,3]]},"696":{"position":[[26,1],[40,1],[80,1],[128,3],[153,1],[182,3],[222,1],[250,1],[264,1],[304,1],[340,3],[344,2],[480,3],[534,1]]},"698":{"position":[[12,1],[42,1],[72,2],[75,1],[85,1],[164,3],[179,1],[287,1],[299,4],[319,3]]},"701":{"position":[[60,1],[62,1],[64,1],[66,1],[100,2],[103,1],[105,2],[114,1],[116,1],[129,1],[131,1],[133,2],[157,1],[159,1],[161,1],[163,1],[243,3],[247,2],[287,1],[289,1],[291,1],[293,1],[359,1],[361,1],[363,1],[365,1]]},"703":{"position":[[165,1],[167,1],[169,1],[199,2],[202,1],[204,2],[266,3],[295,2],[395,1],[407,2],[423,2],[489,2],[492,1],[494,2],[498,1],[500,1],[502,1],[513,1],[515,1],[517,3],[521,2],[573,2],[683,3]]},"705":{"position":[[22,1]]},"707":{"position":[[63,1],[81,1],[96,1],[114,1],[155,1],[187,1],[230,1],[250,1]]},"709":{"position":[[105,1],[140,1],[201,1],[211,1],[256,2],[259,1],[333,1],[343,1],[388,2],[391,1],[466,1],[476,1],[528,1],[538,1],[583,2],[586,1],[620,1],[622,2],[625,1],[627,2],[630,1],[632,2]]},"716":{"position":[[233,1],[266,1]]},"718":{"position":[[14,1],[34,1],[83,1],[85,1],[119,2],[133,1]]},"720":{"position":[[14,1],[28,1],[71,1],[73,1],[107,2],[121,1]]},"722":{"position":[[37,1],[67,2],[70,1],[72,3],[76,1],[85,1],[87,1],[97,1],[99,1],[101,2],[104,3],[131,1],[161,2],[164,1],[166,3],[170,1],[179,1],[181,1],[191,1],[193,1],[195,2],[198,3]]},"725":{"position":[[68,1],[84,1],[112,1],[171,3],[175,2],[223,1],[253,2],[256,1],[277,3],[281,1],[290,1],[292,1],[302,1],[304,1],[306,2],[309,3],[313,2],[390,2],[393,1],[414,3],[418,1],[427,1],[429,1],[454,1],[456,1],[458,2],[461,3],[513,1],[529,1],[557,1],[635,3],[639,2],[688,1],[703,1],[731,2],[734,1],[755,3],[759,1],[768,1],[770,1],[777,1],[779,1],[781,2],[784,1],[786,2],[789,2],[866,2],[869,1],[890,3],[894,1],[903,1],[905,1],[914,1],[916,1],[918,2],[921,3]]},"727":{"position":[[85,1],[101,1],[129,1],[214,3],[228,1],[230,1],[241,1],[263,1],[276,2],[327,2],[330,1],[351,3],[355,1],[364,1],[366,1],[368,1],[378,1],[380,2],[383,1],[385,1],[395,1],[397,1],[399,1],[401,2],[404,3]]},"729":{"position":[[322,1],[340,1],[368,1],[427,3],[441,1],[443,1],[452,1],[457,2],[508,2],[511,1],[534,3],[538,1],[565,1],[618,3],[672,1],[674,2],[677,3]]},"731":{"position":[[173,1],[191,1],[219,1],[304,3],[318,1],[320,1],[329,1],[341,1],[346,2],[400,2],[403,1],[427,3],[431,1],[443,1],[461,1],[514,3],[569,2],[588,1],[641,3],[695,1],[697,1],[699,2],[702,3]]},"733":{"position":[[281,1],[320,1],[348,1],[407,3],[411,3],[431,2],[486,3],[506,2],[566,1],[578,1],[587,3],[591,3],[615,2],[628,1],[721,2],[724,1],[747,3],[751,1],[778,1],[831,3],[885,1],[887,2],[890,3],[1066,3],[1107,2]]},"745":{"position":[[97,1],[110,1],[192,1],[222,2],[225,3],[262,1],[276,1],[296,1],[310,1],[342,1],[453,1],[481,1],[509,1],[511,2],[514,3],[551,3]]},"747":{"position":[[95,1],[108,1],[180,2],[195,2],[208,3],[212,3],[233,1],[263,2],[266,3],[303,1],[317,1],[337,1],[351,1],[383,1],[455,2],[470,2],[483,3],[487,3],[537,1],[565,1],[593,1],[595,2],[598,3],[635,3]]},"749":{"position":[[95,1],[108,1],[129,2],[132,3],[213,2],[216,3],[237,1],[267,2],[270,3],[307,1],[321,1],[341,1],[355,1],[387,1],[408,2],[411,3],[493,3],[543,1],[571,1],[599,1],[601,2],[604,3],[641,3]]},"751":{"position":[[113,1],[126,1],[147,2],[150,3],[159,1],[161,2],[212,2],[308,2],[311,3],[332,1],[362,2],[365,3],[402,1],[416,1],[436,1],[450,1],[482,1],[503,2],[506,3],[515,1],[517,2],[568,2],[664,2],[667,3],[717,1],[745,1],[773,1],[775,2],[778,3],[815,3]]},"753":{"position":[[282,1],[295,1],[316,2],[319,3],[390,3],[411,1],[441,2],[444,3],[481,1],[495,1],[515,1],[529,1],[543,1],[640,1],[654,1],[674,1],[688,1],[720,1],[741,2],[744,3],[815,3],[865,1],[893,1],[921,1],[923,2],[926,3],[963,3],[1046,1],[1086,1],[1114,1],[1134,3]]},"755":{"position":[[13,1],[77,1],[129,1]]},"757":{"position":[[54,1],[97,1],[136,1],[171,3],[186,1],[227,3],[243,1],[286,1],[319,1],[367,2],[370,1],[412,3],[416,2],[419,3],[494,2],[497,1],[525,1],[553,1],[582,3],[647,2],[650,1],[678,1],[706,1],[735,3],[800,2],[803,1],[831,1],[859,1],[888,3]]},"762":{"position":[[35,1],[71,1],[113,1],[157,2],[217,2],[350,2],[355,1],[377,3],[430,2],[433,1],[461,2],[464,2]]},"764":{"position":[[63,1],[114,1],[124,1],[238,3],[290,1],[348,1],[371,1],[413,1],[425,1],[464,1],[647,1],[759,2],[762,2],[878,2],[889,1],[953,1],[1055,3],[1155,1],[1267,2],[1270,2],[1323,1],[1379,1],[1397,2],[1400,1],[1423,2],[1439,2],[1442,1],[1483,3],[1513,1],[1551,1],[1581,2],[1584,1],[1594,1],[1678,3],[1693,1],[1801,1],[1813,4],[1833,2],[1851,2],[1854,1],[1877,2],[1902,1],[1933,3],[1937,1],[1983,1],[1985,1],[2050,3],[2085,1],[2130,2],[2141,2],[2154,3],[2192,1],[2216,1],[2218,1]]},"766":{"position":[[105,1],[140,1]]},"770":{"position":[[103,1],[122,1],[198,2],[201,1],[215,1],[235,1],[249,1],[287,1],[357,2],[398,2],[401,1],[421,3]]},"772":{"position":[[107,1],[126,1],[210,2],[225,2],[238,3],[242,3],[246,1],[260,1],[280,1],[294,1],[332,1],[410,2],[425,2],[438,3],[442,3],[484,2],[487,1],[507,3]]},"774":{"position":[[107,1],[126,1],[159,2],[162,3],[243,2],[246,3],[250,1],[264,1],[284,1],[298,1],[336,1],[363,2],[366,3],[448,3],[490,2],[493,1],[513,3]]},"776":{"position":[[125,1],[144,1],[177,2],[180,3],[189,1],[191,2],[242,2],[338,2],[341,3],[345,1],[359,1],[379,1],[393,1],[431,1],[458,2],[461,3],[470,1],[472,2],[523,2],[619,2],[622,3],[664,2],[667,1],[687,3]]},"778":{"position":[[294,1],[313,1],[346,2],[349,3],[420,3],[424,1],[438,1],[458,1],[472,1],[486,1],[589,1],[603,1],[623,1],[637,1],[675,1],[702,2],[705,3],[776,3],[818,2],[821,1],[841,3],[924,1],[970,1],[998,1],[1018,3]]},"780":{"position":[[13,1],[77,1],[129,1]]},"782":{"position":[[66,1],[109,1],[148,1],[183,3],[204,1],[251,3],[293,2],[296,1],[316,3],[332,1],[375,1],[414,1],[468,2],[471,1],[513,3],[517,2],[520,3],[562,2],[565,1],[585,3],[666,2],[669,1],[697,1],[725,1],[754,3],[825,2],[828,1],[856,1],[884,1],[913,3],[984,2],[987,1],[1015,1],[1043,1],[1072,3]]},"788":{"position":[[63,1],[75,1],[120,3],[124,3],[128,7],[149,1],[200,1],[283,1],[297,1],[317,1],[329,1],[374,3],[378,3],[382,7],[403,1],[485,2],[488,1],[516,1],[544,1],[588,3]]},"790":{"position":[[58,1],[70,1],[115,3],[119,3],[123,7],[144,1],[195,1],[237,2],[240,3],[258,3],[304,1],[318,1],[338,1],[350,1],[395,3],[399,3],[403,7],[424,1],[472,1],[487,2],[490,3],[508,2],[533,2],[536,1],[564,1],[592,1],[636,1],[638,2]]},"792":{"position":[[73,1],[85,1],[130,3],[134,3],[138,7],[159,1],[210,1],[238,1],[245,2],[248,3],[266,2],[276,2],[321,1],[335,1],[355,1],[367,1],[412,3],[416,3],[420,7],[441,1],[489,1],[496,2],[499,3],[517,2],[550,2],[553,1],[581,1],[609,1],[653,1],[655,2]]},"800":{"position":[[63,1],[75,1],[85,1],[113,1],[115,1],[127,1],[129,3],[146,1],[183,1],[264,1],[278,1],[298,1],[310,1],[320,1],[348,1],[350,1],[362,1],[364,3],[381,1],[449,2],[452,1],[480,1],[508,1],[550,3]]},"802":{"position":[[58,1],[70,1],[80,1],[108,1],[110,1],[122,1],[124,3],[141,1],[178,1],[220,2],[223,3],[241,3],[285,1],[299,1],[319,1],[331,1],[341,1],[369,1],[371,1],[383,1],[385,3],[402,1],[438,1],[453,2],[456,3],[474,2],[497,2],[500,1],[528,1],[556,1],[598,1],[600,2]]},"804":{"position":[[73,1],[85,1],[95,1],[123,1],[125,1],[137,1],[139,3],[156,1],[193,1],[221,1],[228,2],[231,3],[249,2],[259,2],[302,1],[316,1],[336,1],[348,1],[358,1],[386,1],[388,1],[400,1],[402,3],[419,1],[455,1],[462,2],[465,3],[483,2],[514,2],[517,1],[545,1],[573,1],[615,1],[617,2]]},"810":{"position":[[63,1],[75,1],[103,1],[105,1],[120,1],[122,1],[147,1],[186,1],[269,1],[283,1],[303,1],[315,1],[343,1],[345,1],[360,1],[362,1],[387,1],[457,2],[460,1],[488,1],[516,1],[560,3]]},"812":{"position":[[58,1],[70,1],[98,1],[100,1],[115,1],[117,1],[142,1],[181,1],[223,2],[226,3],[244,3],[290,1],[304,1],[324,1],[336,1],[364,1],[366,1],[381,1],[383,1],[408,1],[444,1],[459,2],[462,3],[480,2],[505,2],[508,1],[536,1],[564,1],[608,1],[610,2]]},"814":{"position":[[73,1],[85,1],[113,1],[115,1],[130,1],[132,1],[157,1],[196,1],[224,1],[231,2],[234,3],[252,2],[262,2],[307,1],[321,1],[341,1],[353,1],[381,1],[383,1],[398,1],[400,1],[425,1],[461,1],[468,2],[471,3],[489,2],[522,2],[525,1],[553,1],[581,1],[625,1],[627,2]]},"821":{"position":[[45,1]]},"825":{"position":[[46,1],[58,1],[94,1],[136,1],[209,1],[223,1],[243,1],[255,1],[291,1],[354,2],[357,1],[385,1],[413,1],[457,3]]},"827":{"position":[[56,1],[68,1],[104,1],[146,1],[178,2],[181,3],[199,3],[245,1],[259,1],[279,1],[291,1],[327,1],[364,1],[371,2],[374,3],[392,2],[417,2],[420,1],[448,1],[476,1],[520,1],[522,2]]},"835":{"position":[[63,1],[75,1],[111,1],[113,1],[138,1],[173,1],[256,1],[270,1],[290,1],[302,1],[338,1],[340,1],[365,1],[431,2],[434,1],[462,1],[490,1],[534,3]]},"837":{"position":[[58,1],[70,1],[106,1],[108,1],[133,1],[168,1],[210,2],[213,3],[231,3],[277,1],[291,1],[311,1],[323,1],[359,1],[361,1],[386,1],[418,1],[433,2],[436,3],[454,2],[479,2],[482,1],[510,1],[538,1],[582,1],[584,2]]},"839":{"position":[[73,1],[85,1],[121,1],[123,1],[148,1],[183,1],[211,1],[218,2],[221,3],[239,2],[249,2],[294,1],[308,1],[328,1],[340,1],[376,1],[378,1],[403,1],[435,1],[442,2],[445,3],[463,2],[496,2],[499,1],[527,1],[555,1],[599,1],[601,2]]},"848":{"position":[[46,1],[58,1],[155,1],[228,1],[242,1],[262,1],[274,1],[392,2],[395,1],[423,1],[451,1],[495,3]]},"850":{"position":[[56,1],[68,1],[165,1],[197,2],[200,3],[218,3],[264,1],[278,1],[298,1],[310,1],[402,1],[409,2],[412,3],[430,2],[455,2],[458,1],[486,1],[514,1],[558,1],[560,2]]},"859":{"position":[[105,1],[125,1],[228,2],[259,7],[284,1],[331,2],[334,3],[371,1],[385,1],[405,1],[419,1],[458,1],[561,2],[592,7],[665,1],[693,1],[721,1],[723,2],[726,3],[763,3]]},"861":{"position":[[103,1],[123,1],[180,1],[233,2],[248,2],[261,3],[265,3],[269,2],[300,7],[325,1],[372,2],[375,3],[412,1],[426,1],[446,1],[460,1],[499,1],[556,1],[609,2],[624,2],[637,3],[641,3],[645,2],[676,7],[749,1],[777,1],[805,1],[807,2],[810,3],[847,3]]},"863":{"position":[[103,1],[123,1],[180,1],[182,2],[185,3],[266,2],[269,3],[273,2],[304,7],[329,1],[376,2],[379,3],[416,1],[430,1],[450,1],[464,1],[503,1],[560,1],[562,2],[565,3],[647,3],[651,2],[682,7],[755,1],[783,1],[811,1],[813,2],[816,3],[853,3]]},"865":{"position":[[121,1],[141,1],[198,1],[200,2],[203,3],[212,1],[214,2],[265,2],[361,2],[364,3],[368,2],[399,7],[424,1],[471,2],[474,3],[511,1],[525,1],[545,1],[559,1],[598,1],[655,1],[657,2],[660,3],[669,1],[671,2],[722,2],[818,2],[821,3],[825,2],[856,7],[929,1],[957,1],[985,1],[987,2],[990,3],[1027,3]]},"867":{"position":[[290,1],[310,1],[367,1],[369,2],[372,3],[443,3],[447,2],[478,7],[503,1],[550,2],[553,3],[590,1],[604,1],[624,1],[638,1],[652,1],[756,1],[770,1],[790,1],[804,1],[843,1],[900,1],[902,2],[905,3],[976,3],[980,2],[1011,7],[1084,1],[1112,1],[1140,1],[1142,2],[1145,3],[1182,3],[1265,1],[1312,1],[1340,1],[1360,3]]},"869":{"position":[[13,1],[77,1],[129,1]]},"871":{"position":[[62,1],[105,1],[144,1],[179,3],[201,1],[258,1],[280,3],[284,2],[315,7],[343,1],[385,1],[428,1],[468,1],[525,1],[554,2],[557,1],[599,3],[603,2],[606,3],[610,2],[641,7],[669,1],[779,2],[782,1],[810,1],[838,1],[867,3],[941,2],[944,1],[972,1],[1000,1],[1029,3],[1103,2],[1106,1],[1134,1],[1162,1],[1191,3]]},"878":{"position":[[46,1],[58,1],[68,1],[96,1],[115,1],[143,1],[214,1],[228,1],[248,1],[260,1],[270,1],[298,1],[317,1],[366,2],[369,1],[397,1],[425,1],[467,3]]},"880":{"position":[[56,1],[68,1],[78,1],[106,1],[125,1],[153,1],[185,2],[188,3],[206,3],[250,1],[264,1],[284,1],[296,1],[306,1],[334,1],[353,1],[378,1],[385,2],[388,3],[406,2],[429,2],[432,1],[460,1],[488,1],[530,1],[532,2]]},"882":{"position":[[56,1],[68,1],[78,1],[106,1],[125,1],[153,1],[204,2],[207,3],[225,3],[269,1],[283,1],[303,1],[315,1],[325,1],[353,1],[372,1],[397,1],[423,2],[426,3],[444,2],[467,2],[470,1],[498,1],[526,1],[568,1],[570,2]]},"887":{"position":[[34,1],[136,3],[155,2],[158,1],[171,1],[178,1],[188,1],[221,2],[224,1],[253,2],[313,3],[317,1],[319,2],[344,2],[347,1],[360,1],[367,1],[377,1],[408,2],[411,1],[470,2],[473,1],[516,3],[520,3],[524,1],[526,2]]},"891":{"position":[[46,1],[58,1],[86,1],[104,1],[146,1],[219,1],[233,1],[253,1],[265,1],[293,1],[311,1],[374,2],[377,1],[405,1],[433,1],[477,3]]},"893":{"position":[[56,1],[68,1],[96,1],[114,1],[156,1],[188,2],[191,3],[209,3],[255,1],[269,1],[289,1],[301,1],[329,1],[347,1],[384,1],[391,2],[394,3],[412,2],[437,2],[440,1],[468,1],[496,1],[540,1],[542,2]]},"900":{"position":[[35,1],[68,1],[124,1],[194,1],[233,1],[277,1],[373,2],[389,1],[401,1],[408,1],[410,2],[464,1],[509,3],[513,1],[515,1],[530,1],[606,2],[609,1],[611,2],[643,2],[693,3],[697,2],[783,2],[856,2],[886,2],[976,3],[1018,2],[1021,1],[1083,3],[1112,2],[1115,1],[1137,1],[1324,2],[1327,3],[1356,4],[1361,3],[1365,10],[1376,7],[1393,4],[1424,7],[1432,4],[1437,8],[1446,6],[1453,11],[1496,3],[1500,3]]},"902":{"position":[[35,1],[74,1],[132,1],[208,2],[211,1],[395,1],[419,3],[461,2],[464,1],[526,3],[543,1],[652,3],[679,2],[682,1],[756,1],[758,2],[807,2],[881,1],[883,2],[939,1],[963,1],[1076,1],[1083,1],[1085,2],[1147,1],[1216,1],[1218,3],[1222,3],[1267,3]]},"904":{"position":[[9,3],[13,1],[60,1],[148,2],[165,1],[239,1],[301,1],[303,3],[310,2],[324,3],[333,2],[347,1],[373,1],[416,2],[419,1],[431,2],[446,3],[485,1],[487,1],[587,2],[614,2],[631,2],[641,2],[644,2],[647,1],[681,1],[683,1],[691,3],[701,3],[715,3],[729,3],[752,2],[766,1],[806,3],[851,2],[922,3],[956,2],[1088,2],[1091,3],[1116,2],[1136,1],[1215,4],[1220,4],[1225,6],[1267,2],[1319,3],[1371,2],[1446,3],[1488,2],[1568,1],[1604,3],[1608,3],[1626,2],[1653,1],[1753,2],[1756,1],[1758,3],[1860,2],[1893,1],[1924,3],[1979,1],[1986,1],[2009,2],[2012,1],[2043,3],[2064,2],[2108,3],[2112,1],[2114,3],[2136,5],[2142,3],[2153,1],[2155,1],[2169,1],[2188,1],[2196,1],[2210,1],[2229,1],[2237,1],[2250,1],[2269,1],[2277,1],[2290,1],[2309,1],[2317,1],[2331,1],[2350,1],[2369,2]]},"906":{"position":[[9,3],[13,1],[60,1],[148,2],[165,1],[218,1],[280,1],[308,1],[317,2],[320,2],[323,1],[357,1],[359,1],[367,3],[377,3],[391,3],[405,3],[409,2],[423,1],[463,3],[508,2],[579,3],[613,2],[745,2],[748,3],[773,2],[793,1],[872,4],[877,4],[882,6],[924,2],[976,3],[994,2],[1011,1],[1047,1],[1084,2],[1108,2],[1111,1],[1137,3],[1158,2],[1204,3],[1226,5],[1232,3],[1243,1],[1245,1],[1259,1],[1273,1],[1281,1],[1295,1],[1309,1],[1317,1],[1330,1],[1344,1],[1352,1],[1365,1],[1379,1],[1387,1],[1401,2]]},"908":{"position":[[9,3],[13,1],[60,1],[148,2],[165,1],[218,1],[280,1],[308,1],[317,2],[320,2],[323,1],[357,1],[359,1],[367,3],[377,3],[391,3],[405,3],[435,2],[449,1],[489,3],[534,2],[605,3],[639,2],[771,2],[774,3],[799,2],[819,1],[898,4],[903,4],[908,6],[950,2],[1002,3],[1020,2],[1036,1],[1066,1],[1076,1],[1130,1],[1194,2],[1197,2],[1221,2],[1224,1],[1247,2],[1250,1],[1276,3],[1297,2],[1343,3],[1347,3],[1369,5],[1375,3],[1386,1],[1388,1],[1402,1],[1416,1],[1424,1],[1438,1],[1452,1],[1460,1],[1473,1],[1487,1],[1495,1],[1508,1],[1522,1],[1530,1],[1544,2]]},"910":{"position":[[9,3],[13,1],[60,1],[148,2],[165,1],[218,1],[280,1],[282,3],[289,2],[303,3],[312,2],[326,1],[335,2],[338,2],[341,1],[375,1],[377,1],[385,3],[395,3],[409,3],[423,3],[446,2],[460,1],[500,3],[545,2],[616,3],[650,2],[782,2],[785,3],[810,2],[830,1],[909,4],[914,4],[919,6],[961,2],[1013,3],[1031,2],[1048,1],[1084,1],[1121,2],[1145,2],[1148,1],[1174,3],[1195,2],[1239,3],[1261,5],[1267,3],[1278,1],[1280,1],[1294,1],[1308,1],[1316,1],[1330,1],[1344,1],[1352,1],[1365,1],[1379,1],[1387,1],[1400,1],[1414,1],[1422,1],[1436,2]]},"912":{"position":[[9,3],[13,1],[60,1],[148,2],[165,1],[218,1],[280,1],[282,3],[289,2],[303,3],[312,2],[326,1],[335,2],[338,2],[341,1],[375,1],[377,1],[385,3],[395,3],[409,3],[423,3],[472,2],[486,1],[526,3],[571,2],[642,3],[676,2],[808,2],[811,3],[836,2],[856,1],[935,4],[940,4],[945,6],[987,2],[1039,3],[1057,2],[1073,1],[1103,1],[1113,1],[1167,1],[1231,2],[1234,2],[1258,2],[1261,1],[1284,2],[1287,1],[1313,3],[1334,2],[1378,3],[1382,3],[1404,5],[1410,3],[1421,1],[1423,1],[1437,1],[1451,1],[1459,1],[1473,1],[1487,1],[1495,1],[1508,1],[1522,1],[1530,1],[1543,1],[1557,1],[1565,1],[1579,2]]},"916":{"position":[[17,1],[354,1],[531,1]]},"922":{"position":[[166,1],[198,1],[231,3],[241,3],[255,3],[259,3],[301,2],[304,1],[332,1],[379,1],[381,3],[508,1],[540,1],[567,3],[577,3],[591,3],[595,3],[636,2],[639,1],[667,1],[724,1],[726,3],[860,1],[899,1],[953,1],[961,3],[971,3],[985,3],[989,3],[1046,2],[1049,1],[1077,1],[1141,1],[1143,3],[1280,1],[1298,2],[1301,1],[1329,1],[1375,1],[1396,3],[1613,1],[1631,2],[1634,1],[1662,1],[1706,1],[1727,3]]},"924":{"position":[[184,1],[203,1],[242,3],[252,3],[266,3],[270,3],[274,1],[288,1],[316,1],[336,1],[338,1],[489,1],[516,3],[526,3],[540,3],[544,3],[552,1],[571,1],[601,1],[615,1],[643,1],[663,1],[665,1],[830,1],[884,1],[892,3],[902,3],[916,3],[920,3],[928,1],[972,1],[986,1],[1014,1],[1061,1],[1063,1],[1165,1],[1180,1],[1216,1],[1242,1],[1256,1],[1284,1],[1322,1],[1324,1],[1508,1],[1523,1],[1557,1],[1583,1],[1597,1],[1625,1],[1661,1],[1663,1]]},"928":{"position":[[15,3],[19,1],[66,2],[76,1],[90,1],[122,1],[130,1],[185,1],[213,1],[241,1],[243,1],[251,3],[261,3],[275,3],[289,3],[293,2],[303,2],[306,2],[309,1],[323,1],[344,3],[389,2],[450,3],[484,2],[606,2],[609,3],[634,2],[654,1],[723,4],[728,4],[733,6],[775,2],[827,3],[845,2],[862,1],[895,1],[932,2],[962,2],[965,1],[991,3],[1012,2],[1058,3],[1092,5],[1098,3],[1109,1],[1111,1],[1125,1],[1139,1],[1147,1],[1161,1],[1175,1],[1183,1],[1196,1],[1210,1],[1218,1],[1231,1],[1245,1],[1253,1],[1267,2],[1270,3],[1274,1],[1321,2],[1331,1],[1396,1],[1440,1],[1534,1],[1553,1],[1578,1],[1610,1],[1612,3],[1683,2],[1713,1],[1742,1],[1774,1],[1776,3],[1804,2],[1823,1],[1907,1],[1909,3],[1965,2],[1991,1],[2077,1],[2079,3],[2112,2],[2133,1],[2217,1],[2219,3],[2297,2],[2319,1],[2405,1],[2407,3],[2435,2],[2456,1],[2542,1],[2544,3],[2600,2],[2628,1],[2716,1],[2718,3],[2751,2],[2774,1],[2860,1],[2862,3],[2940,2],[2964,1],[3052,1],[3054,3],[3085,2],[3105,1],[3125,1],[3127,1]]},"930":{"position":[[9,3],[13,1],[60,1],[148,2],[165,1],[239,1],[301,1],[329,1],[355,1],[398,2],[401,1],[413,2],[428,3],[467,1],[469,1],[569,2],[596,2],[613,2],[623,2],[626,2],[629,1],[663,1],[665,1],[673,3],[683,3],[697,3],[711,3],[715,2],[729,1],[769,3],[814,2],[885,3],[919,2],[1051,2],[1054,3],[1079,2],[1099,1],[1178,4],[1183,4],[1188,6],[1230,2],[1282,3],[1334,2],[1409,3],[1451,2],[1531,1],[1567,3],[1571,3],[1589,2],[1616,1],[1716,2],[1719,1],[1721,3],[1823,2],[1856,1],[1887,3],[1942,1],[1949,1],[1972,2],[1975,1],[2006,3],[2027,2],[2073,3],[2077,1],[2079,3],[2101,5],[2107,3],[2118,1],[2120,1],[2134,1],[2153,1],[2161,1],[2175,1],[2194,1],[2202,1],[2215,1],[2234,1],[2242,1],[2255,1],[2274,1],[2282,1],[2296,1],[2315,1],[2334,2]]}}}],["0",{"_index":219,"t":{"638":{"position":[[257,2]]},"664":{"position":[[910,2],[959,2],[1433,2],[1482,2]]},"707":{"position":[[121,2]]},"729":{"position":[[579,2],[596,2],[609,2],[654,2],[670,1]]},"731":{"position":[[475,2],[492,2],[505,2],[551,2],[567,1],[602,2],[619,2],[632,2],[677,2],[693,1]]},"733":{"position":[[792,2],[809,2],[822,2],[867,2],[883,1]]},"762":{"position":[[291,2]]},"887":{"position":[[173,2],[362,2]]},"900":{"position":[[1308,2],[1321,2]]},"904":{"position":[[313,2],[2367,1]]},"910":{"position":[[292,2]]},"912":{"position":[[292,2]]},"930":{"position":[[2332,1]]}}}],["0deprec",{"_index":987,"t":{"735":{"position":[[0,11]]},"918":{"position":[[101,11]]}}}],["0xffffff",{"_index":1195,"t":{"900":{"position":[[876,9]]},"902":{"position":[[386,8]]}}}],["1",{"_index":220,"t":{"638":{"position":[[260,2]]},"666":{"position":[[1516,4],[1822,3]]},"668":{"position":[[209,1],[765,1],[1040,1]]},"675":{"position":[[517,2],[703,1],[760,3],[764,2],[816,1],[854,1],[858,1],[986,3],[990,3],[1027,1],[1031,1]]},"701":{"position":[[58,1],[155,1],[285,1],[357,1]]},"707":{"position":[[135,1]]},"709":{"position":[[189,3],[222,3],[321,3],[454,3],[516,3]]},"722":{"position":[[35,1],[39,1],[129,1],[133,1]]},"725":{"position":[[221,1],[225,1],[686,1],[690,1]]},"727":{"position":[[239,1],[243,1]]},"729":{"position":[[449,2],[454,2]]},"731":{"position":[[326,2],[331,2]]},"733":{"position":[[563,2],[568,2]]},"757":{"position":[[347,2]]},"762":{"position":[[347,2],[353,1]]},"764":{"position":[[2138,2]]},"782":{"position":[[448,2]]},"810":{"position":[[130,3],[370,3]]},"812":{"position":[[125,3],[391,3]]},"814":{"position":[[140,3],[408,3]]},"825":{"position":[[109,3],[306,3]]},"827":{"position":[[119,3],[342,3]]},"835":{"position":[[121,3],[348,3]]},"837":{"position":[[116,3],[369,3]]},"839":{"position":[[131,3],[386,3]]},"871":{"position":[[534,2]]},"891":{"position":[[119,3],[326,3]]},"893":{"position":[[129,3],[362,3]]},"904":{"position":[[336,2],[2275,1]]},"906":{"position":[[1350,1]]},"908":{"position":[[1493,1]]},"910":{"position":[[315,2],[1385,1]]},"912":{"position":[[315,2],[1528,1]]},"922":{"position":[[1278,1],[1282,3],[1611,1],[1615,3]]},"924":{"position":[[1214,1],[1218,4],[1555,1],[1559,4]]},"928":{"position":[[1216,1]]},"930":{"position":[[2240,1]]}}}],["1+1",{"_index":764,"t":{"681":{"position":[[284,3]]}}}],["1+:toadd",{"_index":877,"t":{"698":{"position":[[269,8]]},"764":{"position":[[1783,8]]}}}],["1,2",{"_index":725,"t":{"675":{"position":[[608,5]]}}}],["1.0.0",{"_index":205,"t":{"636":{"position":[[202,8]]},"764":{"position":[[2026,8]]}}}],["1.1",{"_index":221,"t":{"638":{"position":[[263,4]]}}}],["1.1earli",{"_index":1331,"t":{"918":{"position":[[756,8]]}}}],["1.2",{"_index":222,"t":{"638":{"position":[[268,4]]}}}],["1.2releas",{"_index":1335,"t":{"918":{"position":[[848,10]]}}}],["10",{"_index":487,"t":{"664":{"position":[[701,3],[714,3],[1224,3],[1237,3]]},"681":{"position":[[237,2]]},"698":{"position":[[296,2]]},"731":{"position":[[532,3]]},"764":{"position":[[1810,2]]},"900":{"position":[[754,3]]},"902":{"position":[[280,3]]}}}],["1000",{"_index":1163,"t":{"887":{"position":[[322,6],[529,6]]}}}],["1045",{"_index":1182,"t":{"900":{"position":[[504,4]]}}}],["1080",{"_index":779,"t":{"681":{"position":[[864,4]]}}}],["12",{"_index":884,"t":{"701":{"position":[[126,2]]}}}],["120",{"_index":1079,"t":{"762":{"position":[[335,4]]}}}],["123",{"_index":1071,"t":{"762":{"position":[[152,4]]},"900":{"position":[[689,3]]}}}],["1234",{"_index":1193,"t":{"900":{"position":[[817,5]]},"902":{"position":[[330,5]]}}}],["137",{"_index":442,"t":{"662":{"position":[[1171,5],[1725,5]]}}}],["14",{"_index":541,"t":{"666":{"position":[[434,3],[1052,3]]}}}],["16000",{"_index":919,"t":{"705":{"position":[[86,5]]}}}],["18.x",{"_index":112,"t":{"630":{"position":[[60,5]]}}}],["19",{"_index":1133,"t":{"788":{"position":[[160,3],[414,3]]},"790":{"position":[[155,3],[435,3]]},"792":{"position":[[170,3],[452,3]]},"848":{"position":[[112,4],[328,4]]},"850":{"position":[[122,4],[364,4]]}}}],["1998",{"_index":1382,"t":{"926":{"position":[[12,5]]}}}],["1experiment",{"_index":257,"t":{"644":{"position":[[144,13]]},"918":{"position":[[642,13]]}}}],["2",{"_index":223,"t":{"638":{"position":[[273,1]]},"668":{"position":[[221,1],[777,1],[1052,1]]},"675":{"position":[[523,1]]},"696":{"position":[[195,3],[199,4]]},"703":{"position":[[293,1],[464,3]]},"722":{"position":[[95,1],[189,1]]},"725":{"position":[[300,1],[701,1],[705,1],[772,2]]},"727":{"position":[[261,1],[265,1],[376,1]]},"729":{"position":[[636,2]]},"731":{"position":[[338,2],[343,2],[659,2]]},"733":{"position":[[575,2],[580,2],[849,2]]},"900":{"position":[[836,2]]},"902":{"position":[[349,2]]},"904":{"position":[[2235,1]]},"906":{"position":[[1315,1]]},"908":{"position":[[1117,4],[1171,1],[1180,4],[1458,1]]},"910":{"position":[[1350,1]]},"912":{"position":[[1154,4],[1208,1],[1217,4],[1493,1]]},"928":{"position":[[1181,1]]},"930":{"position":[[2200,1]]}}}],["2+3",{"_index":1099,"t":{"764":{"position":[[785,3],[1292,3]]}}}],["2.0",{"_index":736,"t":{"679":{"position":[[238,3]]}}}],["2.rds.amazonaws.com",{"_index":1043,"t":{"753":{"position":[[349,21],[774,21]]},"778":{"position":[[379,21],[735,21]]},"867":{"position":[[402,21],[935,21]]}}}],["20",{"_index":1142,"t":{"810":{"position":[[149,4],[389,4]]},"812":{"position":[[144,4],[410,4]]},"814":{"position":[[159,4],[427,4]]},"891":{"position":[[88,2],[295,2]]},"893":{"position":[[98,2],[331,2]]}}}],["2113931265",{"_index":1196,"t":{"900":{"position":[[907,11]]}}}],["2119",{"_index":1051,"t":{"755":{"position":[[71,5]]},"780":{"position":[[71,5]]},"869":{"position":[[71,5]]}}}],["2130",{"_index":1049,"t":{"755":{"position":[[7,5]]},"780":{"position":[[7,5]]},"869":{"position":[[7,5]]}}}],["2131",{"_index":1054,"t":{"755":{"position":[[123,5]]},"780":{"position":[[123,5]]},"869":{"position":[[123,5]]}}}],["2181036031",{"_index":1197,"t":{"900":{"position":[[936,11]]}}}],["2282",{"_index":1383,"t":{"926":{"position":[[18,5]]}}}],["253",{"_index":1214,"t":{"900":{"position":[[1296,4]]}}}],["2stabl",{"_index":224,"t":{"638":{"position":[[290,7],[298,7]]},"725":{"position":[[0,7]]},"727":{"position":[[0,7]]},"729":{"position":[[0,7]]},"731":{"position":[[0,7]]},"733":{"position":[[0,7]]},"918":{"position":[[1114,7]]},"922":{"position":[[17,7],[396,7],[748,7],[1155,7],[1492,7]]},"924":{"position":[[17,7],[351,7],[685,7],[1073,7],[1418,7]]}}}],["3",{"_index":103,"t":{"628":{"position":[[39,2]]},"638":{"position":[[279,2]]},"672":{"position":[[292,3]]},"675":{"position":[[646,1]]},"696":{"position":[[388,1]]},"703":{"position":[[511,1]]},"709":{"position":[[232,3],[354,3],[364,3],[549,3],[559,3]]},"904":{"position":[[2315,1]]},"906":{"position":[[1385,1]]},"908":{"position":[[1528,1]]},"910":{"position":[[1420,1]]},"912":{"position":[[1563,1]]},"928":{"position":[[1251,1]]},"930":{"position":[[2280,1]]}}}],["33",{"_index":1210,"t":{"900":{"position":[[1261,3]]}}}],["3306",{"_index":778,"t":{"681":{"position":[[829,4]]},"747":{"position":[[189,5],[464,5]]},"757":{"position":[[166,4],[407,4]]},"764":{"position":[[163,5],[980,5],[1633,5]]},"772":{"position":[[219,5],[419,5]]},"782":{"position":[[178,4],[508,4]]},"861":{"position":[[242,5],[618,5]]},"871":{"position":[[174,4],[594,4]]}}}],["384",{"_index":1212,"t":{"900":{"position":[[1279,4]]}}}],["3legaci",{"_index":1347,"t":{"918":{"position":[[1181,7]]}}}],["4",{"_index":960,"t":{"725":{"position":[[775,1]]},"727":{"position":[[393,1]]},"904":{"position":[[2167,1],[2194,1]]},"906":{"position":[[1257,1],[1279,1]]},"908":{"position":[[1400,1],[1422,1]]},"910":{"position":[[1292,1],[1314,1]]},"912":{"position":[[1435,1],[1457,1]]},"928":{"position":[[1123,1],[1145,1]]},"930":{"position":[[2132,1],[2159,1]]}}}],["4.5.2",{"_index":941,"t":{"714":{"position":[[224,8]]}}}],["45",{"_index":380,"t":{"660":{"position":[[492,3],[874,3],[1224,4],[1577,4]]},"788":{"position":[[172,4],[426,4]]},"790":{"position":[[167,4],[447,4]]},"792":{"position":[[182,4],[464,4]]},"800":{"position":[[157,4],[392,4]]},"802":{"position":[[152,4],[413,4]]},"804":{"position":[[167,4],[430,4]]},"848":{"position":[[126,5],[342,5]]},"850":{"position":[[136,5],[378,5]]},"878":{"position":[[117,4],[319,4]]},"880":{"position":[[127,4],[355,4]]},"882":{"position":[[127,4],[374,4]]}}}],["5",{"_index":882,"t":{"701":{"position":[[80,3]]},"887":{"position":[[180,2],[369,2]]}}}],["5.6.10",{"_index":1191,"t":{"900":{"position":[[773,9]]}}}],["53",{"_index":443,"t":{"662":{"position":[[1177,3],[1731,4]]}}}],["6",{"_index":883,"t":{"701":{"position":[[84,3]]}}}],["6.9.0",{"_index":1118,"t":{"764":{"position":[[2207,8]]}}}],["60000",{"_index":494,"t":{"664":{"position":[[810,6],[890,7],[1333,6],[1413,7]]}}}],["8",{"_index":1194,"t":{"900":{"position":[[853,2]]},"902":{"position":[[366,2]]}}}],["8bb6118f8fd6935ad0876a3be34a717d32708ffd",{"_index":1025,"t":{"749":{"position":[[163,43]]},"774":{"position":[[193,43]]},"863":{"position":[[216,43]]}}}],["_err",{"_index":950,"t":{"722":{"position":[[54,6],[148,6]]},"725":{"position":[[240,6],[377,6],[718,6],[853,6]]},"727":{"position":[[314,6]]},"729":{"position":[[493,6]]},"731":{"position":[[384,6]]},"733":{"position":[[706,6]]}}}],["a,b,c,d",{"_index":728,"t":{"677":{"position":[[31,7]]}}}],["a.j",{"_index":1055,"t":{"757":{"position":[[32,4]]},"782":{"position":[[44,4]]},"871":{"position":[[40,4]]}}}],["aberta",{"_index":464,"t":{"664":{"position":[[142,7]]}}}],["abov",{"_index":858,"t":{"694":{"position":[[708,5]]}}}],["accept",{"_index":782,"t":{"681":{"position":[[976,6]]}}}],["access",{"_index":739,"t":{"679":{"position":[[357,6]]},"718":{"position":[[57,7]]},"720":{"position":[[51,7]]},"739":{"position":[[78,6]]},"904":{"position":[[655,7]]},"906":{"position":[[331,7]]},"908":{"position":[[331,7]]},"910":{"position":[[349,7]]},"912":{"position":[[349,7]]},"914":{"position":[[146,6]]},"928":{"position":[[221,7]]},"930":{"position":[[637,7]]}}}],["accord",{"_index":679,"t":{"670":{"position":[[2435,9]]}}}],["accordingli",{"_index":633,"t":{"670":{"position":[[760,12]]}}}],["acima",{"_index":511,"t":{"664":{"position":[[1777,5],[2009,5],[2347,5],[2577,5]]}}}],["ack",{"_index":911,"t":{"703":{"position":[[641,3]]}}}],["acompanhamento",{"_index":56,"t":{"622":{"position":[[524,14]]}}}],["action",{"_index":254,"t":{"644":{"position":[[101,7],[238,7],[335,7],[530,7]]}}}],["activ",{"_index":1349,"t":{"918":{"position":[[1289,6]]}}}],["ad",{"_index":1368,"t":{"922":{"position":[[122,6]]}}}],["add(group",{"_index":1146,"t":{"859":{"position":[[0,10]]},"861":{"position":[[0,10]]},"863":{"position":[[0,10]]},"865":{"position":[[0,10]]},"867":{"position":[[0,10]]},"871":{"position":[[0,10]]}}}],["addit",{"_index":281,"t":{"646":{"position":[[228,10]]},"670":{"position":[[599,10]]},"672":{"position":[[245,10],[296,10]]},"679":{"position":[[3,8]]},"681":{"position":[[905,8]]},"690":{"position":[[251,8]]},"692":{"position":[[3,8]]}}}],["address",{"_index":1358,"t":{"918":{"position":[[1520,10]]}}}],["adicionai",{"_index":389,"t":{"660":{"position":[[626,10],[1390,10]]},"662":{"position":[[1311,10],[1897,10]]},"916":{"position":[[496,11]]}}}],["adicionalment",{"_index":532,"t":{"664":{"position":[[2766,15]]}}}],["adquirir",{"_index":520,"t":{"664":{"position":[[2221,8]]}}}],["advanc",{"_index":989,"t":{"737":{"position":[[80,8]]}}}],["affect",{"_index":1273,"t":{"904":{"position":[[2352,8]]},"930":{"position":[[2317,8]]}}}],["affectedrow",{"_index":805,"t":{"688":{"position":[[222,13]]},"729":{"position":[[242,12],[582,13]]},"731":{"position":[[478,13],[605,13]]},"733":{"position":[[795,13]]},"904":{"position":[[503,15]]},"930":{"position":[[485,15]]}}}],["ag",{"_index":379,"t":{"660":{"position":[[484,5],[853,5],[1216,5],[1556,5]]},"662":{"position":[[1150,5],[1704,5]]},"666":{"position":[[412,5],[1030,5]]},"788":{"position":[[106,6],[360,6]]},"790":{"position":[[101,6],[381,6]]},"792":{"position":[[116,6],[398,6]]},"800":{"position":[[121,5],[356,5]]},"802":{"position":[[116,5],[377,5]]},"804":{"position":[[131,5],[394,5]]},"810":{"position":[[97,5],[337,5]]},"812":{"position":[[92,5],[358,5]]},"814":{"position":[[107,5],[375,5]]},"848":{"position":[[89,6],[305,6]]},"850":{"position":[[99,6],[341,6]]},"878":{"position":[[109,5],[311,5]]},"880":{"position":[[119,5],[347,5]]},"882":{"position":[[119,5],[366,5]]},"891":{"position":[[80,5],[287,5]]},"893":{"position":[[90,5],[323,5]]}}}],["again",{"_index":699,"t":{"672":{"position":[[396,6]]},"766":{"position":[[246,6]]}}}],["aim",{"_index":270,"t":{"646":{"position":[[7,4]]}}}],["ajuda",{"_index":457,"t":{"664":{"position":[[31,5]]},"668":{"position":[[1298,5],[1315,6]]}}}],["algo",{"_index":91,"t":{"626":{"position":[[14,4]]},"664":{"position":[[2403,4],[2634,4]]}}}],["algorithm",{"_index":684,"t":{"670":{"position":[[2592,9]]}}}],["algoritm",{"_index":700,"t":{"672":{"position":[[502,9]]}}}],["allow",{"_index":184,"t":{"634":{"position":[[181,6]]}}}],["alongsid",{"_index":201,"t":{"636":{"position":[[90,9]]}}}],["alterada",{"_index":1290,"t":{"916":{"position":[[140,8]]}}}],["alternativament",{"_index":517,"t":{"664":{"position":[[2170,17]]}}}],["alway",{"_index":300,"t":{"650":{"position":[[192,6]]},"670":{"position":[[1488,6],[2239,6]]},"904":{"position":[[1830,6]]},"930":{"position":[[1793,6]]}}}],["além",{"_index":429,"t":{"662":{"position":[[472,4]]}}}],["amazon",{"_index":1036,"t":{"753":{"position":[[44,6],[101,6],[376,7],[801,7]]},"755":{"position":[[36,6],[138,6]]},"778":{"position":[[56,6],[113,6],[406,7],[762,7]]},"780":{"position":[[36,6],[138,6]]},"867":{"position":[[52,6],[109,6],[429,7],[962,7]]},"869":{"position":[[36,6],[138,6]]}}}],["analisador",{"_index":1285,"t":{"916":{"position":[[64,10]]}}}],["anoth",{"_index":618,"t":{"670":{"position":[[372,7]]}}}],["answer",{"_index":1280,"t":{"914":{"position":[[22,7]]},"922":{"position":[[84,7]]},"924":{"position":[[84,7]]}}}],["anterior",{"_index":462,"t":{"664":{"position":[[119,8]]}}}],["ao",{"_index":465,"t":{"664":{"position":[[150,2]]},"668":{"position":[[890,2],[1198,2]]},"916":{"position":[[167,2]]}}}],["apena",{"_index":587,"t":{"668":{"position":[[370,6]]}}}],["api",{"_index":6,"t":{"622":{"position":[[45,3]]},"624":{"position":[[247,3]]},"646":{"position":[[76,3]]},"666":{"position":[[32,4]]},"670":{"position":[[1303,3]]},"692":{"position":[[79,3]]},"916":{"position":[[132,3],[390,3]]}}}],["aplica",{"_index":585,"t":{"668":{"position":[[297,7],[359,7]]}}}],["aplicada",{"_index":33,"t":{"622":{"position":[[267,9]]}}}],["approach",{"_index":1332,"t":{"918":{"position":[[817,11]]}}}],["aqui",{"_index":353,"t":{"658":{"position":[[270,5]]}}}],["arg",{"_index":1228,"t":{"902":{"position":[[772,5]]}}}],["argument",{"_index":791,"t":{"684":{"position":[[89,9]]}}}],["argumento",{"_index":34,"t":{"622":{"position":[[279,10]]}}}],["arguments[1",{"_index":1230,"t":{"902":{"position":[[941,13],[1149,13]]}}}],["arguments[2",{"_index":1231,"t":{"902":{"position":[[965,13]]}}}],["arquivo",{"_index":93,"t":{"626":{"position":[[41,7]]}}}],["array",{"_index":575,"t":{"668":{"position":[[89,6],[874,5],[883,6],[905,5],[1182,5],[1191,6],[1213,5]]},"675":{"position":[[398,5],[942,5]]},"677":{"position":[[139,5],[148,6]]},"688":{"position":[[536,5]]},"703":{"position":[[230,5],[318,5]]},"725":{"position":[[11,5]]},"882":{"position":[[614,5]]},"902":{"position":[[824,7],[840,7]]}}}],["array.isarray(arguments[1",{"_index":1229,"t":{"902":{"position":[[851,29]]}}}],["asc",{"_index":1259,"t":{"904":{"position":[[1595,4]]},"906":{"position":[[1078,5]]},"908":{"position":[[1107,3],[1161,3]]},"910":{"position":[[1115,5]]},"912":{"position":[[1144,3],[1198,3]]},"928":{"position":[[926,5]]},"930":{"position":[[1558,4]]}}}],["ascertain",{"_index":1340,"t":{"918":{"position":[[1045,9]]}}}],["ask",{"_index":604,"t":{"670":{"position":[[43,3]]},"914":{"position":[[42,5]]}}}],["associada",{"_index":476,"t":{"664":{"position":[[282,9]]}}}],["assur",{"_index":1312,"t":{"918":{"position":[[162,6]]}}}],["async",{"_index":538,"t":{"666":{"position":[[72,5],[121,5],[1211,5]]},"696":{"position":[[0,5],[224,5]]},"764":{"position":[[92,5],[1962,5]]},"904":{"position":[[634,6]]},"906":{"position":[[310,6]]},"908":{"position":[[310,6]]},"910":{"position":[[328,6]]},"912":{"position":[[328,6]]},"928":{"position":[[296,6]]},"930":{"position":[[616,6]]}}}],["asynchron",{"_index":631,"t":{"670":{"position":[[703,14]]}}}],["ataqu",{"_index":421,"t":{"662":{"position":[[344,7]]}}}],["atenção",{"_index":1019,"t":{"745":{"position":[[555,7]]},"747":{"position":[[639,7]]},"749":{"position":[[645,7]]},"751":{"position":[[834,7]]},"753":{"position":[[1138,7]]},"859":{"position":[[767,7]]},"861":{"position":[[851,7]]},"863":{"position":[[857,7]]},"865":{"position":[[1046,7]]},"867":{"position":[[1364,7]]}}}],["atingido",{"_index":506,"t":{"664":{"position":[[1605,9]]}}}],["atravé",{"_index":55,"t":{"622":{"position":[[513,7]]}}}],["attach",{"_index":835,"t":{"690":{"position":[[499,6]]}}}],["atualização",{"_index":77,"t":{"624":{"position":[[179,11]]}}}],["auth",{"_index":606,"t":{"670":{"position":[[83,4],[801,4],[952,6],[1869,6]]},"672":{"position":[[702,5],[842,5],[982,5]]},"900":{"position":[[119,4]]}}}],["auth.doublesha1('pass123",{"_index":1173,"t":{"900":{"position":[[235,27]]}}}],["auth.verifytoken",{"_index":1175,"t":{"900":{"position":[[279,17]]}}}],["authcallback",{"_index":1198,"t":{"900":{"position":[[948,13]]}}}],["authent",{"_index":286,"t":{"646":{"position":[[285,14]]},"670":{"position":[[211,14],[610,14]]},"672":{"position":[[34,14],[159,14],[256,14],[412,14]]},"900":{"position":[[962,13]]},"916":{"position":[[737,14]]}}}],["authenticate(param",{"_index":1170,"t":{"900":{"position":[[169,20]]}}}],["authentication::native41",{"_index":680,"t":{"670":{"position":[[2448,24]]}}}],["authnextfactor",{"_index":691,"t":{"672":{"position":[[90,14]]}}}],["author",{"_index":1114,"t":{"764":{"position":[[2144,9]]}}}],["authplugin",{"_index":608,"t":{"670":{"position":[[103,11],[928,12],[2480,11]]},"672":{"position":[[661,12]]}}}],["authswitchhandl",{"_index":653,"t":{"670":{"position":[[1318,17],[1778,18],[2508,17]]}}}],["authswitchrequest",{"_index":669,"t":{"670":{"position":[[2130,17]]}}}],["auto",{"_index":163,"t":{"632":{"position":[[709,4]]}}}],["auto_incr",{"_index":1249,"t":{"904":{"position":[[1030,15]]},"906":{"position":[[687,15]]},"908":{"position":[[713,15]]},"910":{"position":[[724,15]]},"912":{"position":[[750,15]]},"928":{"position":[[548,15]]},"930":{"position":[[993,15]]}}}],["automat",{"_index":1160,"t":{"887":{"position":[[270,13]]}}}],["automaticament",{"_index":514,"t":{"664":{"position":[[1870,15],[2103,15]]}}}],["auxiliar",{"_index":425,"t":{"662":{"position":[[393,8]]}}}],["avail",{"_index":217,"t":{"638":{"position":[[239,9]]},"681":{"position":[[1080,10]]},"788":{"position":[[758,9]]},"790":{"position":[[807,9]]},"792":{"position":[[824,9]]},"800":{"position":[[639,9]]},"802":{"position":[[688,9]]},"804":{"position":[[705,9]]},"810":{"position":[[730,9]]},"812":{"position":[[779,9]]},"814":{"position":[[796,9]]},"825":{"position":[[627,9]]},"827":{"position":[[691,9]]},"835":{"position":[[704,9]]},"837":{"position":[[753,9]]},"839":{"position":[[770,9]]},"848":{"position":[[665,9]]},"850":{"position":[[729,9]]},"878":{"position":[[556,9]]},"880":{"position":[[620,9]]},"882":{"position":[[667,9]]},"891":{"position":[[647,9]]},"893":{"position":[[711,9]]},"918":{"position":[[1330,10]]}}}],["avg",{"_index":31,"t":{"622":{"position":[[254,5]]}}}],["await",{"_index":368,"t":{"660":{"position":[[273,5],[411,5],[785,5]]},"662":{"position":[[897,5],[1080,5]]},"664":{"position":[[1806,5],[2366,5],[2422,5]]},"666":{"position":[[78,6],[203,5],[342,5],[802,5],[960,5],[1484,5]]},"668":{"position":[[454,5],[733,5]]},"696":{"position":[[82,5],[155,5],[204,5],[398,5],[516,5]]},"698":{"position":[[356,5]]},"745":{"position":[[194,5]]},"747":{"position":[[235,5]]},"749":{"position":[[239,5]]},"751":{"position":[[334,5]]},"753":{"position":[[413,5],[545,5],[604,5]]},"764":{"position":[[126,5],[292,5],[373,5],[675,5],[930,5],[1183,5],[1364,5],[2007,7]]},"770":{"position":[[124,5]]},"772":{"position":[[128,5]]},"774":{"position":[[128,5]]},"776":{"position":[[146,5]]},"778":{"position":[[315,5],[488,5],[547,5]]},"788":{"position":[[202,5]]},"790":{"position":[[197,5]]},"792":{"position":[[212,5]]},"800":{"position":[[185,5]]},"802":{"position":[[180,5]]},"804":{"position":[[195,5]]},"810":{"position":[[188,5]]},"812":{"position":[[183,5]]},"814":{"position":[[198,5]]},"825":{"position":[[138,5]]},"827":{"position":[[148,5]]},"835":{"position":[[175,5]]},"837":{"position":[[170,5]]},"839":{"position":[[185,5]]},"848":{"position":[[157,5]]},"850":{"position":[[167,5]]},"859":{"position":[[286,5]]},"861":{"position":[[327,5]]},"863":{"position":[[331,5]]},"865":{"position":[[426,5]]},"867":{"position":[[505,5],[654,5],[713,5]]},"878":{"position":[[145,5]]},"880":{"position":[[155,5]]},"882":{"position":[[155,5]]},"891":{"position":[[148,5]]},"893":{"position":[[158,5]]},"904":{"position":[[768,5],[854,5],[959,5],[1138,5],[1374,5],[1491,5],[1655,5],[2118,5]]},"906":{"position":[[425,5],[511,5],[616,5],[795,5],[1013,5],[1208,5]]},"908":{"position":[[451,5],[537,5],[642,5],[821,5],[1038,5],[1351,5]]},"910":{"position":[[462,5],[548,5],[653,5],[832,5],[1050,5],[1243,5]]},"912":{"position":[[488,5],[574,5],[679,5],[858,5],[1075,5],[1386,5]]},"924":{"position":[[205,5],[573,5],[930,5],[1182,5],[1525,5]]},"928":{"position":[[392,5],[487,5],[656,5],[864,5],[1062,5]]},"930":{"position":[[731,5],[817,5],[922,5],[1101,5],[1337,5],[1454,5],[1618,5],[2083,5]]}}}],["await.j",{"_index":1085,"t":{"764":{"position":[[0,8],[2062,11]]}}}],["b",{"_index":159,"t":{"632":{"position":[[622,1]]},"677":{"position":[[197,1]]}}}],["b.j",{"_index":1056,"t":{"757":{"position":[[37,4]]},"782":{"position":[[49,4]]},"871":{"position":[[45,4]]}}}],["babel",{"_index":1117,"t":{"764":{"position":[[2194,6]]}}}],["babelrc",{"_index":1087,"t":{"764":{"position":[[15,8]]}}}],["back",{"_index":629,"t":{"670":{"position":[[659,4]]}}}],["backend",{"_index":1006,"t":{"741":{"position":[[118,8],[166,8]]}}}],["backward",{"_index":1313,"t":{"918":{"position":[[169,8],[281,8]]}}}],["badg",{"_index":211,"t":{"638":{"position":[[18,6]]},"918":{"position":[[14,6]]}}}],["banco",{"_index":364,"t":{"660":{"position":[[239,5],[1015,5]]},"662":{"position":[[863,5],[1455,5]]},"666":{"position":[[169,5],[304,5],[922,5]]}}}],["bar",{"_index":774,"t":{"681":{"position":[[730,6]]},"694":{"position":[[241,6],[528,6]]}}}],["base",{"_index":843,"t":{"692":{"position":[[73,5]]},"918":{"position":[[983,5]]}}}],["baseado",{"_index":79,"t":{"624":{"position":[[197,7]]}}}],["basic",{"_index":993,"t":{"737":{"position":[[608,5]]}}}],["befor",{"_index":268,"t":{"644":{"position":[[474,6]]},"928":{"position":[[1651,6]]}}}],["begin",{"_index":983,"t":{"733":{"position":[[553,5]]},"904":{"position":[[1555,5]]},"930":{"position":[[1518,5]]}}}],["behavior",{"_index":829,"t":{"690":{"position":[[363,8]]}}}],["below",{"_index":1143,"t":{"823":{"position":[[13,5]]},"846":{"position":[[13,5]]},"876":{"position":[[13,5]]},"889":{"position":[[13,5]]}}}],["bem",{"_index":536,"t":{"666":{"position":[[58,3]]}}}],["benchmark",{"_index":322,"t":{"654":{"position":[[63,10],[85,10],[115,10]]}}}],["beta",{"_index":1208,"t":{"900":{"position":[[1222,7],[1239,7]]}}}],["better",{"_index":277,"t":{"646":{"position":[[170,6]]},"701":{"position":[[449,6]]},"766":{"position":[[336,6]]}}}],["between",{"_index":688,"t":{"670":{"position":[[2648,7]]},"714":{"position":[[107,7]]}}}],["biblioteca",{"_index":579,"t":{"668":{"position":[[166,10]]}}}],["bin.000007",{"_index":1077,"t":{"762":{"position":[[311,12]]}}}],["binari",{"_index":289,"t":{"646":{"position":[[364,6]]},"656":{"position":[[153,7]]},"688":{"position":[[584,6]]},"916":{"position":[[622,6]]}}}],["bind",{"_index":314,"t":{"652":{"position":[[99,8],[173,8]]},"707":{"position":[[4,4]]}}}],["binlog",{"_index":320,"t":{"652":{"position":[[249,6]]}}}],["binlogpo",{"_index":1078,"t":{"762":{"position":[[324,10]]}}}],["binlogstream",{"_index":1068,"t":{"762":{"position":[[100,12]]}}}],["binlogstream.pip",{"_index":1081,"t":{"762":{"position":[[381,18]]}}}],["binário",{"_index":330,"t":{"656":{"position":[[145,7]]},"916":{"position":[[601,7]]}}}],["blob",{"_index":662,"t":{"670":{"position":[[1607,4]]}}}],["block",{"_index":231,"t":{"640":{"position":[[178,6]]},"762":{"position":[[362,8]]},"924":{"position":[[137,6],[435,6],[769,6],[1154,6],[1497,6]]}}}],["bluebird",{"_index":550,"t":{"666":{"position":[[677,11],[696,8],[710,11],[757,10],[893,9]]}}}],["boolean",{"_index":821,"t":{"690":{"position":[[146,7]]},"707":{"position":[[105,7]]}}}],["both",{"_index":1377,"t":{"922":{"position":[[1417,4],[1748,4]]},"924":{"position":[[1343,4],[1682,4]]}}}],["bound",{"_index":1315,"t":{"918":{"position":[[230,5]]}}}],["branch",{"_index":124,"t":{"632":{"position":[[154,6]]}}}],["browser",{"_index":140,"t":{"632":{"position":[[399,7]]}}}],["buffer",{"_index":627,"t":{"670":{"position":[[630,8],[1667,8]]},"707":{"position":[[222,6]]}}}],["buffer.from",{"_index":1024,"t":{"749":{"position":[[150,12]]},"774":{"position":[[180,12]]},"863":{"position":[[203,12]]}}}],["buffer.from('8bb6118f8fd6935ad0876a3be34a717d32708ffd",{"_index":1027,"t":{"749":{"position":[[429,55]]},"774":{"position":[[384,55]]},"863":{"position":[[583,55]]}}}],["bug",{"_index":1357,"t":{"918":{"position":[[1488,4]]}}}],["build",{"_index":261,"t":{"644":{"position":[[266,5],[306,5]]}}}],["built",{"_index":100,"t":{"628":{"position":[[16,5]]}}}],["bun",{"_index":1053,"t":{"755":{"position":[[119,3]]},"780":{"position":[[119,3]]},"869":{"position":[[119,3]]}}}],["byte",{"_index":825,"t":{"690":{"position":[[242,5]]}}}],["bytes/sec",{"_index":762,"t":{"681":{"position":[[240,9]]}}}],["c",{"_index":441,"t":{"662":{"position":[[1169,1],[1723,1]]},"677":{"position":[[214,1]]},"698":{"position":[[83,1]]},"764":{"position":[[122,1],[1592,1]]}}}],["c.end",{"_index":880,"t":{"698":{"position":[[310,8]]},"764":{"position":[[936,8],[1824,8]]}}}],["c.execute('select",{"_index":876,"t":{"698":{"position":[[251,17]]},"764":{"position":[[484,17],[569,17],[695,17],[727,17],[1765,17]]}}}],["c.query('show",{"_index":874,"t":{"698":{"position":[[187,13]]},"764":{"position":[[298,13],[1701,13]]}}}],["c.query('som",{"_index":1091,"t":{"764":{"position":[[379,13]]}}}],["ca",{"_index":1033,"t":{"751":{"position":[[264,3],[620,3]]},"753":{"position":[[190,2],[202,2]]},"755":{"position":[[153,2]]},"776":{"position":[[294,3],[575,3]]},"778":{"position":[[202,2],[214,2]]},"780":{"position":[[153,2]]},"865":{"position":[[317,3],[774,3]]},"867":{"position":[[198,2],[210,2]]},"869":{"position":[[153,2]]}}}],["cach",{"_index":451,"t":{"662":{"position":[[2042,6]]},"701":{"position":[[215,6],[256,6],[322,5],[416,5],[480,5]]},"703":{"position":[[52,5]]},"705":{"position":[[36,6],[63,6],[173,5]]},"766":{"position":[[282,5]]}}}],["call",{"_index":624,"t":{"670":{"position":[[520,4],[560,4],[1549,5],[2556,6]]},"701":{"position":[[209,5]]},"733":{"position":[[90,4],[630,5],[1034,5]]}}}],["callback",{"_index":360,"t":{"660":{"position":[[151,8]]},"662":{"position":[[788,8]]},"664":{"position":[[431,8],[1722,8],[2298,8]]},"668":{"position":[[432,8],[692,8]]},"670":{"position":[[1443,9]]},"688":{"position":[[453,9]]},"703":{"position":[[598,8]]}}}],["callback'",{"_index":1370,"t":{"922":{"position":[[470,10],[822,10],[1226,10],[1561,10]]}}}],["callback(nul",{"_index":664,"t":{"670":{"position":[[1646,14]]}}}],["callback.j",{"_index":1015,"t":{"745":{"position":[[45,11]]},"747":{"position":[[43,11]]},"749":{"position":[[43,11]]},"751":{"position":[[43,11]]},"753":{"position":[[230,11]]},"770":{"position":[[51,11]]},"772":{"position":[[55,11]]},"774":{"position":[[55,11]]},"776":{"position":[[55,11]]},"778":{"position":[[242,11]]},"788":{"position":[[47,11]]},"790":{"position":[[42,11]]},"792":{"position":[[57,11]]},"800":{"position":[[47,11]]},"802":{"position":[[42,11]]},"804":{"position":[[57,11]]},"810":{"position":[[47,11]]},"812":{"position":[[42,11]]},"814":{"position":[[57,11]]},"825":{"position":[[30,11]]},"827":{"position":[[40,11]]},"835":{"position":[[47,11]]},"837":{"position":[[42,11]]},"839":{"position":[[57,11]]},"848":{"position":[[30,11]]},"850":{"position":[[40,11]]},"859":{"position":[[53,11]]},"861":{"position":[[51,11]]},"863":{"position":[[51,11]]},"865":{"position":[[51,11]]},"867":{"position":[[238,11]]},"878":{"position":[[30,11]]},"880":{"position":[[40,11]]},"882":{"position":[[40,11]]},"891":{"position":[[30,11]]},"893":{"position":[[40,11]]}}}],["candid",{"_index":1336,"t":{"918":{"position":[[859,9]]}}}],["capabilityflag",{"_index":800,"t":{"688":{"position":[[91,15]]},"900":{"position":[[859,16],[889,16],[919,16]]},"902":{"position":[[369,16]]}}}],["case",{"_index":655,"t":{"670":{"position":[[1461,5]]},"681":{"position":[[352,4]]},"753":{"position":[[136,4]]},"778":{"position":[[148,4]]},"867":{"position":[[144,4]]}}}],["catalog",{"_index":1204,"t":{"900":{"position":[[1139,8]]}}}],["catch",{"_index":391,"t":{"660":{"position":[[679,5],[905,5]]},"662":{"position":[[1364,5]]},"664":{"position":[[1935,5]]},"668":{"position":[[979,5]]},"745":{"position":[[264,5]]},"747":{"position":[[305,5]]},"749":{"position":[[309,5]]},"751":{"position":[[404,5]]},"753":{"position":[[483,5],[642,5]]},"764":{"position":[[415,5]]},"770":{"position":[[203,5]]},"772":{"position":[[248,5]]},"774":{"position":[[252,5]]},"776":{"position":[[347,5]]},"778":{"position":[[426,5],[591,5]]},"788":{"position":[[285,5]]},"790":{"position":[[306,5]]},"792":{"position":[[323,5]]},"800":{"position":[[266,5]]},"802":{"position":[[287,5]]},"804":{"position":[[304,5]]},"810":{"position":[[271,5]]},"812":{"position":[[292,5]]},"814":{"position":[[309,5]]},"825":{"position":[[211,5]]},"827":{"position":[[247,5]]},"835":{"position":[[258,5]]},"837":{"position":[[279,5]]},"839":{"position":[[296,5]]},"848":{"position":[[230,5]]},"850":{"position":[[266,5]]},"859":{"position":[[373,5]]},"861":{"position":[[414,5]]},"863":{"position":[[418,5]]},"865":{"position":[[513,5]]},"867":{"position":[[592,5],[758,5]]},"878":{"position":[[216,5]]},"880":{"position":[[252,5]]},"882":{"position":[[271,5]]},"891":{"position":[[221,5]]},"893":{"position":[[257,5]]},"924":{"position":[[131,5],[276,5],[429,5],[603,5],[763,5],[974,5],[1148,5],[1244,5],[1491,5],[1585,5]]}}}],["catch((err",{"_index":647,"t":{"670":{"position":[[1176,12]]},"694":{"position":[[620,12]]},"764":{"position":[[1426,12]]}}}],["catch(console.log",{"_index":567,"t":{"666":{"position":[[1876,19]]}}}],["catch(funct",{"_index":1110,"t":{"764":{"position":[[1880,15]]}}}],["caus",{"_index":1352,"t":{"918":{"position":[[1407,5]]}}}],["caution",{"_index":170,"t":{"632":{"position":[[816,7]]},"918":{"position":[[387,7]]}}}],["cb",{"_index":665,"t":{"670":{"position":[[1835,3]]},"681":{"position":[[754,4]]},"900":{"position":[[190,3]]}}}],["cb(err",{"_index":671,"t":{"670":{"position":[[2196,8]]}}}],["cb(null",{"_index":667,"t":{"670":{"position":[[2065,8]]},"681":{"position":[[874,8]]},"900":{"position":[[391,9],[455,8]]}}}],["cd",{"_index":128,"t":{"632":{"position":[[189,2],[643,2]]}}}],["cert",{"_index":1032,"t":{"751":{"position":[[215,5],[571,5]]},"753":{"position":[[205,4]]},"755":{"position":[[26,5],[156,4]]},"776":{"position":[[245,5],[526,5]]},"778":{"position":[[217,4]]},"780":{"position":[[26,5],[156,4]]},"865":{"position":[[268,5],[725,5]]},"867":{"position":[[213,4]]},"869":{"position":[[26,5],[156,4]]}}}],["cert.pem",{"_index":1029,"t":{"751":{"position":[[64,8],[253,10],[296,11],[609,10],[652,11]]},"753":{"position":[[193,8]]},"776":{"position":[[76,8],[283,10],[326,11],[564,10],[607,11]]},"778":{"position":[[205,8]]},"865":{"position":[[72,8],[306,10],[349,11],[763,10],[806,11]]},"867":{"position":[[201,8]]}}}],["certs/ca",{"_index":1028,"t":{"751":{"position":[[55,8]]},"776":{"position":[[67,8]]},"865":{"position":[[63,8]]}}}],["chamar",{"_index":437,"t":{"662":{"position":[[1000,6],[1586,6]]}}}],["chang",{"_index":142,"t":{"632":{"position":[[420,7]]},"636":{"position":[[39,7],[106,8],[211,8],[227,6],[305,7],[345,7],[365,6]]},"729":{"position":[[24,7]]},"731":{"position":[[24,7]]},"733":{"position":[[24,7]]},"918":{"position":[[301,7],[471,7],[747,8],[930,7]]}}}],["changedrow",{"_index":967,"t":{"729":{"position":[[148,11],[657,12]]},"731":{"position":[[554,12],[680,12]]},"733":{"position":[[870,12]]},"904":{"position":[[572,14]]},"930":{"position":[[554,14]]}}}],["changeus",{"_index":781,"t":{"681":{"position":[[963,12]]},"703":{"position":[[749,13]]}}}],["characterset",{"_index":799,"t":{"688":{"position":[[77,13]]},"900":{"position":[[839,13],[1247,13]]},"902":{"position":[[352,13]]}}}],["check",{"_index":246,"t":{"644":{"position":[[13,5],[119,5],[158,6]]},"648":{"position":[[7,5]]},"650":{"position":[[57,5]]},"722":{"position":[[374,5]]},"737":{"position":[[13,5],[372,8],[477,8]]}}}],["checkout",{"_index":158,"t":{"632":{"position":[[612,8]]}}}],["ci",{"_index":131,"t":{"632":{"position":[[240,2],[679,2]]}}}],["class",{"_index":72,"t":{"624":{"position":[[113,6]]},"737":{"position":[[628,5]]},"928":{"position":[[1428,5],[1669,5]]}}}],["classif",{"_index":1343,"t":{"918":{"position":[[1098,15]]}}}],["classifi",{"_index":1326,"t":{"918":{"position":[[618,10],[1354,10]]}}}],["clear",{"_index":260,"t":{"644":{"position":[[256,5],[292,5]]}}}],["cli",{"_index":153,"t":{"632":{"position":[[541,3]]},"764":{"position":[[2201,5]]}}}],["client",{"_index":86,"t":{"624":{"position":[[300,7]]},"646":{"position":[[384,6]]},"652":{"position":[[68,6],[143,7],[220,6]]},"656":{"position":[[0,7]]},"660":{"position":[[171,7],[950,7]]},"666":{"position":[[579,7]]},"670":{"position":[[51,6],[1577,6],[2656,6]]},"672":{"position":[[68,6]]},"675":{"position":[[171,6]]},"688":{"position":[[276,6],[383,7]]},"690":{"position":[[318,7]]},"741":{"position":[[237,6],[281,6]]}}}],["clientflag",{"_index":1219,"t":{"902":{"position":[[62,11]]}}}],["clientflags.compress",{"_index":1221,"t":{"902":{"position":[[397,21]]}}}],["clientplugindata(password1",{"_index":707,"t":{"672":{"position":[[789,27]]}}}],["clientplugindata(password2",{"_index":709,"t":{"672":{"position":[[929,27]]}}}],["clientplugindata(password3",{"_index":711,"t":{"672":{"position":[[1069,27]]}}}],["clone",{"_index":156,"t":{"632":{"position":[[557,5]]}}}],["close",{"_index":832,"t":{"690":{"position":[[405,5]]},"701":{"position":[[250,5]]},"703":{"position":[[72,6],[635,5]]},"705":{"position":[[187,7]]},"918":{"position":[[895,5]]}}}],["co",{"_index":870,"t":{"698":{"position":[[39,2],[353,2]]},"764":{"position":[[1548,2],[2004,2]]}}}],["co(funct",{"_index":872,"t":{"698":{"position":[[59,12]]},"764":{"position":[[1568,12]]}}}],["co.j",{"_index":1086,"t":{"764":{"position":[[9,5]]}}}],["code",{"_index":230,"t":{"640":{"position":[[173,4]]},"670":{"position":[[821,4]]},"690":{"position":[[230,4]]},"737":{"position":[[24,4]]},"755":{"position":[[98,4]]},"780":{"position":[[98,4]]},"869":{"position":[[98,4]]},"900":{"position":[[425,5],[498,5],[683,5]]}}}],["codificaçõ",{"_index":327,"t":{"656":{"position":[[105,12]]}}}],["collat",{"_index":1308,"t":{"916":{"position":[[694,9]]}}}],["column",{"_index":897,"t":{"703":{"position":[[239,6],[334,6],[480,8]]},"902":{"position":[[832,7],[955,7],[1029,9],[1066,9]]}}}],["columnlength",{"_index":1211,"t":{"900":{"position":[[1265,13]]}}}],["columntyp",{"_index":1213,"t":{"900":{"position":[[1284,11]]}}}],["coluna",{"_index":571,"t":{"668":{"position":[[19,7]]}}}],["com",{"_index":5,"t":{"622":{"position":[[39,3],[476,3]]},"624":{"position":[[294,3]]},"656":{"position":[[27,3]]},"660":{"position":[[233,3],[1009,3]]},"662":{"position":[[0,3],[857,3],[1449,3]]},"664":{"position":[[72,3],[2408,3],[2639,3]]},"666":{"position":[[62,3],[163,3]]},"668":{"position":[[27,3]]},"916":{"position":[[241,3],[384,3]]}}}],["come",{"_index":893,"t":{"703":{"position":[[37,5]]}}}],["começar",{"_index":98,"t":{"626":{"position":[[103,8]]}}}],["command",{"_index":267,"t":{"644":{"position":[[466,7]]},"688":{"position":[[203,8]]},"690":{"position":[[6,7],[162,7],[222,7],[291,8]]},"764":{"position":[[842,8]]},"918":{"position":[[547,7]]}}}],["commandcod",{"_index":823,"t":{"690":{"position":[[190,13]]}}}],["commit",{"_index":269,"t":{"644":{"position":[[495,7]]}}}],["commonli",{"_index":1281,"t":{"914":{"position":[[33,8]]}}}],["como",{"_index":19,"t":{"622":{"position":[[139,4],[196,4],[596,4]]},"626":{"position":[[98,4]]},"662":{"position":[[270,4]]},"664":{"position":[[1654,4]]},"666":{"position":[[768,4]]},"668":{"position":[[81,4]]}}}],["compartilhado",{"_index":1296,"t":{"916":{"position":[[293,13]]}}}],["compat",{"_index":232,"t":{"640":{"position":[[189,10]]},"755":{"position":[[103,10]]},"780":{"position":[[103,10]]},"869":{"position":[[103,10]]},"918":{"position":[[178,14],[290,10],[1122,13]]}}}],["compatívei",{"_index":85,"t":{"624":{"position":[[282,11]]}}}],["compatível",{"_index":4,"t":{"622":{"position":[[28,10]]},"916":{"position":[[373,10]]}}}],["compil",{"_index":181,"t":{"634":{"position":[[121,8]]},"741":{"position":[[101,9]]}}}],["complet",{"_index":148,"t":{"632":{"position":[[500,8]]},"634":{"position":[[52,8]]}}}],["complianc",{"_index":250,"t":{"644":{"position":[[49,10]]}}}],["compon",{"_index":175,"t":{"634":{"position":[[12,9],[165,11],[273,10]]},"636":{"position":[[12,9],[287,10]]},"638":{"position":[[205,10]]},"640":{"position":[[123,9],[231,10]]},"644":{"position":[[173,10]]}}}],["compress",{"_index":288,"t":{"646":{"position":[[352,11]]}}}],["compressão",{"_index":331,"t":{"656":{"position":[[176,11]]},"916":{"position":[[720,10]]}}}],["comprimida",{"_index":84,"t":{"624":{"position":[[271,10]]}}}],["concept",{"_index":990,"t":{"737":{"position":[[89,9]]}}}],["conexão",{"_index":82,"t":{"624":{"position":[[254,7]]},"660":{"position":[[225,7],[1001,7]]},"662":{"position":[[849,7],[1441,7]]},"664":{"position":[[64,7],[111,7],[314,8],[486,7],[1009,7],[1666,7],[1860,7],[2093,7],[2246,7],[2414,7],[2482,7],[2645,7],[2707,7],[2802,7]]},"666":{"position":[[155,7],[732,8],[1690,7]]},"668":{"position":[[289,7]]}}}],["conexõ",{"_index":456,"t":{"664":{"position":[[14,8],[366,8],[731,8],[837,8],[1254,8],[1360,8],[1525,8],[1591,8]]},"666":{"position":[[1597,8]]},"916":{"position":[[794,8]]}}}],["config",{"_index":304,"t":{"650":{"position":[[239,6]]},"670":{"position":[[126,6],[345,6],[1347,6]]},"672":{"position":[[354,6]]},"675":{"position":[[75,6]]},"861":{"position":[[19,7]]},"863":{"position":[[19,7]]},"865":{"position":[[19,7]]},"867":{"position":[[19,7]]},"871":{"position":[[19,7]]}}}],["configuração",{"_index":582,"t":{"668":{"position":[[258,12]]}}}],["confirm",{"_index":1366,"t":{"922":{"position":[[59,9]]},"924":{"position":[[59,9]]}}}],["conflito",{"_index":577,"t":{"668":{"position":[[129,10]]}}}],["conhecida",{"_index":11,"t":{"622":{"position":[[86,9]]}}}],["conjunto",{"_index":455,"t":{"664":{"position":[[2,8],[354,8]]},"916":{"position":[[232,8],[782,8]]}}}],["conn",{"_index":523,"t":{"664":{"position":[[2359,4],[2617,5]]},"666":{"position":[[1704,4],[1791,4]]},"668":{"position":[[447,4],[565,4]]},"670":{"position":[[832,4],[1682,4]]},"672":{"position":[[518,4]]},"696":{"position":[[75,4]]},"718":{"position":[[128,4]]},"720":{"position":[[116,4]]},"725":{"position":[[107,4],[552,4]]},"727":{"position":[[124,4]]},"729":{"position":[[363,4]]},"731":{"position":[[214,4]]},"733":{"position":[[343,4]]},"900":{"position":[[599,6]]},"902":{"position":[[201,6]]},"904":{"position":[[761,4]]},"906":{"position":[[418,4]]},"908":{"position":[[444,4]]},"910":{"position":[[455,4]]},"912":{"position":[[481,4]]},"928":{"position":[[1450,5]]},"930":{"position":[[724,4]]}}}],["conn.clos",{"_index":1189,"t":{"900":{"position":[[700,13],[1482,13]]}}}],["conn.end",{"_index":568,"t":{"666":{"position":[[1908,12]]},"696":{"position":[[210,11]]},"904":{"position":[[2124,11]]},"906":{"position":[[1214,11]]},"908":{"position":[[1357,11]]},"910":{"position":[[1249,11]]},"912":{"position":[[1392,11]]},"930":{"position":[[2089,11]]}}}],["conn.execute('select",{"_index":860,"t":{"696":{"position":[[161,20]]},"722":{"position":[[108,20]]}}}],["conn.execute>(sql",{"_index":984,"t":{"733":{"position":[[652,53]]}}}],["conn.query>('cal",{"_index":1261,"t":{"904":{"position":[[1661,45]]},"930":{"position":[[1624,45]]}}}],["conn.query('drop",{"_index":1245,"t":{"904":{"position":[[860,33],[1380,33]]},"906":{"position":[[517,33]]},"908":{"position":[[543,33]]},"910":{"position":[[554,33]]},"912":{"position":[[580,33]]},"930":{"position":[[823,33],[1343,33]]}}}],["conn.query(sql",{"_index":972,"t":{"729":{"position":[[460,32]]}}}],["conn.query(sql",{"_index":977,"t":{"731":{"position":[[349,34]]}}}],["conn.query('select",{"_index":955,"t":{"725":{"position":[[185,35]]}}}],["conn.query('show",{"_index":957,"t":{"725":{"position":[[321,33],[797,33]]}}}],["conn.query(sql",{"_index":962,"t":{"727":{"position":[[279,34]]}}}],["conn.query 45' ); console.log(results); // \"results\" contêm as linhas retornadas pelo servidor console.log(fields); // \"fields\" contêm metadados adicionais sobre os resultados, quando disponíveis } catch (err) { console.log(err); } // Utilizando espaços reservados (placeholders) try { const [results] = await connection.query( 'SELECT * FROM `table` WHERE `name` = ? AND `age` > ?', ['Page', 45] ); console.log(results); } catch (err) { console.log(err); } // Obtém o cliente const mysql = require('mysql2'); // Cria a conexão com o Banco de Dados const connection = mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', }); // Consulta simples connection.query( 'SELECT * FROM `table` WHERE `name` = \"Page\" AND `age` > 45', function (err, results, fields) { console.log(results); // \"results\" contêm as linhas retornadas pelo servidor console.log(fields); // \"fields\" contêm metadados adicionais sobre os resultados, quando disponíveis } ); // Utilizando espaços reservados (placeholders) connection.query( 'SELECT * FROM `table` WHERE `name` = ? AND `age` > ?', ['Page', 45], function (err, results) { console.log(results); } );","s":"Primeira Consulta (Query)","u":"/node-mysql2/pt-BR/docs","h":"#primeira-consulta-query","p":621},{"i":628,"t":"Com o MySQL2 você também pode obter Instruções Preparadas (Prepared Statements). Dessa forma o MySQL não precisa preparar um plano para a mesma consulta todas as vezes, resultando em um melhor desempenho. Se você não sabe por que isso é importante, veja essa discussão: Como as instruções preparadas (prepared statements) podem proteger contra ataques de injeção SQL O MySQL2 fornece o método auxiliar execute que irá preparar e consultar as declarações (statements) SQL. Além disso, você também pode usar os métodos prepare e unprepare para preparar ou desfazer a preparação de declarações (statements) manualmente, se necessário. Para explorar mais exemplos de Instruções Preparadas (Prepared Statements), visite a seção de exemplos Instruções Preparadas (Prepared Statements). Promise Callback import mysql from 'mysql2/promise'; try { // Cria a conexão com o Banco de Dados const connection = await mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', }); // \"execute\" irá chamar internamente a preparação e a consulta (query) const [results, fields] = await connection.execute( 'SELECT * FROM `table` WHERE `name` = ? AND `age` > ?', ['Rick C-137', 53] ); console.log(results); // \"results\" contêm as linhas retornadas pelo servidor console.log(fields); // \"fields\" contêm metadados adicionais sobre os resultados, quando disponíveis } catch (err) { console.log(err); } const mysql = require('mysql2'); // Cria a conexão com o Banco de Dados const connection = mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', }); // \"execute\" irá chamar internamente a preparação e a consulta (query) connection.execute( 'SELECT * FROM `table` WHERE `name` = ? AND `age` > ?', ['Rick C-137', 53], function (err, results, fields) { console.log(results); // \"results\" contêm as linhas retornadas pelo servidor console.log(fields); // \"fields\" contêm metadados adicionais sobre os resultados, quando disponíveis } ); dica Se você executar a mesma declaração novamente, ela será selecionada a partir do LRU Cache, o que economizará tempo de preparação da consulta e proporcionará melhor desempenho.","s":"Usando Instruções Preparadas (Prepared Statements)","u":"/node-mysql2/pt-BR/docs","h":"#usando-instruções-preparadas-prepared-statements","p":621},{"i":630,"t":"O conjunto de conexões (pools) ajuda a reduzir o tempo gasto na conexão com o servidor MySQL, reutilizando uma conexão anterior e deixando-as abertas ao invés de fechá-las quando você termina de usá-las. Isto melhora a latência das consultas (queries), pois evita toda a sobrecarga associada à criação de uma nova conexão. Para explorar mais exemplos de Conjunto de Conexões (pools), visite a seção de exemplos createPool. Promise Callback import mysql from 'mysql2/promise'; // Cria a conexão (pool). As definições específicadas do \"createPool\" são as predefinições padrões const pool = mysql.createPool({ host: 'localhost', user: 'root', database: 'test', waitForConnections: true, connectionLimit: 10, maxIdle: 10, // Máximo de conexões inativas; o valor padrão é o mesmo que \"connectionLimit\" idleTimeout: 60000, // Tempo limite das conexões inativas em milissegundos; o valor padrão é \"60000\" queueLimit: 0, enableKeepAlive: true, keepAliveInitialDelay: 0, }); const mysql = require('mysql2'); // Cria a conexão (pool). As definições específicadas do \"createPool\" são as predefinições padrões const pool = mysql.createPool({ host: 'localhost', user: 'root', database: 'test', waitForConnections: true, connectionLimit: 10, maxIdle: 10, // Máximo de conexões inativas; o valor padrão é o mesmo que \"connectionLimit\" idleTimeout: 60000, // Tempo limite das conexões inativas em milissegundos; o valor padrão é \"60000\" queueLimit: 0, enableKeepAlive: true, keepAliveInitialDelay: 0, }); nota O pool não estabelece todas as conexões previamente, mas as cria sob demanda até que o limite de conexões seja atingido. Você pode usar o pool da mesma maneira como em uma conexão (usando pool.query() e pool.execute()): Promise Callback try { // Para a inicialização do \"pool\", veja acima const [rows, fields] = await pool.query('SELECT `field` FROM `table`'); // A conexão é automaticamente liberada quando a consulta (query) é resolvida } catch (err) { console.log(err); } // Para a inicialização do \"pool\", veja acima pool.query('SELECT `field` FROM `table`', function (err, rows, fields) { // A conexão é automaticamente liberada quando a consulta (query) é resolvida }); Alternativamente, também existe a possibilidade de adquirir manualmente uma conexão do pool e liberá-la posteriormente: Promise Callback // Para a inicialização do \"pool\", veja acima const conn = await pool.getConnection(); // Fazer algo com a conexão await conn.query(/* ... */); // Não se esqueça de liberar a conexão quando terminar! pool.releaseConnection(conn); // Para a inicialização do \"pool\", veja acima pool.getConnection(function (err, conn) { // Fazer algo com a conexão conn.query(/* ... */); // Não se esqueça de liberar a conexão quando terminar! pool.releaseConnection(conn); }); Adicionalmente, você pode liberar a conexão usando o objeto connection: conn.release();","s":"Usando Conjunto de Conexões (pools)","u":"/node-mysql2/pt-BR/docs","h":"#using-connection-pools","p":621},{"i":632,"t":"O MySQL2 também suporta Promise API. O que funciona muito bem com o ES7 async await. import mysql from 'mysql2/promise'; async function main() { // Cria a conexão com o Banco de Dados const connection = await mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', }); // Consulta no Banco de Dados const [rows, fields] = await connection.execute( 'SELECT * FROM `table` WHERE `name` = ? AND `age` > ?', ['Morty', 14] ); } O MySQL2 usa o objeto Promise padrão disponível no escopo. Mas você pode escolher qual implementação de Promise deseja usar. // Obtém o cliente import mysql from 'mysql2/promise'; // Obtém a implementação de \"Promise\" (nós usaremos o \"bluebird\") import bluebird from 'bluebird'; // Cria a conexão, especificando o \"bluebird\" como \"Promise\" const connection = await mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', Promise: bluebird, }); // Consulta no Banco de Dados const [rows, fields] = await connection.execute( 'SELECT * FROM `table` WHERE `name` = ? AND `age` > ?', ['Morty', 14] ); MySQL2 also exposes a .promise() function on Pools, so you can create a promise/non-promise connections from the same pool. import mysql from 'mysql2'; async function main() { // create the pool const pool = mysql.createPool({ host: 'localhost', user: 'root', database: 'test', }); // now get a Promise wrapped instance of that pool const promisePool = pool.promise(); // query database using promises const [rows, fields] = await promisePool.query('SELECT 1'); } O MySQL2 também expõe o método .promise() em Pools, então você pode criar conexões \"promise/non-promise\" para o mesmo pool. const mysql = require('mysql2'); // Cria a conexão const conn = mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', }); conn .promise() .query('SELECT 1') .then(([rows, fields]) => { console.log(rows); }) .catch(console.log) .then(() => conn.end());","s":"Usando o Promise Wrapper","u":"/node-mysql2/pt-BR/docs","h":"#usando-o-promise-wrapper","p":621},{"i":634,"t":"Se você tiver duas colunas com o mesmo nome, pode preferir receber os resultados como um array, em vez de um objeto, para evitar conflitos. Isso é uma divergência da biblioteca Node MySQL. Por exemplo: SELECT 1 AS `foo`, 2 AS `foo`. Você pode habilitar essa configuração tanto no nível de conexão (aplica-se a todas as consultas), quanto no nível de consulta (aplica-se apenas a essa consulta específica). Connection Level Promise Callback const conn = await mysql.createConnection({ host: 'localhost', database: 'test', user: 'root', rowsAsArray: true, }); const conn = mysql.createConnection({ host: 'localhost', database: 'test', user: 'root', rowsAsArray: true, }); Query Level Promise Callback try { const [results, fields] = await conn.query({ sql: 'SELECT 1 AS `foo`, 2 AS `foo`', rowsAsArray: true, }); console.log(results); // nessa consulta, \"results\" contêm um array de arrays ao invés de um array de objetos console.log(fields); // \"fields\" mantêm-se inalterados } catch (err) { console.log(err); } conn.query( { sql: 'SELECT 1 AS `foo`, 2 AS `foo`', rowsAsArray: true, }, function (err, results, fields) { console.log(results); // nessa consulta, \"results\" contêm um array de arrays ao invés de um array de objetos console.log(fields); // \"fields\" mantêm-se inalterados } ); Obtendo Ajuda Precisa de ajuda? Faça sua pergunta no Stack Overflow ou GitHub. Se você encontrou um erro, registre-o no GitHub.","s":"Resultados em Array","u":"/node-mysql2/pt-BR/docs","h":"#resultados-em-array","p":621},{"i":636,"t":"O MySQL2 é maioritariamente compatível com a API do Node MySQL. Uma incompatibilidade conhecida é que os valores em DECIMAL são retornados como strings, enquanto no Node MySQL eles são retornados como números. Isso inclui o resultado das funções SUM() e AVG() quando aplicadas a argumentos INTEGER. Isso é feito deliberadamente para evitar a perda de precisão - veja https://github.com/sidorares/node-mysql2/issues/935. info Se você encontrar qualquer outra incompatibilidade com o Node MySQL, por favor, reporte através do acompanhamento de Issues. Nós corrigiremos a incompatibilidade relatada como uma prioridade.","s":"API e Configuração","u":"/node-mysql2/pt-BR/docs/api-and-configurations","h":"","p":635},{"i":638,"t":"O protocolo interno é escrito por @sidorares MySQL-Native Constants, interpolação de parâmetros SQL, Pooling e a classe ConnectionConfig foram retirados do node-mysql O Código de atualização SSL é baseado no código feito por @TooTallNate Flags de API de conexão segura / comprimida compatíveis com o cliente MariaSQL. Contribuidores","s":"Agradecimentos","u":"/node-mysql2/pt-BR/docs/acknowledgements","h":"","p":637},{"i":640,"t":"Quer melhorar algo no MySQL2? Consulte o arquivo Contributing.md para instruções detalhadas sobre como começar.","s":"Contribuições","u":"/node-mysql2/pt-BR/docs/contributing","h":"","p":639},{"i":642,"t":"This website is built using Docusaurus 3, a modern static website generator.","s":"Website Contributing Guidelines","u":"/node-mysql2/pt-BR/docs/contributing/website","h":"","p":641},{"i":644,"t":"You will need these tools installed on your system: Node.js (18.x or higher)","s":"Environment","u":"/node-mysql2/pt-BR/docs/contributing/website","h":"#environment","p":641},{"i":646,"t":"Fork the MySQL2 repository. Download your forked repository locally. The website's workspace is the \"website\" directory in node-mysql2 root. Create a new branch from master (optional). Run cd website to enter the website workspace. Run npm ci to install the dependecies from package-lock.json. Run npm start to starting the local development. It will start a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. For Docusaurus complete documentation, please see here. CLI example git clone https://github.com/sidorares/node-mysql2.git git checkout -b website # optional cd /path-to/node-mysql2/website npm ci npm start Documentation is auto-generated from MDX files placed in these directories: ./docs/documentation ./docs/examples ./docs/faq Caution Note that the website has its own package.json. Please, do not install dependencies for the website in node-mysql2 root.","s":"Development","u":"/node-mysql2/pt-BR/docs/contributing/website","h":"#development","p":641},{"i":648,"t":"Every extra component is thoroughly documented with complete typings descriptions. Docusaurus Markdown Features: The MDX compiler transforms Markdown files to React components, and allows you to use JSX in your Markdown content. This enables you to easily interleave React components within your content, and create delightful learning experiences.","s":"Extras Components","u":"/node-mysql2/pt-BR/docs/contributing/website","h":"#extras-components","p":641},{"i":650,"t":"The History component displays version changes in a table format, listing version numbers alongside their changes. import { History } from '@site/src/components/History'; dica You can also utilize React components in the changes option. Example History Version Changes v1.0.0 Some change message.","s":"History","u":"/node-mysql2/pt-BR/docs/contributing/website","h":"#history","p":641},{"i":652,"t":"See the Stability Badges for more detais. import { Stability } from '@site/src/components/Stability'; dica You can also utilize React components in the message option. Available levels: 0, 1, 1.1, 1.2, 2 and 3. Example 2Stable 2Stable Some message.","s":"Stability","u":"/node-mysql2/pt-BR/docs/contributing/website","h":"#stability","p":641},{"i":654,"t":"import { FAQ } from '@site/src/components/FAQ'; > Some markdown (**MDX**) content. dica The FAQ component can be utilized in any section or page. Code blocks are compatible and can be used within the FAQ component. Example Title Some markdown (MDX) content.","s":"FAQ","u":"/node-mysql2/pt-BR/docs/contributing/website","h":"#faq","p":641},{"i":656,"t":"import { ExternalCodeEmbed } from '@site/src/components/ExternalCodeEmbed'; Example","s":"ExternalCodeEmbed","u":"/node-mysql2/pt-BR/docs/contributing/website","h":"#externalcodeembed","p":641},{"i":658,"t":"npm run test Check Prettier and ESLint rules for compliance npm run lintcheck Included in the GitHub Actions workflow. Check for typings errors 1Experimental Checks for MDX components are missing. npm run typecheck Included in the GitHub Actions workflow. Clear and build the website npm run clear npm run build Included in the GitHub Actions workflow. Fix issues from Prettier and ESLint rules npm run lint To prevent lint issues, it is recommended to execute this command before creating your commit. Not included in the GitHub Actions workflow.","s":"Running Tests","u":"/node-mysql2/pt-BR/docs/contributing/website","h":"#running-tests","p":641},{"i":660,"t":"During the connection phase the server may ask the client to switch to a different auth method. If the authPlugins connection config option is set, it must be an object where each key is the name of a potential authentication plugin requested by the server, and the corresponding value must be a function that optionally receives the connection config options and returns another function, which in turn, optionally receives the switch request data. The plugin is loaded with a ({user,password,...}) signature, and each call has a (pluginData) signature. Each call should make the plugin return any additional authentication data (Buffer) that should be sent back to the server, either synchronously or asynchronously using a Promise, or should yield an error accordingly. Example: (imaginary ssh-key-auth plugin) pseudo code const conn = mysql.createConnection({ user: 'test_user', password: 'test', database: 'test_database', authPlugins: { 'ssh-key-auth': function ({ password }) { return function (pluginData) { return getPrivate(key) .then((key) => { const response = encrypt(key, password, pluginData); // continue handshake by sending response data return response; }) .catch((err) => { // throw error to propagate error to connect/changeUser handlers }); }; }, }, }); There is also a deprecated API where if a authSwitchHandler connection config option is set it must be a function that receives switch request data and responds via a callback. In this case, the first invocation always has a ({pluginName, pluginData}) signature, following calls - ({pluginData}). The client replies with an opaque blob matching the requested plugin via callback(null, data: Buffer). const conn = mysql.createConnection({ user: 'test_user', password: 'test', database: 'test_database', authSwitchHandler: function ({ pluginName, pluginData }, cb) { if (pluginName === 'ssh-key-auth') { getPrivateKey((key) => { const response = encrypt(key, pluginData); // continue handshake by sending response data // respond with error to propagate error to connect/changeUser handlers cb(null, response); }); } else { const err = new Error( `Unknown AuthSwitchRequest plugin name ${pluginName}` ); err.fatal = true; cb(err); } }, }); The initial handshake is always performed using mysql_native_password plugin. This will be possible to override in future versions. Note that if the mysql_native_password method is requested it will be handled internally according to Authentication::Native41 and no authPlugins function or the authSwitchHandler will be invoked. These MAY be called multiple times if the plugin algorithm requires multiple roundtrips of data exchange between client and server.","s":"Authentication Switch Request","u":"/node-mysql2/pt-BR/docs/documentation/authentication-switch","h":"","p":659},{"i":662,"t":"If the user requires multi-factor authentication in the server, the client will receive a AuthNextFactor request, which is similar in structure to the regular authentication switch request and contains the name and possible initial data for the additional authentication factor plugin (up to 3). Additional passwords can be provided using the connection config options - password2 and password3. Again, for each authentication factor, multiple roundtrips of data exchange can be required by the plugin algoritm. const conn = mysql.createConnection({ user: 'test_user', password: 'secret1', password2: 'secret2', password3: 'secret3', database: 'test_database', authPlugins: { // password1 === password 'auth-plugin1': function ({ password1 }) { return function (serverPluginData) { return clientPluginData(password1, serverPluginData); }; }, 'auth-plugin2': function ({ password2 }) { return function (serverPluginData) { return clientPluginData(password2, serverPluginData); }; }, 'auth-plugin3': function ({ password3 }) { return function (serverPluginData) { return clientPluginData(password3, serverPluginData); }; }, }, });","s":"Multi-factor authentication","u":"/node-mysql2/pt-BR/docs/documentation/authentication-switch","h":"#multi-factor-authentication","p":659},{"i":665,"t":"You can use named placeholders for parameters by setting namedPlaceholders config value or query/execute time option. Named placeholders are converted to unnamed ? on the client (mysql protocol does not support named parameters). If you reference parameter multiple times under the same name it is sent to server multiple times. Unnamed placeholders can still be used by providing the values as an array instead of an object. connection.config.namedPlaceholders = true; connection.execute('select :x + :y as z', { x: 1, y: 2 }, (err, rows) => { // statement prepared as \"select ? + ? as z\" and executed with [1,2] values // rows returned: [ { z: 3 } ] }); connection.execute('select :x + :x as z', { x: 1 }, (err, rows) => { // select ? + ? as z, execute with [1, 1] }); connection.query('select :x + :x as z', { x: 1 }, (err, rows) => { // query select 1 + 1 as z }); // unnamed placeholders are still valid if the values are provided in an array connection.query('select ? + ? as z', [1, 1], (err, rows) => { // query select 1 + 1 as z });","s":"Named placeholders","u":"/node-mysql2/pt-BR/docs/documentation/extras","h":"#named-placeholders","p":663},{"i":667,"t":"const options = { sql: 'select A,B,C,D from foo', rowsAsArray: true }; connection.query(options, (err, results) => { /* results will be an array of arrays like this now: [[ 'field A value', 'field B value', 'field C value', 'field D value', ], ...] */ });","s":"Receiving rows as array of columns instead of hash with column name as key:","u":"/node-mysql2/pt-BR/docs/documentation/extras","h":"#receiving-rows-as-array-of-columns-instead-of-hash-with-column-name-as-key","p":663},{"i":669,"t":"In addition to sending local fs files you can send any stream using infileStreamFactory query option. If set, it has to be a function that return a readable stream. It gets file path from query as a parameter. Note: starting from version 2.0 infileStreamFactory is required parameter for LOAD DATA LOCAL INFILE. Response from server indicates that it wants access to a local file and no infileStreamFactory option is provided the query ends with error. // local file connection.query( 'LOAD DATA LOCAL INFILE \"/tmp/data.csv\" INTO TABLE test FIELDS TERMINATED BY ? (id, title)', onInserted1 ); // local stream const sql = 'LOAD DATA LOCAL INFILE \"mystream\" INTO TABLE test FIELDS TERMINATED BY ? (id, title)'; connection.query( { sql: sql, infileStreamFactory: function (path) { return getStream(); }, }, onInserted2 ); The infileStreamFactory option may also be set at a connection-level: const fs = require('fs'); const mysql = require('mysql2'); const connection = mysql.createConnection({ user: 'test', database: 'test', infileStreamFactory: (path) => { // Validate file path const validPaths = ['/tmp/data.csv']; if (!validPaths.includes(path)) { throw new Error( `invalid file path: ${path}: expected to be one of ${validPaths.join( ',' )}` ); } return fs.createReadStream(path); }, }); connection.query( 'LOAD DATA LOCAL INFILE \"/tmp/data.csv\" INTO TABLE test', onInserted );","s":"Sending tabular data with 'load infile' and local stream:","u":"/node-mysql2/pt-BR/docs/documentation/extras","h":"#sending-tabular-data-with-load-infile-and-local-stream","p":663},{"i":671,"t":"const net = require('net'); const mysql = require('mysql2'); const shape = require('shaper'); const connection = mysql.createConnection({ user: 'test', database: 'test', stream: net.connect('/tmp/mysql.sock').pipe(shape(10)), // emulate 10 bytes/sec link }); connection.query('SELECT 1+1 as test1', console.log); stream also can be a function. In that case function result has to be duplex stream, and it is used for connection transport. This is required if you connect pool using custom transport as new pooled connection needs new stream. Example connecting over socks5 proxy: const mysql = require('mysql2'); const SocksConnection = require('socksjs'); const pool = mysql.createPool({ database: 'test', user: 'foo', password: 'bar', stream: function (cb) { const newStream = new SocksConnection( { host: 'remote.host', port: 3306 }, { host: 'localhost', port: 1080 } ); cb(null, newStream); }, }); In addition to password createConnection(), createPool() and changeUser() accept passwordSha1 option. This is useful when implementing proxies as plaintext password might be not available.","s":"Connecting using custom stream:","u":"/node-mysql2/pt-BR/docs/documentation/extras","h":"#connecting-using-custom-stream","p":663},{"i":674,"t":"createServer() - creates server instance Server.listen - listen port / unix socket (same arguments as net.Server.listen)","s":"Server","u":"/node-mysql2/pt-BR/docs/documentation/mysql-server","h":"#server","p":672},{"i":676,"t":"connect new incoming connection.","s":"Events","u":"/node-mysql2/pt-BR/docs/documentation/mysql-server","h":"#events","p":672},{"i":678,"t":"serverHandshake({ serverVersion, protocolVersion, connectionId, statusFlags, characterSet, capabilityFlags }) send server handshake initialisation packet, wait handshake response and start listening for commands writeOk({ affectedRows: num, insertId: num }) send OK packet to client writeEof(warnings, statusFlags) send EOF packet writeTextResult(rows, fields) write query result to client. Rows and fields are in the same format as in connection.query callback. writeColumns(fields) write fields + EOF packets. writeTextRow(row) write array (not hash!) of values as result row TODO: binary protocol","s":"Connection","u":"/node-mysql2/pt-BR/docs/documentation/mysql-server","h":"#connection","p":672},{"i":680,"t":"Every command packet received by the server will be emitted as a packet event with the parameters: packet: Packet The packet itself knownCommand: boolean is this command known to the server *commandCode: number the parsed command code (first byte) In addition special events are emitted for commands received from the client. If no listener is present a fallback behavior will be invoked. quit() Default: close the connection init_db(schemaName: string) Default: return OK query(sql: string) Please attach a listener to this. Default: return HA_ERR_INTERNAL_ERROR field_list(table: string, fields: string) Default: return ER_WARN_DEPRECATED_SYNTAX ping() - Default: return OK","s":"Events","u":"/node-mysql2/pt-BR/docs/documentation/mysql-server","h":"#events-1","p":672},{"i":682,"t":"MySQL2 aims to be a drop in replacement for Node MySQL. nota If you see any API incompatibilities with Node MySQL, please report via github issue. Not only MySQL2 offers better performance over Node MySQL, we also support these additional features: Prepared Statements Promise Wrapper Authentication Switch More Features MySQL Server Pooling SSL MySQL Compression Binary Log Protocol Client","s":"Documentation","u":"/node-mysql2/pt-BR/docs/documentation","h":"","p":681},{"i":684,"t":"Please check these examples for MySQL2.","s":"Examples","u":"/node-mysql2/pt-BR/docs/documentation","h":"#examples","p":681},{"i":686,"t":"zeroFill flag is ignored in type conversion. You need to check corresponding field's zeroFill flag and convert to string manually if this is of importance to you. DECIMAL and NEWDECIMAL types always returned as string unless you pass this config option: { decimalNumbers: true, } nota This option could lose precision on the number as Javascript Number is a Float!","s":"Known incompatibilities with Node MySQL","u":"/node-mysql2/pt-BR/docs/documentation","h":"#known-incompatibilities-with-node-mysql","p":681},{"i":688,"t":"Wire protocol documentation Node MySQL - Most popular node.js mysql client library node-mariasql - Bindings to libmariasql. One of the fastest clients node-libmysqlclient - Bindings to libmysqlclient go-mysql - MySQL Go client (prepared statements, binlog protocol, server)","s":"Other Resources","u":"/node-mysql2/pt-BR/docs/documentation","h":"#other-resources","p":681},{"i":690,"t":"https://gist.github.com/sidorares/ffe9ee9c423f763e3b6b npm run benchmarks node-mysql-benchmarks try to run example benchmarks on your system","s":"Benchmarks","u":"/node-mysql2/pt-BR/docs/documentation","h":"#benchmarks","p":681},{"i":693,"t":"Similar to connection.query(). connection.execute('select 1 + ? + ? as result', [5, 6], (err, rows) => { // rows: [ { result: 12 } ] // internally 'select 1 + ? + ? as result' is prepared first. On subsequent calls cached statement is re-used }); // close cached statement for 'select 1 + ? + ? as result'. noop if not in cache connection.unprepare('select 1 + ? + ? as result'); Note that connection.execute() will cache the prepared statement for better performance, remove the cache with connection.unprepare() when you're done.","s":"Automatic creation, cached and re-used by connection","u":"/node-mysql2/pt-BR/docs/documentation/prepared-statements","h":"#automatic-creation-cached-and-re-used-by-connection","p":691},{"i":695,"t":"Manually prepared statements doesn't comes with LRU cache and SHOULD be closed using statement.close() instead of connection.unprepare(). connection.prepare('select ? + ? as tests', (err, statement) => { // statement.parameters - array of column definitions, length === number of params, here 2 // statement.columns - array of result column definitions. Can be empty if result schema is dynamic / not known // statement.id // statement.query statement.execute([1, 2], (err, rows, columns) => { // -> [ { tests: 3 } ] }); // don't use connection.unprepare(), it won't work! // note that there is no callback here. There is no statement close ack at protocol level. statement.close(); }); Note that you should not use statement after connection reset (changeUser() or disconnect). Statement scope is connection, you need to prepare statement for each new connection in order to use it.","s":"Manual prepare / execute","u":"/node-mysql2/pt-BR/docs/documentation/prepared-statements","h":"#manual-prepare--execute","p":691},{"i":697,"t":"maxPreparedStatements : We keep the cached statements in a lru-cache. Default size is 16000 but you can use this option to override it. Any statements that are dropped from cache will be closed.","s":"Configuration","u":"/node-mysql2/pt-BR/docs/documentation/prepared-statements","h":"#configuration","p":691},{"i":699,"t":"The bind parameter values passed to execute are serialized JS -> MySQL as: null -> NULL number -> DOUBLE boolean -> TINY (0 for false, 1 for true) object -> depending on prototype: Date -> DATETIME JSON like object - JSON Buffer -> VAR_STRING Other -> VAR_STRING Passing in undefined or a function will result in an error.","s":"Serialization of bind parameters","u":"/node-mysql2/pt-BR/docs/documentation/prepared-statements","h":"#serialization-of-bind-parameters","p":691},{"i":701,"t":"MySQL2 provides execute helper which will prepare and query the statement. You can also manually prepare / unprepare statement with prepare / unprepare methods. connection.execute( 'select ?+1 as qqq, ? as rrr, ? as yyy', [1, null, 3], (err, rows, fields) => { console.log(err, rows, fields); connection.execute( 'select ?+1 as qqq, ? as rrr, ? as yyy', [3, null, 3], (err, rows, fields) => { console.log(err, rows, fields); connection.unprepare('select ?+1 as qqq, ? as rrr, ? as yyy'); connection.execute( 'select ?+1 as qqq, ? as rrr, ? as yyy', [3, null, 3], (err, rows, fields) => { console.log(err, rows, fields); } ); } ); } );","s":"Prepared Statements Helper","u":"/node-mysql2/pt-BR/docs/documentation/prepared-statements","h":"#prepared-statements-helper","p":691},{"i":703,"t":"For Prepared Statements examples, please see here.","s":"Examples","u":"/node-mysql2/pt-BR/docs/documentation/prepared-statements","h":"#examples","p":691},{"i":706,"t":"npm install --save mysql2 npm install --save-dev @types/node The @types/node ensure the proper interaction between TypeScript and the Node.js modules used by MySQL2 (net, events, stream, tls, etc.). info Requires TypeScript >=4.5.2.","s":"Installation","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#installation","p":704},{"i":708,"t":"You can import MySQL2 in two ways: By setting the esModuleInterop option to true in tsconfig.json import mysql from 'mysql2'; import mysql from 'mysql2/promise'; By setting the esModuleInterop option to false in tsconfig.json import * as mysql from 'mysql2'; import * as mysql from 'mysql2/promise';","s":"Usage","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#usage","p":704},{"i":710,"t":"import mysql, { ConnectionOptions } from 'mysql2'; const access: ConnectionOptions = { user: 'test', database: 'test', }; const conn = mysql.createConnection(access);","s":"Connection","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#connection","p":704},{"i":712,"t":"import mysql, { PoolOptions } from 'mysql2'; const access: PoolOptions = { user: 'test', database: 'test', }; const conn = mysql.createPool(access);","s":"Pool Connection","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#pool-connection","p":704},{"i":714,"t":"A simple query conn.query('SELECT 1 + 1 AS `test`;', (_err, rows) => { /** * @rows: [ { test: 2 } ] */ }); conn.execute('SELECT 1 + 1 AS `test`;', (_err, rows) => { /** * @rows: [ { test: 2 } ] */ }); The rows output will be these possible types: RowDataPacket[] RowDataPacket[][] ResultSetHeader ResultSetHeader[] ProcedureCallPacket In this example, you need to manually check the output types","s":"Query and Execute","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#query-and-execute","p":704},{"i":717,"t":"2Stable An array with the returned rows, for example: import mysql, { RowDataPacket } from 'mysql2'; const conn = mysql.createConnection({ user: 'test', database: 'test', }); // SELECT conn.query('SELECT 1 + 1 AS `test`;', (_err, rows) => { console.log(rows); /** * @rows: [ { test: 2 } ] */ }); // SHOW conn.query('SHOW TABLES FROM `test`;', (_err, rows) => { console.log(rows); /** * @rows: [ { Tables_in_test: 'test' } ] */ }); Using rowsAsArray option as true: import mysql, { RowDataPacket } from 'mysql2'; const conn = mysql.createConnection({ user: 'test', database: 'test', rowsAsArray: true, }); // SELECT conn.query( 'SELECT 1 + 1 AS test, 2 + 2 AS test;', (_err, rows) => { console.log(rows); /** * @rows: [ [ 2, 4 ] ] */ } ); // SHOW conn.query('SHOW TABLES FROM `test`;', (_err, rows) => { console.log(rows); /** * @rows: [ [ 'test' ] ] */ });","s":"RowDataPacket[]","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#rowdatapacket","p":704},{"i":719,"t":"2Stable Using multipleStatements option as true with multiple queries: import mysql, { RowDataPacket } from 'mysql2'; const conn = mysql.createConnection({ user: 'test', database: 'test', multipleStatements: true, }); const sql = ` SELECT 1 + 1 AS test; SELECT 2 + 2 AS test; `; conn.query(sql, (_err, rows) => { console.log(rows); /** * @rows: [ [ { test: 2 } ], [ { test: 4 } ] ] */ });","s":"RowDataPacket[][]","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#rowdatapacket-1","p":704},{"i":721,"t":"2Stable History Version Changes v3.5.1 OkPacket is deprecated and might be removed in the future major release. Please use ResultSetHeader instead. changedRows option is deprecated and might be removed in the future major release. Please use affectedRows instead. For INSERT, UPDATE, DELETE, TRUNCATE, etc.: import mysql, { ResultSetHeader } from 'mysql2'; const conn = mysql.createConnection({ user: 'test', database: 'test', }); const sql = ` SET @1 = 1; `; conn.query(sql, (_err, result) => { console.log(result); /** * @result: ResultSetHeader { fieldCount: 0, affectedRows: 0, insertId: 0, info: '', serverStatus: 2, warningStatus: 0, changedRows: 0 } */ });","s":"ResultSetHeader","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#resultsetheader","p":704},{"i":723,"t":"2Stable History Version Changes v3.5.1 Introduce ResultSetHeader[] For multiples INSERT, UPDATE, DELETE, TRUNCATE, etc. when using multipleStatements as true: import mysql, { ResultSetHeader } from 'mysql2'; const conn = mysql.createConnection({ user: 'test', database: 'test', multipleStatements: true, }); const sql = ` SET @1 = 1; SET @2 = 2; `; conn.query(sql, (_err, results) => { console.log(results); /** * @results: [ ResultSetHeader { fieldCount: 0, affectedRows: 0, insertId: 0, info: '', serverStatus: 10, warningStatus: 0, changedRows: 0 }, ResultSetHeader { fieldCount: 0, affectedRows: 0, insertId: 0, info: '', serverStatus: 2, warningStatus: 0, changedRows: 0 } ] */ });","s":"ResultSetHeader[]","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#resultsetheader-1","p":704},{"i":725,"t":"2Stable History Version Changes v3.5.1 Introduce ProcedureCallPacket dica By performing a Call Procedure using INSERT, UPDATE, etc., the return will be a ProcedureCallPacket (even if you perform multiples queries and set multipleStatements to true): import mysql, { ProcedureCallPacket, ResultSetHeader } from 'mysql2'; const conn = mysql.createConnection({ user: 'test', database: 'test', }); /** ResultSetHeader */ conn.query('DROP PROCEDURE IF EXISTS myProcedure'); /** ResultSetHeader */ conn.query(` CREATE PROCEDURE myProcedure() BEGIN SET @1 = 1; SET @2 = 2; END `); /** ProcedureCallPacket */ const sql = 'CALL myProcedure()'; conn.query>(sql, (_err, result) => { console.log(result); /** * @result: ResultSetHeader { fieldCount: 0, affectedRows: 0, insertId: 0, info: '', serverStatus: 2, warningStatus: 0, changedRows: 0 } */ }); For CREATE PROCEDURE and DROP PROCEDURE, these returns will be the default ResultSetHeader. By using SELECT and SHOW queries in a Procedure Call, it groups the results as: /** ProcedureCallPacket */ [RowDataPacket[], ResultSetHeader] For ProcedureCallPacket, please see the following examples.","s":"ProcedureCallPacket","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#procedurecallpacket","p":704},{"i":727,"t":"0Deprecated OkPacket is deprecated and might be removed in the future major release. Please use ResultSetHeader instead.","s":"OkPacket","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#okpacket","p":704},{"i":729,"t":"You can also check some code examples using MySQL2 and TypeScript to understand advanced concepts: Extending and using Interfaces with RowDataPacket Extending and using Interfaces with RowDataPacket and rowAsArray Extending and using Interfaces with RowDataPacket and multipleStatements Extending and using Interfaces with RowDataPacket, rowAsArray and multipleStatements Checking for ResultSetHeader, extending and using Interfaces with RowDataPacket from ProcedureCallPacket Checking for ResultSetHeader, extending and using Interfaces with RowDataPacket and rowAsArray from ProcedureCallPacket Creating a basic custom MySQL2 Class","s":"Examples","u":"/node-mysql2/pt-BR/docs/documentation/typescript-examples","h":"#examples","p":704},{"i":731,"t":"dica To explore the examples, please use the sidebar navigation on desktop or access the menu on mobile devices.","s":"Examples","u":"/node-mysql2/pt-BR/docs/examples","h":"","p":730},{"i":733,"t":"MySQL-pg-proxy - MySQL to Postgres proxy server. MySQLite.js - MySQL server with JS-only (emscripten compiled) sqlite backend. SQL-engine - MySQL server with LevelDB backend. MySQL-osquery-proxy - Connect to facebook osquery using MySQL client PlyQL - Connect to Druid using MySQL client","s":"Examples using MySQL server API","u":"/node-mysql2/pt-BR/docs/examples","h":"#examples-using-mysql-server-api","p":730},{"i":735,"t":"index.js 'use strict'; const mysql = require('mysql2'); const through2 = require('through2'); const binlogStream = mysql.createBinlogStream({ serverId: 123, // slave ID, first field in \"show slave hosts\" sql response // you can also specify slave host, username, password and port masterId: 0, filename: 'mysql-bin.000007', binlogPos: 120, flags: 1, // 1 = \"non-blocking mode\" }); binlogStream.pipe( through2.obj((obj, enc, next) => { console.log(obj); next(); }) );","s":"Binlog Watcher","u":"/node-mysql2/pt-BR/docs/examples/binlog-watcher","h":"","p":734},{"i":737,"t":"In addition to errback interface there is thin wrapper to expose Promise-based api","s":"Promise Wrappers","u":"/node-mysql2/pt-BR/docs/documentation/promise-wrapper","h":"","p":736},{"i":739,"t":"/* eslint-env es6 */ const mysql = require('mysql2/promise'); // or require('mysql2').createConnectionPromise mysql .createConnection({ /* same parameters as for non-promise createConnection */ }) .then((conn) => conn.query('select foo from bar')) .then(([rows, fields]) => console.log(rows[0].foo)); const pool = require('mysql2/promise').createPool({}); // or require('mysql2').createPoolPromise({}) or require('mysql2').createPool({}).promise() pool .getConnection() .then((conn) => { const res = conn.query('select foo from bar'); conn.release(); return res; }) .then((result) => { console.log(result[0][0].foo); }) .catch((err) => { console.log(err); // any of connection time or query time errors from above });","s":"Basic Promise","u":"/node-mysql2/pt-BR/docs/documentation/promise-wrapper","h":"#basic-promise","p":736},{"i":741,"t":"async function example1() { const mysql = require('mysql2/promise'); const conn = await mysql.createConnection({ database: test }); const [rows, fields] = await conn.execute('select ?+? as sum', [2, 2]); await conn.end(); } async function example2() { const mysql = require('mysql2/promise'); const pool = mysql.createPool({ database: test }); // execute in parallel, next console.log in 3 seconds await Promise.all([ pool.query('select sleep(2)'), pool.query('select sleep(3)'), ]); console.log('3 seconds after'); await pool.end(); }","s":"ES7 Async Await","u":"/node-mysql2/pt-BR/docs/documentation/promise-wrapper","h":"#es7-async-await","p":736},{"i":743,"t":"const mysql = require('mysql2'); const co = require('co'); co(function* () { const c = yield mysql.createConnectionPromise({ user: 'root', namedPlaceholders: true, }); const rows = yield c.query('show databases'); console.log(rows); console.log(yield c.execute('select 1+:toAdd as qqq', { toAdd: 10 })); yield c.end(); }); Examples in /examples/promise-co-await","s":"With CO","u":"/node-mysql2/pt-BR/docs/documentation/promise-wrapper","h":"#with-co","p":736},{"i":745,"t":"info For queries please see the Simple Queries and Prepared Statements examples.","s":"createConnection","u":"/node-mysql2/pt-BR/docs/examples/connections/create-connection","h":"","p":744},{"i":747,"t":"createConnection(connectionUri: string) promise.js callback.js import mysql from 'mysql2/promise'; try { const connection = await mysql.createConnection( 'mysql://root:password@localhost:3306/test' ); } catch (err) { console.log(err); } const mysql = require('mysql2'); const connection = mysql.createConnection( 'mysql://root:password@localhost:3306/test' ); connection.addListener('error', (err) => { console.log(err); });","s":"createConnection(connectionUri)","u":"/node-mysql2/pt-BR/docs/examples/connections/create-connection","h":"#createconnectionconnectionuri","p":744},{"i":749,"t":"createConnection(config: ConnectionOptions) promise.js callback.js import mysql from 'mysql2/promise'; try { const connection = await mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', // port: 3306, // password: '', }); } catch (err) { console.log(err); } const mysql = require('mysql2'); const connection = mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', // port: 3306, // password: '', }); connection.addListener('error', (err) => { console.log(err); });","s":"createConnection(config)","u":"/node-mysql2/pt-BR/docs/examples/connections/create-connection","h":"#createconnectionconfig","p":744},{"i":751,"t":"createConnection(config: ConnectionOptions) promise.js callback.js import mysql from 'mysql2/promise'; try { const connection = await mysql.createConnection({ // ... passwordSha1: Buffer.from( '8bb6118f8fd6935ad0876a3be34a717d32708ffd', 'hex' ), }); } catch (err) { console.log(err); } const mysql = require('mysql2'); const connection = mysql.createConnection({ // ... passwordSha1: Buffer.from('8bb6118f8fd6935ad0876a3be34a717d32708ffd', 'hex'), }); connection.addListener('error', (err) => { console.log(err); });","s":"createConnection(config) — SHA1","u":"/node-mysql2/pt-BR/docs/examples/connections/create-connection","h":"#createconnectionconfig--sha1","p":744},{"i":753,"t":"createConnection(config: ConnectionOptions) promise.js callback.js certs/ca-cert.pem import mysql from 'mysql2/promise'; try { const connection = await mysql.createConnection({ // ... ssl: { // key: fs.readFileSync('./certs/client-key.pem'), // cert: fs.readFileSync('./certs/client-cert.pem') ca: fs.readFileSync('./certs/ca-cert.pem'), }, }); } catch (err) { console.log(err); } const mysql = require('mysql2'); const connection = mysql.createConnection({ // ... ssl: { // key: fs.readFileSync('./certs/client-key.pem'), // cert: fs.readFileSync('./certs/client-cert.pem') ca: fs.readFileSync('./certs/ca-cert.pem'), }, }); connection.addListener('error', (err) => { console.log(err); }); See ssl/certs.","s":"createConnection(config) — SSL","u":"/node-mysql2/pt-BR/docs/examples/connections/create-connection","h":"#createconnectionconfig--ssl","p":744},{"i":755,"t":"createConnection(config: ConnectionOptions) You can use Amazon RDS string as value to ssl property to connect to Amazon RDS MySQL over SSL. In that case https://s3.amazonaws.com/rds-downloads/mysql-ssl-ca-cert.pem CA cert is used: promise.js callback.js import mysql from 'mysql2/promise'; try { const connection = await mysql.createConnection({ // ... host: 'db.id.ap-southeast-2.rds.amazonaws.com', ssl: 'Amazon RDS', }); } catch (err) { console.log(err); } Testing try { const [res] = await connection.query('SHOW `status` LIKE \"Ssl_cipher\"'); await connection.end(); console.log(res); } catch (err) { console.log(err); } const mysql = require('mysql2'); const connection = mysql.createConnection({ // ... host: 'db.id.ap-southeast-2.rds.amazonaws.com', ssl: 'Amazon RDS', }); connection.addListener('error', (err) => { console.log(err); }); Testing connectionquery('SHOW `status` LIKE \"Ssl_cipher\"', function (err, res) { connection.end(); if (err instanceof Error) { console.log(err); return; } console.log(res); });","s":"createConnection(config) — RDS SSL","u":"/node-mysql2/pt-BR/docs/examples/connections/create-connection","h":"#createconnectionconfig--rds-ssl","p":744},{"i":757,"t":"Issues #2130 — Update TLS certs for Amazon RDS instances Pull Requests #2119 — fix: make startTls code compatible with Bun #2131 — Update Amazon RDS SSL CA cert","s":"Related Links","u":"/node-mysql2/pt-BR/docs/examples/connections/create-connection","h":"#related-links","p":744},{"i":759,"t":"createConnection(config: ConnectionOptions) A.js B.js const mysql = require('mysql2'); const SocksConnection = require('socksjs'); const socksProxy = new SocksConnection({ port: 3306 }); const connection = mysql.createConnection({ stream: socksProxy, }); connection.addListener('error', (err) => { console.log(err); }); const mysql = require('mysql2'); const SocksConnection = require('socksjs'); const connection = mysql.createConnection({ debug: 1, stream: function () { return new SocksConnection({ port: 3306 }); }, }); connection.addListener('error', (err) => { console.log(err); }); Testing connection.execute('SELECT SLEEP(1.1) AS `www`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); }); connection.execute('SELECT SLEEP(1) AS `qqq`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); }); connection.execute('SELECT SLEEP(1) AS `qqq`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); });","s":"createConnection(config) — Socks","u":"/node-mysql2/pt-BR/docs/examples/connections/create-connection","h":"#createconnectionconfig--socks","p":744},{"i":762,"t":"ConnectionOptions Specification","s":"ConnectionOptions","u":"/node-mysql2/pt-BR/docs/examples/connections/create-connection","h":"#connectionoptions","p":744},{"i":764,"t":"info For queries please see the Simple Queries and Prepared Statements examples.","s":"createPool","u":"/node-mysql2/pt-BR/docs/examples/connections/create-pool","h":"","p":763},{"i":766,"t":"createPool(connectionUri: string) promise.js callback.js import mysql from 'mysql2/promise'; try { const pool = mysql.createPool('mysql://root:password@localhost:3306/test'); const connection = await pool.getConnection(); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const pool = mysql.createPool('mysql://root:password@localhost:3306/test'); pool.getConnection(function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); atenção Don't forget to release the connection when finished by using: pool.releaseConnection(connection) connection.release()","s":"createPool(connectionUri)","u":"/node-mysql2/pt-BR/docs/examples/connections/create-pool","h":"#createpoolconnectionuri","p":763},{"i":768,"t":"createPool(config: PoolOptions) promise.js callback.js import mysql from 'mysql2/promise'; try { const pool = mysql.createPool({ host: 'localhost', user: 'root', database: 'test', // port: 3306, // password: '', }); const connection = await pool.getConnection(); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const pool = mysql.createPool({ host: 'localhost', user: 'root', database: 'test', // port: 3306, // password: '', }); pool.getConnection(function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); atenção Don't forget to release the connection when finished by using: pool.releaseConnection(connection) connection.release()","s":"createPool(config)","u":"/node-mysql2/pt-BR/docs/examples/connections/create-pool","h":"#createpoolconfig","p":763},{"i":770,"t":"createPool(config: PoolOptions) promise.js callback.js import mysql from 'mysql2/promise'; try { const pool = mysql.createPool({ // ... passwordSha1: Buffer.from( '8bb6118f8fd6935ad0876a3be34a717d32708ffd', 'hex' ), }); const connection = await pool.getConnection(); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const pool = mysql.createPool({ // ... passwordSha1: Buffer.from('8bb6118f8fd6935ad0876a3be34a717d32708ffd', 'hex'), }); pool.getConnection(function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); atenção Don't forget to release the connection when finished by using: pool.releaseConnection(connection) connection.release()","s":"createPool(config) — SHA1","u":"/node-mysql2/pt-BR/docs/examples/connections/create-pool","h":"#createpoolconfig--sha1","p":763},{"i":772,"t":"createPool(config: PoolOptions) promise.js callback.js certs/ca-cert.pem import mysql from 'mysql2/promise'; try { const pool = mysql.createPool({ // ... ssl: { // key: fs.readFileSync('./certs/client-key.pem'), // cert: fs.readFileSync('./certs/client-cert.pem') ca: fs.readFileSync('./certs/ca-cert.pem'), }, }); const connection = await pool.getConnection(); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const pool = mysql.createPool({ // ... ssl: { // key: fs.readFileSync('./certs/client-key.pem'), // cert: fs.readFileSync('./certs/client-cert.pem') ca: fs.readFileSync('./certs/ca-cert.pem'), }, }); pool.getConnection(function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); See ssl/certs. atenção Don't forget to release the connection when finished by using: pool.releaseConnection(connection) connection.release()","s":"createPool(config) — SSL","u":"/node-mysql2/pt-BR/docs/examples/connections/create-pool","h":"#createpoolconfig--ssl","p":763},{"i":774,"t":"createPool(config: PoolOptions) You can use Amazon RDS string as value to ssl property to connect to Amazon RDS MySQL over SSL. In that case https://s3.amazonaws.com/rds-downloads/mysql-ssl-ca-cert.pem CA cert is used: promise.js callback.js import mysql from 'mysql2/promise'; try { const pool = mysql.createPool({ // ... host: 'db.id.ap-southeast-2.rds.amazonaws.com', ssl: 'Amazon RDS', }); const connection = await pool.getConnection(); // ... some query connection.release(); } catch (err) { console.log(err); } Testing try { const [res] = await connection.query('SHOW `status` LIKE \"Ssl_cipher\"'); await pool.end(); console.log(res); } catch (err) { console.log(err); } const mysql = require('mysql2'); const pool = mysql.createPool({ // ... host: 'db.id.ap-southeast-2.rds.amazonaws.com', ssl: 'Amazon RDS', }); pool.getConnection(function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); Testing connectionquery('SHOW `status` LIKE \"Ssl_cipher\"', function (err, res) { pool.end(); if (err instanceof Error) { console.log(err); return; } console.log(res); }); atenção Don't forget to release the connection when finished by using: pool.releaseConnection(connection) connection.release()","s":"createPool(config) — RDS SSL","u":"/node-mysql2/pt-BR/docs/examples/connections/create-pool","h":"#createpoolconfig--rds-ssl","p":763},{"i":776,"t":"Issues #2130 — Update TLS certs for Amazon RDS instances Pull Requests #2119 — fix: make startTls code compatible with Bun #2131 — Update Amazon RDS SSL CA cert","s":"Related Links","u":"/node-mysql2/pt-BR/docs/examples/connections/create-pool","h":"#related-links","p":763},{"i":778,"t":"createPool(config: PoolOptions) A.js B.js const mysql = require('mysql2'); const SocksConnection = require('socksjs'); const socksProxy = new SocksConnection({ port: 3306 }); const pool = mysql.createPool({ stream: socksProxy, }); const mysql = require('mysql2'); const SocksConnection = require('socksjs'); const pool = mysql.createPool({ debug: 1, stream: function () { return new SocksConnection({ port: 3306 }); }, }); Testing pool.execute('SELECT SLEEP(1.1) AS `www`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); }); pool.execute('SELECT SLEEP(1) AS `qqq`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); }); pool.execute('SELECT SLEEP(1) AS `qqq`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); });","s":"createPool(config) — Socks","u":"/node-mysql2/pt-BR/docs/examples/connections/create-pool","h":"#createpoolconfig--socks","p":763},{"i":781,"t":"PoolOptions extends all options from ConnectionOptions: ConnectionOptions Specification PoolOptions Specification","s":"PoolOptions","u":"/node-mysql2/pt-BR/docs/examples/connections/create-pool","h":"#pooloptions","p":763},{"i":783,"t":"MySQL2 provides execute helper which will prepare and query the statement. You can also manually prepare / unprepare statement with prepare / unprepare methods. See detailed documentaion in Prepared Statements. dica If you execute same statement again, it will be picked form a LRU cache which will save query preparation time and give better performance. Usage examples: INSERT SELECT UPDATE DELETE","s":"Prepared Statements","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements","h":"","p":782},{"i":786,"t":"execute(sql: string, values: any[]) promise.js callback.js try { const sql = 'DELETE FROM `users` WHERE `name` = ? LIMIT 1'; const values = ['Page']; const [result, fields] = await connection.execute(sql, values); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'DELETE FROM `users` WHERE `name` = ? LIMIT 1'; const values = ['Page']; connection.execute(sql, values, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); }); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(sql, values)","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/delete","h":"#executesql-values","p":784},{"i":788,"t":"execute(options: QueryOptions) promise.js callback.js try { const sql = 'DELETE FROM `users` WHERE `name` = ? LIMIT 1'; const values = ['Page']; const [result, fields] = await connection.execute({ sql, values, // ... other options }); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'DELETE FROM `users` WHERE `name` = ? LIMIT 1'; const values = ['Page']; connection.execute( { sql, values, // ... other options }, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options)","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/delete","h":"#executeoptions","p":784},{"i":790,"t":"execute(options: QueryOptions, values: any[]) promise.js callback.js try { const sql = 'DELETE FROM `users` WHERE `name` = ? LIMIT 1'; const values = ['Page']; const [result, fields] = await connection.execute( { sql, // ... other options }, values ); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'DELETE FROM `users` WHERE `name` = ? LIMIT 1'; const values = ['Page']; connection.execute( { sql, // ... other options }, values, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options, values)","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/delete","h":"#executeoptions-values","p":784},{"i":793,"t":"ResultSetHeader Specification","s":"ResultSetHeader","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/delete","h":"#resultsetheader","p":784},{"i":795,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/delete","h":"#queryoptions","p":784},{"i":797,"t":"info For queries please see the Simple Queries and Prepared Statements examples.","s":"createPoolCluster","u":"/node-mysql2/pt-BR/docs/examples/connections/createPoolCluster","h":"","p":796},{"i":799,"t":"add(group: string, connectionUri: string) promise.js callback.js import mysql from 'mysql2/promise'; try { const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', 'mysql://root:password@localhost:3306/test'); // poolCluster.add('clusterB', '...'); const connection = await poolCluster.getConnection('clusterA'); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', 'mysql://root:password@localhost:3306/test'); // poolCluster.add('clusterB', '...'); poolCluster.getConnection('clusterA', function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); atenção Don't forget to release the connection when finished by using: connection.release()","s":"add(group, connectionUri)","u":"/node-mysql2/pt-BR/docs/examples/connections/createPoolCluster","h":"#addgroup-connectionuri","p":796},{"i":801,"t":"add(group: string, config: PoolOptions) promise.js callback.js import mysql from 'mysql2/promise'; try { const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { host: 'localhost', user: 'root', database: 'test', // port: 3306, // password: '', }); // poolCluster.add('clusterB', '...'); const connection = await poolCluster.getConnection('clusterA'); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { host: 'localhost', user: 'root', database: 'test', // port: 3306, // password: '', }); // poolCluster.add('clusterB', '...'); poolCluster.getConnection('clusterA', function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); atenção Don't forget to release the connection when finished by using: connection.release()","s":"add(group, config)","u":"/node-mysql2/pt-BR/docs/examples/connections/createPoolCluster","h":"#addgroup-config","p":796},{"i":803,"t":"add(group: string, config: PoolOptions) promise.js callback.js import mysql from 'mysql2/promise'; try { const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { // ... passwordSha1: Buffer.from( '8bb6118f8fd6935ad0876a3be34a717d32708ffd', 'hex' ), }); // poolCluster.add('clusterB', '...'); const connection = await poolCluster.getConnection('clusterA'); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { // ... passwordSha1: Buffer.from('8bb6118f8fd6935ad0876a3be34a717d32708ffd', 'hex'), }); // poolCluster.add('clusterB', '...'); poolCluster.getConnection('clusterA', function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); atenção Don't forget to release the connection when finished by using: connection.release()","s":"add(group, config) — SHA1","u":"/node-mysql2/pt-BR/docs/examples/connections/createPoolCluster","h":"#addgroup-config--sha1","p":796},{"i":805,"t":"add(group: string, config: PoolOptions) promise.js callback.js certs/ca-cert.pem import mysql from 'mysql2/promise'; try { const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { // ... ssl: { // key: fs.readFileSync('./certs/client-key.pem'), // cert: fs.readFileSync('./certs/client-cert.pem') ca: fs.readFileSync('./certs/ca-cert.pem'), }, }); // poolCluster.add('clusterB', '...'); const connection = await poolCluster.getConnection('clusterA'); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { // ... ssl: { // key: fs.readFileSync('./certs/client-key.pem'), // cert: fs.readFileSync('./certs/client-cert.pem') ca: fs.readFileSync('./certs/ca-cert.pem'), }, }); // poolCluster.add('clusterB', '...'); poolCluster.getConnection('clusterA', function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); See ssl/certs. atenção Don't forget to release the connection when finished by using: connection.release()","s":"add(group, config) — SSL","u":"/node-mysql2/pt-BR/docs/examples/connections/createPoolCluster","h":"#addgroup-config--ssl","p":796},{"i":807,"t":"add(group: string, config: PoolOptions) You can use Amazon RDS string as value to ssl property to connect to Amazon RDS MySQL over SSL. In that case https://s3.amazonaws.com/rds-downloads/mysql-ssl-ca-cert.pem CA cert is used: promise.js callback.js import mysql from 'mysql2/promise'; try { const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { // ... host: 'db.id.ap-southeast-2.rds.amazonaws.com', ssl: 'Amazon RDS', }); // poolCluster.add('clusterB', '...'); const connection = await poolCluster.getConnection('clusterA'); // ... some query connection.release(); } catch (err) { console.log(err); } Testing try { const [res] = await connection.query('SHOW `status` LIKE \"Ssl_cipher\"'); await poolCluster.end(); console.log(res); } catch (err) { console.log(err); } const mysql = require('mysql2'); const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { // ... host: 'db.id.ap-southeast-2.rds.amazonaws.com', ssl: 'Amazon RDS', }); // poolCluster.add('clusterB', '...'); poolCluster.getConnection('clusterA', function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); Testing connectionquery('SHOW `status` LIKE \"Ssl_cipher\"', function (err, res) { poolCluster.end(); if (err instanceof Error) { console.log(err); return; } console.log(res); }); atenção Don't forget to release the connection when finished by using: connection.release()","s":"add(group, config) — RDS SSL","u":"/node-mysql2/pt-BR/docs/examples/connections/createPoolCluster","h":"#addgroup-config--rds-ssl","p":796},{"i":809,"t":"Issues #2130 — Update TLS certs for Amazon RDS instances Pull Requests #2119 — fix: make startTls code compatible with Bun #2131 — Update Amazon RDS SSL CA cert","s":"Related Links","u":"/node-mysql2/pt-BR/docs/examples/connections/createPoolCluster","h":"#related-links","p":796},{"i":811,"t":"add(group: string, config: PoolOptions) A.js B.js const mysql = require('mysql2'); const SocksConnection = require('socksjs'); const socksProxy = new SocksConnection({ port: 3306 }); const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { stream: socksProxy, }); // poolCluster.add('clusterB', '...'); const poolNamespace = poolCluster.of('clusterA'); const mysql = require('mysql2'); const SocksConnection = require('socksjs'); const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { debug: 1, stream: function () { return new SocksConnection({ port: 3306 }); }, }); // poolCluster.add('clusterB', '...'); const poolNamespace = poolCluster.of('clusterA'); Testing poolNamespace.execute('SELECT SLEEP(1.1) AS `www`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); }); poolNamespace.execute('SELECT SLEEP(1) AS `qqq`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); }); poolNamespace.execute('SELECT SLEEP(1) AS `qqq`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); });","s":"add(group, config) — Socks","u":"/node-mysql2/pt-BR/docs/examples/connections/createPoolCluster","h":"#addgroup-config--socks","p":796},{"i":814,"t":"PoolOptions extends all options from ConnectionOptions: ConnectionOptions Specification PoolOptions Specification","s":"PoolOptions","u":"/node-mysql2/pt-BR/docs/examples/connections/createPoolCluster","h":"#pooloptions","p":796},{"i":817,"t":"execute(sql: string, values: any[]) promise.js callback.js try { const sql = 'SELECT * FROM `users` WHERE `name` = ? AND `age` > ?'; const values = ['Page', 45]; const [rows, fields] = await connection.execute(sql, values); console.log(rows); console.log(fields); } catch (err) { console.log(err); } const sql = 'SELECT * FROM `users` WHERE `name` = ? AND `age` > ?'; const values = ['Page', 45]; connection.execute(sql, values, (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows); console.log(fields); }); rows contains rows returned by server fields contains extra meta data about rows, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(sql, values)","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/select","h":"#executesql-values","p":815},{"i":819,"t":"execute(options: QueryOptions) promise.js callback.js try { const sql = 'SELECT * FROM `users` WHERE `name` = ? AND `age` > ?'; const values = ['Page', 45]; const [rows, fields] = await connection.execute({ sql, values, // ... other options }); console.log(rows); console.log(fields); } catch (err) { console.log(err); } const sql = 'SELECT * FROM `users` WHERE `name` = ? AND `age` > ?'; const values = ['Page', 45]; connection.execute( { sql, values, // ... other options }, (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows); console.log(fields); } ); rows contains rows returned by server fields contains extra meta data about rows, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options)","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/select","h":"#executeoptions","p":815},{"i":821,"t":"execute(options: QueryOptions, values: any[]) promise.js callback.js try { const sql = 'SELECT * FROM `users` WHERE `name` = ? AND `age` > ?'; const values = ['Page', 45]; const [rows, fields] = await connection.execute( { sql, // ... other options }, values ); console.log(rows); console.log(fields); } catch (err) { console.log(err); } const sql = 'SELECT * FROM `users` WHERE `name` = ? AND `age` > ?'; const values = ['Page', 45]; connection.execute( { sql, // ... other options }, values, (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows); console.log(fields); } ); rows contains rows returned by server fields contains extra meta data about rows, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options, values)","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/select","h":"#executeoptions-values","p":815},{"i":824,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/select","h":"#queryoptions","p":815},{"i":827,"t":"execute(sql: string, values: any[]) promise.js callback.js try { const sql = 'UPDATE `users` SET `age` = ? WHERE `name` = ? LIMIT 1'; const values = [20, 'Josh']; const [result, fields] = await connection.execute(sql, values); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'UPDATE `users` SET `age` = ? WHERE `name` = ? LIMIT 1'; const values = [20, 'Josh']; connection.execute(sql, values, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); }); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(sql, values)","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/update","h":"#executesql-values","p":825},{"i":829,"t":"execute(options: QueryOptions) promise.js callback.js try { const sql = 'UPDATE `users` SET `age` = ? WHERE `name` = ? LIMIT 1'; const values = [20, 'Josh']; const [result, fields] = await connection.execute({ sql, values, // ... other options }); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'UPDATE `users` SET `age` = ? WHERE `name` = ? LIMIT 1'; const values = [20, 'Josh']; connection.execute( { sql, values, // ... other options }, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options)","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/update","h":"#executeoptions","p":825},{"i":831,"t":"execute(options: QueryOptions, values: any[]) promise.js callback.js try { const sql = 'UPDATE `users` SET `age` = ? WHERE `name` = ? LIMIT 1'; const values = [20, 'Josh']; const [result, fields] = await connection.execute( { sql, // ... other options }, values ); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'UPDATE `users` SET `age` = ? WHERE `name` = ? LIMIT 1'; const values = [20, 'Josh']; connection.execute( { sql, // ... other options }, values, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options, values)","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/update","h":"#executeoptions-values","p":825},{"i":834,"t":"ResultSetHeader Specification","s":"ResultSetHeader","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/update","h":"#resultsetheader","p":825},{"i":836,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/update","h":"#queryoptions","p":825},{"i":838,"t":"await.js co.js .babelrc package.json 'use strict'; const mysql = require('mysql2/promise'); async function test() { const c = await mysql.createConnection({ port: 3306, user: 'testuser', namedPlaceholders: true, password: 'testpassword', }); console.log('connected!'); const [rows, fields] = await c.query('show databases'); console.log(rows); try { const [rows, fields] = await c.query('some invalid sql here'); } catch (e) { console.log('caught exception!', e); } console.log(await c.execute('select sleep(0.5)')); console.log('after first sleep'); console.log(await c.execute('select sleep(0.5)')); console.log('after second sleep'); let start = +new Date(); console.log( await Promise.all([ c.execute('select sleep(2.5)'), c.execute('select sleep(2.5)'), ]) ); console.log( 'after 2+3 parallel sleep which is in fact not parallel because commands are queued per connection' ); let end = +new Date(); console.log(end - start); await c.end(); const p = mysql.createPool({ port: 3306, user: 'testuser', namedPlaceholders: true, password: 'testpassword', }); console.log(await p.execute('select sleep(0.5)')); console.log('after first pool sleep'); start = +new Date(); console.log( await Promise.all([ p.execute('select sleep(2.5)'), p.execute('select sleep(2.5)'), ]) ); console.log('after 2+3 parallel pool sleep'); end = +new Date(); console.log(end - start); await p.end(); } test() .then(() => { console.log('done'); }) .catch((err) => { console.log('error!', err); throw err; }); 'use strict'; const mysql = require('mysql2/promise'); const co = require('co'); co(function* () { const c = yield mysql.createConnection({ port: 3306, user: 'root', namedPlaceholders: true, }); const rows = yield c.query('show databases'); console.log(rows); console.log(yield c.execute('select 1+:toAdd as qqq', { toAdd: 10 })); yield c.end(); }) .then(function () { console.log('done'); }) .catch(function (err) { console.log(err); throw err; }); { \"plugins\": [\"transform-async-to-generator\"] } { \"name\": \"promise-co-await\", \"version\": \"1.0.0\", \"description\": \"\", \"main\": \"await.js\", \"scripts\": { \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\" }, \"author\": \"\", \"license\": \"ISC\", \"dependencies\": { \"babel-cli\": \"^6.9.0\" } }","s":"await — co","u":"/node-mysql2/pt-BR/docs/examples/promise-wrapper/co-await","h":"","p":837},{"i":840,"t":"info For Prepared Statements or Placeholders / Parameters examples, please see here. Usage examples: INSERT SELECT UPDATE DELETE","s":"Simple Queries","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries","h":"","p":839},{"i":842,"t":"The examples below also work for the execute method.","s":"INSERT","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/insert","h":"","p":841},{"i":844,"t":"query(sql: string) promise.js callback.js try { const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (\"Josh\", 19), (\"Page\", 45)'; const [result, fields] = await connection.query(sql); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (\"Josh\", 19), (\"Page\", 45)'; connection.query(sql, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); }); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(sql)","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/insert","h":"#querysql","p":841},{"i":846,"t":"query(options: QueryOptions) promise.js callback.js try { const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (\"Josh\", 19), (\"Page\", 45)'; const [result, fields] = await connection.query({ sql, // ... other options }); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (\"Josh\", 19), (\"Page\", 45)'; connection.query( { sql, // ... other options }, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(options)","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/insert","h":"#queryoptions","p":841},{"i":849,"t":"ResultSetHeader Specification","s":"ResultSetHeader","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/insert","h":"#resultsetheader","p":841},{"i":851,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/insert","h":"#queryoptions-1","p":841},{"i":854,"t":"execute(sql: string, values: any[]) promise.js callback.js try { const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (?, ?), (?,?)'; const values = ['Josh', 19, 'Page', 45]; const [result, fields] = await connection.execute(sql, values); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (?, ?), (?,?)'; const values = ['Josh', 19, 'Page', 45]; connection.execute(sql, values, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); }); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(sql, values)","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/insert","h":"#executesql-values","p":852},{"i":856,"t":"execute(options: QueryOptions) promise.js callback.js try { const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (?, ?), (?,?)'; const values = ['Josh', 19, 'Page', 45]; const [result, fields] = await connection.execute({ sql, values, // ... other options }); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (?, ?), (?,?)'; const values = ['Josh', 19, 'Page', 45]; connection.execute( { sql, values, // ... other options }, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options)","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/insert","h":"#executeoptions","p":852},{"i":858,"t":"execute(options: QueryOptions, values: any[]) promise.js callback.js try { const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (?, ?), (?,?)'; const values = ['Josh', 19, 'Page', 45]; const [result, fields] = await connection.execute( { sql, // ... other options }, values ); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (?, ?), (?,?)'; const values = ['Josh', 19, 'Page', 45]; connection.execute( { sql, // ... other options }, values, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options, values)","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/insert","h":"#executeoptions-values","p":852},{"i":861,"t":"ResultSetHeader Specification","s":"ResultSetHeader","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/insert","h":"#resultsetheader","p":852},{"i":863,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/pt-BR/docs/examples/queries/prepared-statements/insert","h":"#queryoptions","p":852},{"i":865,"t":"The examples below also work for the execute method.","s":"UPDATE","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/update","h":"","p":864},{"i":867,"t":"query(sql: string) promise.js callback.js try { const sql = 'UPDATE `users` SET `age` = 20 WHERE `name` = \"Josh\" LIMIT 1'; const [result, fields] = await connection.query(sql); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'UPDATE `users` SET `age` = 20 WHERE `name` = \"Josh\" LIMIT 1'; connection.query(sql, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); }); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(sql)","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/update","h":"#querysql","p":864},{"i":869,"t":"query(options: QueryOptions) promise.js callback.js try { const sql = 'UPDATE `users` SET `age` = 20 WHERE `name` = \"Josh\" LIMIT 1'; const [result, fields] = await connection.query({ sql, // ... other options }); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'UPDATE `users` SET `age` = 20 WHERE `name` = \"Josh\" LIMIT 1'; connection.query( { sql, // ... other options }, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(options)","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/update","h":"#queryoptions","p":864},{"i":872,"t":"ResultSetHeader Specification","s":"ResultSetHeader","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/update","h":"#resultsetheader","p":864},{"i":874,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/update","h":"#queryoptions-1","p":864},{"i":876,"t":"The examples below also work for the execute method.","s":"DELETE","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/delete","h":"","p":875},{"i":878,"t":"query(sql: string) promise.js callback.js try { const sql = 'DELETE FROM `users` WHERE `name` = \"Page\" LIMIT 1'; const [result, fields] = await connection.query(sql); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'DELETE FROM `users` WHERE `name` = \"Page\" LIMIT 1'; connection.query(sql, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); }); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(sql)","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/delete","h":"#querysql","p":875},{"i":880,"t":"query(options: QueryOptions) promise.js callback.js try { const sql = 'DELETE FROM `users` WHERE `name` = \"Page\" LIMIT 1'; const [result, fields] = await connection.query({ sql, // ... other options }); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'DELETE FROM `users` WHERE `name` = \"Page\" LIMIT 1'; connection.query( { sql, // ... other options }, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(options)","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/delete","h":"#queryoptions","p":875},{"i":883,"t":"ResultSetHeader Specification","s":"ResultSetHeader","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/delete","h":"#resultsetheader","p":875},{"i":885,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/delete","h":"#queryoptions-1","p":875},{"i":887,"t":"index.js 'use strict'; const mysql = require('mysql2'); const ClientFlags = require('mysql2/lib/constants/client.js'); const server = mysql.createServer(); server.listen(3307); server.on('connection', (conn) => { console.log('connection'); conn.serverHandshake({ protocolVersion: 10, serverVersion: 'node.js rocks', connectionId: 1234, statusFlags: 2, characterSet: 8, capabilityFlags: 0xffffff ^ ClientFlags.COMPRESS, }); conn.on('field_list', (table, fields) => { console.log('field list:', table, fields); conn.writeEof(); }); const remote = mysql.createConnection({ user: 'root', database: 'dbname', host: 'server.example.com', password: 'secret', }); conn.on('query', (sql) => { console.log(`proxying query: ${sql}`); remote.query(sql, function (err) { // overloaded args, either (err, result :object) // or (err, rows :array, columns :array) if (Array.isArray(arguments[1])) { // response to a 'select', 'show' or similar const rows = arguments[1], columns = arguments[2]; console.log('rows', rows); console.log('columns', columns); conn.writeTextResult(rows, columns); } else { // response to an 'insert', 'update' or 'delete' const result = arguments[1]; console.log('result', result); conn.writeOk(result); } }); }); conn.on('end', remote.end.bind(remote)); });","s":"MySQL Proxy","u":"/node-mysql2/pt-BR/docs/examples/tests/mysql-proxy","h":"","p":886},{"i":889,"t":"The examples below also work for the execute method.","s":"SELECT","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/select","h":"","p":888},{"i":891,"t":"query(sql: string) promise.js callback.js try { const sql = 'SELECT * FROM `users` WHERE `name` = \"Page\" AND `age` > 45'; const [rows, fields] = await connection.query(sql); console.log(rows); console.log(fields); } catch (err) { console.log(err); } const sql = 'SELECT * FROM `users` WHERE `name` = \"Page\" AND `age` > 45'; connection.query(sql, (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows); console.log(fields); }); rows contains rows returned by server fields contains extra meta data about rows, if available info The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(sql)","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/select","h":"#querysql","p":888},{"i":893,"t":"query(options: QueryOptions) promise.js callback.js try { const sql = 'SELECT * FROM `users` WHERE `name` = \"Page\" AND `age` > 45'; const [rows, fields] = await connection.query({ sql, // ... other options }); console.log(rows); console.log(fields); } catch (err) { console.log(err); } const sql = 'SELECT * FROM `users` WHERE `name` = \"Page\" AND `age` > 45'; connection.query( { sql, // ... other options }, (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows); console.log(fields); } ); rows contains rows returned by server fields contains extra meta data about rows, if available info The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(options)","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/select","h":"#queryoptions","p":888},{"i":895,"t":"query(options: QueryOptions) promise.js callback.js try { const sql = 'SELECT * FROM `users` WHERE `name` = \"Page\" AND `age` > 45'; const [rows, fields] = await connection.query({ sql, rowsAsArray: true, // ... other options }); console.log(rows); console.log(fields); } catch (err) { console.log(err); } const sql = 'SELECT * FROM `users` WHERE `name` = \"Page\" AND `age` > 45'; connection.query( { sql, rowsAsArray: true, // ... other options }, (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows); console.log(fields); } ); rows contains rows returned by server as array fields contains extra meta data about rows, if available info The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(options) — Row as Array","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/select","h":"#queryoptions--row-as-array","p":888},{"i":898,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/pt-BR/docs/examples/queries/simple-queries/select","h":"#queryoptions-1","p":888},{"i":900,"t":"index.js 'use strict'; const pool = require('mysql2').createPool({ host: 'localhost', user: 'root', database: 'test', password: 'root', }); setInterval(() => { for (let i = 0; i < 5; ++i) { pool.query((err, rows, fields) => { console.log(rows, fields); // Connection is automatically released once query resolves }); } }, 1000); setInterval(() => { for (let i = 0; i < 5; ++i) { pool.getConnection((err, db) => { db.query('select sleep(0.5) as qqq', (err, rows, fields) => { console.log(rows, fields); db.release(); }); }); } }, 1000);","s":"Pool","u":"/node-mysql2/pt-BR/docs/examples/tests/pool","h":"","p":899},{"i":902,"t":"index.js 'use strict'; const mysql = require('mysql2'); const flags = require('mysql2/lib/constants/client.js'); const auth = require('mysql2/lib/auth_41.js'); function authenticate(params, cb) { console.log(params); const doubleSha = auth.doubleSha1('pass123'); const isValid = auth.verifyToken( params.authPluginData1, params.authPluginData2, params.authToken, doubleSha ); if (isValid) { cb(null); } else { // for list of codes lib/constants/errors.js cb(null, { message: 'wrong password dude', code: 1045 }); } } const server = mysql.createServer(); server.listen(3333); server.on('connection', (conn) => { // we can deny connection here: // conn.writeError({ message: 'secret', code: 123 }); // conn.close(); conn.serverHandshake({ protocolVersion: 10, serverVersion: '5.6.10', // 'node.js rocks', connectionId: 1234, statusFlags: 2, characterSet: 8, // capabilityFlags: 0xffffff, // capabilityFlags: -2113931265, capabilityFlags: 2181036031, authCallback: authenticate, }); conn.on('field_list', (table, fields) => { console.log('FIELD LIST:', table, fields); conn.writeEof(); }); conn.on('query', (query) => { conn.writeColumns([ { catalog: 'def', schema: 'test', table: 'test_table', orgTable: 'test_table', name: 'beta', orgName: 'beta', characterSet: 33, columnLength: 384, columnType: 253, flags: 0, decimals: 0, }, ]); conn.writeTextRow(['test тест テスト փորձարկում পরীক্ষা kiểm tra ']); conn.writeTextRow(['ტესტი પરીક્ષણ מבחן פּרובירן اختبار परीक्षण']); conn.writeEof(); conn.close(); }); });","s":"Server","u":"/node-mysql2/pt-BR/docs/examples/tests/server","h":"","p":901},{"i":904,"t":"index.ts /** * The types are explicity for learning purpose * By extending the `RowDataPacket`, you can use your Interface in `query` and `execute` */ import mysql, { ConnectionOptions, ProcedureCallPacket, ResultSetHeader, RowDataPacket, } from 'mysql2/promise'; interface User extends RowDataPacket { id: number; name: string; } const isResultSetHeader = (data: unknown): data is ResultSetHeader => { if (!data || typeof data !== 'object') return false; const keys = [ 'fieldCount', 'affectedRows', 'insertId', 'info', 'serverStatus', 'warningStatus', 'changedRows', ]; return keys.every((key) => key in data); }; (async () => { const access: ConnectionOptions = { host: '', user: '', password: '', database: '', }; const conn = await mysql.createConnection(access); /** Deleting the `users` table, if it exists */ await conn.query('DROP TABLE IF EXISTS `users`;'); /** Creating a minimal user table */ await conn.query( 'CREATE TABLE `users` (`id` INT(11) AUTO_INCREMENT, `name` VARCHAR(50), PRIMARY KEY (`id`));' ); /** Inserting some users */ const [inserted] = await conn.execute( 'INSERT INTO `users`(`name`) VALUES(?), (?), (?), (?);', ['Josh', 'John', 'Marie', 'Gween'] ); console.log('Inserted:', inserted.affectedRows); /** Deleting the `getUsers` procedure, if it exists */ await conn.query('DROP PROCEDURE IF EXISTS getUsers'); /** Creating a procedure to get the users */ await conn.query(` CREATE PROCEDURE getUsers() BEGIN SELECT * FROM users ORDER BY name ASC; END `); /** Getting users */ const [procedureResult] = await conn.query>('CALL getUsers()'); procedureResult.forEach((users) => { /** By perform a `SELECT` or `SHOW`, The last item of `procedureResult` always be a `ResultSetHeader` */ if (isResultSetHeader(users)) { console.log('----------------'); console.log('Affected Rows:', users.affectedRows); } else { users.forEach((user) => { console.log('----------------'); console.log('id: ', user.id); console.log('name:', user.name); }); } }); await conn.end(); })(); /** Output * * Inserted: 4 * ---------------- * id: 4 * name: Gween * ---------------- * id: 2 * name: John * ---------------- * id: 1 * name: Josh * ---------------- * id: 3 * name: Marie * ---------------- * Affected Rows: 0 */","s":"Procedure Call Packet","u":"/node-mysql2/pt-BR/docs/examples/typescript/procedure-call/index","h":"","p":903},{"i":906,"t":"index.ts /** * The types are explicity for learning purpose * By extending the `RowDataPacket`, you can use your Interface in `query` and `execute` */ import mysql, { ConnectionOptions, ProcedureCallPacket, ResultSetHeader, RowDataPacket, } from 'mysql2/promise'; interface User extends RowDataPacket { /** id */ 0: number; /** name */ 1: string; } const isResultSetHeader = (data: unknown): data is ResultSetHeader => { if (!data || typeof data !== 'object') return false; const keys = [ 'fieldCount', 'affectedRows', 'insertId', 'info', 'serverStatus', 'warningStatus', 'changedRows', ]; return keys.every((key) => key in data); }; (async () => { const access: ConnectionOptions = { host: '', user: '', password: '', database: '', rowsAsArray: true, }; const conn = await mysql.createConnection(access); /** Deleting the `users` table, if it exists */ await conn.query('DROP TABLE IF EXISTS `users`;'); /** Creating a minimal user table */ await conn.query( 'CREATE TABLE `users` (`id` INT(11) AUTO_INCREMENT, `name` VARCHAR(50), PRIMARY KEY (`id`));' ); /** Inserting some users */ const [inserted] = await conn.execute( 'INSERT INTO `users`(`name`) VALUES(?), (?), (?), (?);', ['Josh', 'John', 'Marie', 'Gween'] ); console.log('Inserted:', inserted.affectedRows); /** Deleting the `getUsers` procedure, if it exists */ await conn.query('DROP PROCEDURE IF EXISTS getUsers'); /** Creating a procedure to get the users */ await conn.query(` CREATE PROCEDURE getUsers() BEGIN SELECT * FROM users ORDER BY name ASC; END `); /** Getting users */ const [procedureResult] = await conn.query>('CALL getUsers()'); procedureResult.forEach((users) => { /** By perform a `SELECT` or `SHOW`, The last item of `procedureResult` always be a `ResultSetHeader` */ if (isResultSetHeader(users)) { console.log('----------------'); console.log('Affected Rows:', users.affectedRows); } else { users.forEach((user) => { console.log('----------------'); console.log('id: ', user[0]); console.log('name:', user[1]); }); } }); await conn.end(); })(); /** Output * * Inserted: 4 * ---------------- * id: 4 * name: Gween * ---------------- * id: 2 * name: John * ---------------- * id: 1 * name: Josh * ---------------- * id: 3 * name: Marie * ---------------- * Affected Rows: 0 */","s":"Procedure Call Packet (Row as Array)","u":"/node-mysql2/pt-BR/docs/examples/typescript/procedure-call/row-as-array","h":"","p":905},{"i":908,"t":"index.ts /** * The types are explicity for learning purpose * By extending the `RowDataPacket`, you can use your Interface in `query` and `execute` */ import mysql, { ConnectionOptions, ResultSetHeader, RowDataPacket, } from 'mysql2/promise'; interface User extends RowDataPacket { id: number; name: string; } (async () => { const access: ConnectionOptions = { host: '', user: '', password: '', database: '', multipleStatements: true, }; const conn = await mysql.createConnection(access); /** Deleting the `users` table, if it exists */ await conn.query('DROP TABLE IF EXISTS `users`;'); /** Creating a minimal user table */ await conn.query( 'CREATE TABLE `users` (`id` INT(11) AUTO_INCREMENT, `name` VARCHAR(50), PRIMARY KEY (`id`));' ); /** Inserting some users */ const [inserted] = await conn.execute( 'INSERT INTO `users`(`name`) VALUES(?), (?), (?), (?);', ['Josh', 'John', 'Marie', 'Gween'] ); console.log('Inserted:', inserted.affectedRows); /** Getting users */ const [rows] = await conn.query( [ 'SELECT * FROM `users` ORDER BY `name` ASC LIMIT 2;', 'SELECT * FROM `users` ORDER BY `name` ASC LIMIT 2 OFFSET 2;', ].join(' ') ); rows.forEach((users) => { users.forEach((user) => { console.log('-----------'); console.log('id: ', user.id); console.log('name:', user.name); }); }); await conn.end(); })(); /** Output * * Inserted: 4 * ----------- * id: 4 * name: Gween * ----------- * id: 2 * name: John * ----------- * id: 1 * name: Josh * ----------- * id: 3 * name: Marie */","s":"Row Data Packet (Multi Statements)","u":"/node-mysql2/pt-BR/docs/examples/typescript/row-data/multi-statements","h":"","p":907},{"i":910,"t":"index.ts db.ts /** * The types are explicity for learning purpose */ import { PoolOptions } from 'mysql2/promise'; import { MySQL } from './db.js'; interface User extends RowDataPacket { id: number; name: string; } const access: PoolOptions = { host: '', user: '', password: '', database: '', }; (async () => { const mysql = new MySQL(access); /** Deleting the `users` table, if it exists */ await mysql.queryResult('DROP TABLE IF EXISTS `users`;'); /** Creating a minimal user table */ await mysql.queryResult( 'CREATE TABLE `users` (`id` INT(11) AUTO_INCREMENT, `name` VARCHAR(50), PRIMARY KEY (`id`));' ); /** Inserting some users */ const [inserted] = await mysql.executeResult( 'INSERT INTO `users`(`name`) VALUES(?), (?), (?), (?);', ['Josh', 'John', 'Marie', 'Gween'] ); console.log('Inserted:', inserted.affectedRows); /** Getting users */ const [users] = await mysql.queryRows( 'SELECT * FROM `users` ORDER BY `name` ASC;' ); users.forEach((user: User) => { console.log('-----------'); console.log('id: ', user.id); console.log('name:', user.name); }); await mysql.connection.end(); })(); /** Output * * Inserted: 4 * ----------- * id: 4 * name: Gween * ----------- * id: 2 * name: John * ----------- * id: 1 * name: Josh * ----------- * id: 3 * name: Marie */ /** * The types are explicity for learning purpose */ import { createPool, PoolOptions, Pool, ResultSetHeader, RowDataPacket, } from 'mysql2/promise'; export class MySQL { private conn: Pool; private credentials: PoolOptions; constructor(credentials: PoolOptions) { this.credentials = credentials; this.conn = createPool(this.credentials); } /** A random method to simulate a step before to get the class methods */ private ensureConnection() { if (!this?.conn) this.conn = createPool(this.credentials); } /** For `SELECT` and `SHOW` */ get queryRows() { this.ensureConnection(); return this.conn.query.bind(this.conn); } /** For `SELECT` and `SHOW` with `rowAsArray` as `true` */ get queryRowsAsArray() { this.ensureConnection(); return this.conn.query.bind(this.conn); } /** For `INSERT`, `UPDATE`, etc. */ get queryResult() { this.ensureConnection(); return this.conn.query.bind(this.conn); } /** For multiple `INSERT`, `UPDATE`, etc. with `multipleStatements` as `true` */ get queryResults() { this.ensureConnection(); return this.conn.query.bind(this.conn); } /** For `SELECT` and `SHOW` */ get executeRows() { this.ensureConnection(); return this.conn.execute.bind(this.conn); } /** For `SELECT` and `SHOW` with `rowAsArray` as `true` */ get executeRowsAsArray() { this.ensureConnection(); return this.conn.execute.bind(this.conn); } /** For `INSERT`, `UPDATE`, etc. */ get executeResult() { this.ensureConnection(); return this.conn.execute.bind(this.conn); } /** For multiple `INSERT`, `UPDATE`, etc. with `multipleStatements` as `true` */ get executeResults() { this.ensureConnection(); return this.conn.execute.bind(this.conn); } /** Expose the Pool Connection */ get connection() { return this.conn; } }","s":"Basic Custom Class","u":"/node-mysql2/pt-BR/docs/examples/typescript/basic-custom-class","h":"","p":909},{"i":912,"t":"index.ts /** * The types are explicity for learning purpose * By extending the `RowDataPacket`, you can use your Interface in `query` and `execute` */ import mysql, { ConnectionOptions, ResultSetHeader, RowDataPacket, } from 'mysql2/promise'; interface User extends RowDataPacket { id: number; name: string; } (async () => { const access: ConnectionOptions = { host: '', user: '', password: '', database: '', }; const conn = await mysql.createConnection(access); /** Deleting the `users` table, if it exists */ await conn.query('DROP TABLE IF EXISTS `users`;'); /** Creating a minimal user table */ await conn.query( 'CREATE TABLE `users` (`id` INT(11) AUTO_INCREMENT, `name` VARCHAR(50), PRIMARY KEY (`id`));' ); /** Inserting some users */ const [inserted] = await conn.execute( 'INSERT INTO `users`(`name`) VALUES(?), (?), (?), (?);', ['Josh', 'John', 'Marie', 'Gween'] ); console.log('Inserted:', inserted.affectedRows); /** Getting users */ const [users] = await conn.query( 'SELECT * FROM `users` ORDER BY `name` ASC;' ); users.forEach((user) => { console.log('-----------'); console.log('id: ', user.id); console.log('name:', user.name); }); await conn.end(); })(); /** Output * * Inserted: 4 * ----------- * id: 4 * name: Gween * ----------- * id: 2 * name: John * ----------- * id: 1 * name: Josh * ----------- * id: 3 * name: Marie */","s":"Row Data Packet","u":"/node-mysql2/pt-BR/docs/examples/typescript/row-data/index","h":"","p":911},{"i":914,"t":"index.ts /** * The types are explicity for learning purpose * By extending the `RowDataPacket`, you can use your Interface in `query` and `execute` */ import mysql, { ConnectionOptions, ResultSetHeader, RowDataPacket, } from 'mysql2/promise'; interface User extends RowDataPacket { /** id */ 0: number; /** name */ 1: string; } (async () => { const access: ConnectionOptions = { host: '', user: '', password: '', database: '', rowsAsArray: true, }; const conn = await mysql.createConnection(access); /** Deleting the `users` table, if it exists */ await conn.query('DROP TABLE IF EXISTS `users`;'); /** Creating a minimal user table */ await conn.query( 'CREATE TABLE `users` (`id` INT(11) AUTO_INCREMENT, `name` VARCHAR(50), PRIMARY KEY (`id`));' ); /** Inserting some users */ const [inserted] = await conn.execute( 'INSERT INTO `users`(`name`) VALUES(?), (?), (?), (?);', ['Josh', 'John', 'Marie', 'Gween'] ); console.log('Inserted:', inserted.affectedRows); /** Getting users */ const [users] = await conn.query( 'SELECT * FROM `users` ORDER BY `name` ASC;' ); users.forEach((user) => { console.log('-----------'); console.log('id: ', user[0]); console.log('name:', user[1]); }); await conn.end(); })(); /** Output * * Inserted: 4 * ----------- * id: 4 * name: Gween * ----------- * id: 2 * name: John * ----------- * id: 1 * name: Josh * ----------- * id: 3 * name: Marie */","s":"Row Data Packet (Row as Array)","u":"/node-mysql2/pt-BR/docs/examples/typescript/row-data/row-as-array","h":"","p":913},{"i":916,"t":"This section provides answers to commonly asked questions about MySQL2. dica To explore the FAQs, please use the sidebar navigation on desktop or access the menu on mobile devices.","s":"Frequently Asked Questions","u":"/node-mysql2/pt-BR/docs/faq","h":"","p":915},{"i":918,"t":"index.ts /** * The types are explicity for learning purpose * By extending the `RowDataPacket`, you can use your Interface in `query` and `execute` */ import mysql, { ConnectionOptions, ResultSetHeader, RowDataPacket, } from 'mysql2/promise'; interface User extends RowDataPacket { /** id */ 0: number; /** name */ 1: string; } (async () => { const access: ConnectionOptions = { host: '', user: '', password: '', database: '', multipleStatements: true, rowsAsArray: true, }; const conn = await mysql.createConnection(access); /** Deleting the `users` table, if it exists */ await conn.query('DROP TABLE IF EXISTS `users`;'); /** Creating a minimal user table */ await conn.query( 'CREATE TABLE `users` (`id` INT(11) AUTO_INCREMENT, `name` VARCHAR(50), PRIMARY KEY (`id`));' ); /** Inserting some users */ const [inserted] = await conn.execute( 'INSERT INTO `users`(`name`) VALUES(?), (?), (?), (?);', ['Josh', 'John', 'Marie', 'Gween'] ); console.log('Inserted:', inserted.affectedRows); /** Getting users */ const [rows] = await conn.query( [ 'SELECT * FROM `users` ORDER BY `name` ASC LIMIT 2;', 'SELECT * FROM `users` ORDER BY `name` ASC LIMIT 2 OFFSET 2;', ].join(' ') ); rows.forEach((users) => { users.forEach((user) => { console.log('-----------'); console.log('id: ', user[0]); console.log('name:', user[1]); }); }); await conn.end(); })(); /** Output * * Inserted: 4 * ----------- * id: 4 * name: Gween * ----------- * id: 2 * name: John * ----------- * id: 1 * name: Josh * ----------- * id: 3 * name: Marie */","s":"Row Data Packet (Multi Statements and Row as Array)","u":"/node-mysql2/pt-BR/docs/examples/typescript/row-data/row-as-array-multi-statements","h":"","p":917},{"i":920,"t":"O projeto MySQL2 é uma continuação do MySQL-Native. O código do analisador de protocolo (protocol parser) foi reescrito do zero e a API foi alterada para corresponder ao popular mysqljs/mysql. A equipe do MySQL2 está trabalhando em conjunto com a equipe do mysqljs/mysql para fatorar o código compartilhado e movê-lo para a organização mysqljs. O MySQL2 é maioritariamente compatível com a API do mysqljs e suporta a maioria de suas funcionalidades. O MySQL2 também oferece essas funcionalidades adicionais: Desempenho mais rápido / melhor Instruções Preparadas (Prepared Statements) Protocolo de log binário MySQL (MySQL Binary Log Protocol) Servidor MySQL Estende o suporte para Encoding and Collation Promise Wrapper Compressão SSL e Authentication Switch Streams Personalizados Conjunto de Conexões (Pooling)","s":"História e Porque o MySQL2","u":"/node-mysql2/pt-BR/docs/history-and-why-mysq2","h":"","p":919},{"i":922,"t":"The Stability Badges are indications of a section's stability. The stability indices are as follows: 0Deprecated The feature might generate warnings and does not assure backward compatibility. Experimental: These features are not bound by semantic versioning. They may undergo non-backward compatible changes or be removed in future releases. Their use in production is discouraged. Use caution with Experimental features, especially in libraries. Users might not expect changes from these unstable features. To reduce surprises, consider using a command-line flag for Experimental features. Experimental features are classified into stages: 1Experimental Experimental features at this stage are currently in development and prone to considerable changes. 1.1Early Development Experimental features at this stage are approaching minimum viability. 1.2Release Candidate Experimental features are close to reaching stability. Major changes are not expected, but they could still occur based on user feedback. Testing and feedback are important to ascertain the readiness of these features for stable classification. 2Stable Compatibility with the MySQL ecosystem is a high priority. 3Legacy This feature, while not likely to be removed and still subject to semantic versioning, is not under active maintenance and other options are available. Features are classified as legacy instead of deprecated when they cause no harm and have widespread use in the MySQL ecosystem. It's unlikely that bugs in legacy features will be addressed.","s":"Stability Badges","u":"/node-mysql2/pt-BR/docs/stability-badges","h":"","p":921},{"i":924,"t":"This section details error handling techniques in MySQL2. It covers essential error management strategies for methods such as createConnection, createPool, createPoolCluster, execute and query.","s":"How to handle errors?","u":"/node-mysql2/pt-BR/docs/faq/how-to-handle-errors","h":"","p":923},{"i":926,"t":"createConnection 2Stable This solution has been tested and confirmed as the correct answer. Handling connection errors by adding an error event listener: const mysql = require('mysql2'); connection = mysql.createConnection({ host: '', user: '', database: '', }); connection.addListener('error', (err) => { if (err instanceof Error) { console.log(`createConnection error:`, err); } }); createPool 2Stable This solution has been tested. Handling connection errors through callback's err parameter: const mysql = require('mysql2'); const pool = mysql.createPool({ host: '', user: '', database: '', }); pool.getConnection((err, connection) => { if (err instanceof Error) { console.log('pool.getConnection error:', err); return; } }); createPoolCluster 2Stable This solution has been tested. Handling connection errors through callback's err parameter: const mysql = require('mysql2'); const poolCluster = mysql.createPoolCluster(); poolCluster.add('NodeI', { host: '', user: '', database: '', }); poolCluster.getConnection('NodeI', (err, connection) => { if (err instanceof Error) { console.log('poolCluster.getConnection error:', err); return; } }); execute 2Stable This solution has been tested. Handling execute errors through callback's err parameter: connection.execute('SELEC 1 + 1', (err, rows) => { if (err instanceof Error) { console.log('execute error:', err); return; } console.log(rows); }); It will work for both createConnection, createPool and createPoolCluster connections. query 2Stable This solution has been tested. Handling query errors through callback's err parameter: connection.query('SELEC 1 + 1', (err, rows) => { if (err instanceof Error) { console.log('query error:', err); return; } console.log(rows); }); It will work for both createConnection, createPool and createPoolCluster connections.","s":"Using callbacks","u":"/node-mysql2/pt-BR/docs/faq/how-to-handle-errors","h":"#using-callbacks","p":923},{"i":928,"t":"createConnection 2Stable This solution has been tested and confirmed as the correct answer. Handling connection errors through try-catch block: import mysql from 'mysql2/promise'; try { const connection = await mysql.createConnection({ host: '', user: '', database: '', }); } catch (err) { if (err instanceof Error) { console.log(err); } } createPool 2Stable This solution has been tested. Handling connection errors through try-catch block: import mysql from 'mysql2/promise'; const pool = mysql.createPool({ host: '', user: '', database: '', }); try { const connection = await pool.getConnection(); } catch (err) { if (err instanceof Error) { console.log(err); } } createPoolCluster 2Stable This solution has been tested. Handling connection errors through try-catch block: import mysql from 'mysql2/promise'; const poolCluster = mysql.createPoolCluster(); poolCluster.add('NodeI', { host: '', user: '', database: '', }); try { await poolCluster.getConnection('NodeI'); } catch (err) { if (err instanceof Error) { console.log('createConnection error:', err); } } execute 2Stable This solution has been tested. Handling execute errors through try-catch block: try { const [rows] = await connection.execute('SELEC 1 + 1'); console.log(rows); } catch (err) { if (err instanceof Error) { console.log('execute error:', err); } } It will work for both createConnection, createPool and createPoolCluster connections. query 2Stable This solution has been tested. Handling query errors through try-catch block: try { const [rows] = await connection.query('SELEC 1 + 1'); console.log(rows); } catch (err) { if (err instanceof Error) { console.log('query error:', err); } } It will work for both createConnection, createPool and createPoolCluster connections.","s":"Using promises","u":"/node-mysql2/pt-BR/docs/faq/how-to-handle-errors","h":"#using-promises","p":923},{"i":930,"t":"Discussions #1998 #2282","s":"Related Links","u":"/node-mysql2/pt-BR/docs/faq/how-to-handle-errors","h":"#related-links","p":923}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/622",[0,3.329,1,1.193,2,3.565,3,4.215,4,3.701,5,6.201,6,4.021,7,3.851,8,5.053,9,4.441,10,4.713,11,2.953,12,2.873,13,6.201,14,4.713,15,6.201,16,5.053,17,3.701,18,6.255,19,5.509,20,4.713,21,4.021,22,5.509,23,3.225,24,3.701,25,5.509,26,4.441]],["t/624",[2,3.263,24,4.332,27,3.263,28,3.194,29,4.624,30,5.675,31,5.675,32,5.675,33,4.064,34,5.041,35,5.675,36,5.675,37,5.675,38,4.064,39,4.624,40,5.041,41,5.675,42,5.041,43,5.675,44,5.041,45,5.916,46,5.733,47,6.084,48,6.523,49,5.041,50,5.041,51,5.675,52,4.064,53,5.041,54,4.313,55,5.675]],["t/626",[0,2.263,1,0.811,2,1.532,4,2.516,9,1.909,10,2.026,11,1.269,12,1.235,17,3.547,24,1.591,26,1.909,27,3.417,38,3.019,52,3.019,56,2.172,57,4.256,58,0.513,59,2.172,60,2.172,61,3.745,62,1.479,63,1.728,64,0.842,65,3.745,66,0.732,67,0.951,68,3.204,69,2.865,70,3.435,71,3.435,72,0.971,73,0.858,74,1.168,75,1.643,76,1.643,77,2.424,78,0.996,79,2.192,80,1.355,81,1.328,82,1.115,83,2.456,84,1.633,85,3.547,86,2.167,87,2.83,88,1.991,89,2.682,90,2.613,91,3.191,92,2.487,93,4.843,94,3.745,95,3.745,96,3.745,97,3.204,98,1.643,99,3.745,100,3.435,101,3.435,102,3.204,103,3.204,104,3.745,105,1.136,106,1.279,107,1.034,108,4.215,109,4.215,110,4.215,111,3.435,112,0.931,113,1.643]],["t/628",[1,0.879,2,2.627,4,2.727,6,1.416,9,3.79,10,4.022,11,2.785,12,2.913,17,3.965,24,3.49,26,1.564,27,3.82,28,1.432,29,2.925,33,2.57,34,1.94,38,3.272,39,1.779,52,2.57,54,1.659,56,1.779,57,3.79,58,0.691,59,1.779,60,1.779,62,1.212,63,1.416,64,0.801,66,0.6,67,0.779,68,2.728,69,2.439,70,2.925,71,2.925,72,0.793,73,0.73,74,0.802,75,1.399,76,1.399,77,2.063,78,0.848,79,1.866,80,1.154,81,1.131,82,0.577,83,1.888,84,1.454,86,1.309,87,1.709,88,1.202,90,1.578,92,1.502,93,4.313,94,3.188,95,3.188,96,3.188,97,2.728,98,1.399,99,3.188,100,2.925,101,2.925,102,2.728,103,2.728,104,3.188,105,0.589,106,0.772,107,0.536,112,0.763,113,0.851,114,3.79,115,2.728,116,2.183,117,2.183,118,2.183,119,1.94,120,4.569,121,3.188,122,2.183,123,3.188,124,1.779,125,2.183,126,2.183,127,3.188,128,3.188,129,3.473,130,2.183,131,1.659,132,3.473,133,1.779,134,2.183,135,1.779,136,2.183,137,1.484,138,2.183,139,2.183,140,2.183,141,2.183,142,2.183,143,1.131,144,2.183,145,3.188,146,2.183,147,1.33,148,4.569,149,2.183,150,3.589,151,2.183,152,2.183,153,1.779,154,1.779,155,2.183,156,5.292,157,1.94,158,2.183,159,3.589,160,3.589,161,1.927,162,3.589,163,2.728,164,3.589,165,3.589,166,1.356,167,2.183,168,2.183,169,2.183,170,2.183,171,2.183,172,2.183,173,1.659,174,1.564,175,2.183,176,1.94,177,1.659,178,2.183]],["t/630",[1,0.762,2,3.006,4,2.363,6,2.567,17,4.432,24,2.363,26,1.281,27,4.27,29,3.226,33,2.175,52,2.175,53,2.698,54,3.547,56,1.457,57,2.835,58,0.762,59,1.457,60,1.457,62,2.198,63,2.567,64,0.804,66,0.491,67,0.638,68,3.009,69,5.144,72,0.784,73,0.364,74,0.884,76,1.184,77,1.746,78,0.718,79,1.58,80,0.977,81,0.957,82,0.473,84,1.282,87,1.446,97,1.359,103,3.974,105,0.482,106,0.852,107,0.439,112,0.625,113,0.697,114,2.835,115,1.359,123,1.589,124,2.475,129,2.308,132,3.009,137,1.215,153,1.457,157,1.589,176,3.517,177,3.547,179,2.698,180,5.198,181,3.265,182,1.589,183,1.788,184,1.788,185,1.788,186,1.788,187,3.547,188,1.788,189,1.788,190,1.788,191,1.457,192,1.589,193,1.788,194,3.959,195,1.788,196,1.788,197,1.788,198,1.788,199,1.788,200,1.788,201,1.788,202,1.788,203,1.788,204,1.788,205,1.444,206,3.037,207,3.037,208,2.698,209,3.037,210,3.037,211,1.631,212,3.037,213,2.001,214,4.667,215,3.026,216,3.037,217,3.037,218,4.667,219,4.146,220,4.146,221,2.475,222,3.037,223,4.667,224,2.059,225,3.037,226,3.037,227,2.427,228,3.037,229,3.037,230,1.457,231,1.788,232,1.788,233,1.589,234,1.788,235,1.788,236,1.788,237,1.788,238,1.788,239,1.788,240,1.788,241,4.667,242,4.667,243,1.039,244,2.698,245,3.037,246,3.037,247,3.037,248,1.788,249,1.067,250,1.788,251,1.788,252,1.788,253,1.788,254,1.241,255,1.16,256,3.037,257,2.698,258,2.475,259,3.037,260,3.959,261,3.037,262,3.037,263,1.215,264,1.788,265,1.457,266,1.589]],["t/632",[0,1.268,1,1.067,2,1.358,4,2.283,6,1.531,8,1.924,17,3.636,25,2.098,27,4.552,28,2.431,33,2.74,57,2.74,58,0.454,62,4.468,64,0.826,65,3.399,66,1.524,67,1.365,68,3.665,69,3.278,70,3.93,71,3.93,72,1.108,73,0.982,74,1.457,75,1.88,76,2.162,77,3.188,78,1.31,79,2.884,80,1.959,81,1.747,84,1.524,86,1.395,87,1.822,88,1.282,90,1.682,112,0.825,113,1.88,114,2.74,115,2.908,132,1.795,137,1.605,145,2.098,153,1.924,161,2.054,180,1.924,181,3.02,211,1.268,220,2.098,221,1.924,233,2.098,243,1.65,254,1.563,265,1.924,267,1.531,268,2.361,269,2.361,270,2.361,271,2.773,272,3.399,273,3.826,274,3.826,275,2.361,276,2.361,277,2.361,278,2.361,279,2.361,280,3.826,281,2.361,282,2.098,283,2.361,284,6.093,285,2.361,286,1.924,287,1.93,288,3.826,289,1.605,290,2.098,291,2.361,292,1.691,293,2.361,294,2.361,295,0.398,296,2.361,297,1.136,298,2.361,299,2.361,300,2.361,301,2.361,302,2.098,303,1.094,304,2.361,305,1.467]],["t/634",[1,0.527,2,1.576,4,1.636,6,1.777,17,4.743,27,2.478,33,3.086,38,1.963,39,2.234,52,1.963,57,4.7,58,0.527,62,2.392,63,2.794,64,0.783,69,1.863,72,0.798,73,0.558,74,0.963,75,1.68,76,1.68,77,2.478,78,1.018,79,2.241,80,1.386,81,1.358,82,0.725,83,2.154,84,1.658,86,1.942,92,1.803,93,3.512,98,1.68,102,2.083,105,0.739,106,0.928,107,0.672,113,1.069,114,3.814,119,2.435,121,6.474,124,2.234,129,5.295,131,2.083,133,2.234,135,3.512,137,1.863,143,1.358,177,2.083,182,3.828,187,2.083,191,3.512,192,3.828,213,2.588,221,2.234,254,1.76,258,3.512,265,4.339,297,1.581,306,2.741,307,2.741,308,2.741,309,2.741,310,2.741,311,2.741,312,4.526,313,2.741,314,2.435,315,2.741,316,2.741,317,2.741,318,1.777,319,5.295,320,2.283,321,2.741,322,2.741,323,2.741,324,4.309,325,4.309,326,2.741,327,2.741,328,2.741,329,3.275,330,3.914,331,4.309,332,4.309,333,4.309,334,2.741,335,2.741,336,2.435,337,2.741,338,2.741,339,2.741,340,3.512,341,2.741,342,2.741,343,2.741]],["t/636",[1,1.376,2,2.601,4,3.726,6,2.933,17,3.726,24,2.7,27,4.11,28,1.805,38,3.24,42,4.019,54,3.438,64,0.63,102,3.438,103,3.438,114,3.24,129,3.438,131,3.438,132,3.438,133,5.087,137,4.859,177,3.438,187,4.745,208,5.546,219,4.019,267,2.933,282,4.019,314,4.019,318,4.636,344,4.019,345,4.019,346,7.149,347,4.523,348,3.686,349,6.243,350,1.614,351,4.523,352,4.523,353,4.523,354,4.523,355,4.523,356,4.019,357,4.523,358,4.523,359,4.523,360,4.523,361,4.019,362,4.523,363,4.523,364,4.523,365,4.019,366,4.523,367,1.484,368,4.523,369,4.523,370,4.523,371,4.019,372,4.523,373,4.523,374,3.075,375,4.523,376,4.523,377,4.523]],["t/638",[0,2.932,1,1.363,4,3.259,16,4.45,17,4.963,23,2.84,24,3.259,27,4.519,64,0.693,69,3.712,131,5.382,143,1.721,181,2.401,267,3.541,318,3.541,361,4.851,378,5.461,379,5.461,380,5.461,381,4.851,382,5.461,383,5.461,384,5.461,385,4.45,386,5.461,387,5.461,388,5.461,389,6.292,390,5.461,391,5.461,392,5.461,393,3.911,394,5.461,395,5.461,396,5.461,397,4.851,398,5.461]],["t/640",[2,3.96,9,4.933,27,3.96,28,2.748,101,5.613,137,4.682,257,6.12,399,6.888,400,6.888,401,6.888,402,6.888,403,6.888,404,6.888,405,6.888]],["t/642",[295,1.209,406,6.828,407,7.172,408,5.845,409,3.618,410,7.172,411,7.172,412,5.451]],["t/644",[3,4.957,47,5.543,413,5.223,414,7.293,415,6.479,416,7.293,417,7.293]],["t/646",[28,2.704,40,3.64,46,5.286,47,4.427,64,0.361,79,3.029,287,2.067,318,3.777,365,3.64,406,6.603,408,3.339,412,3.114,418,5.825,419,5.825,420,4.097,421,6.021,422,4.097,423,5.825,424,5.825,425,2.274,426,4.097,427,4.097,428,1.951,429,5.523,430,5.825,431,4.097,432,5.825,433,4.097,434,4.097,435,4.097,436,5.61,437,5.175,438,1.835,439,4.097,440,3.64,441,4.097,442,2.785,443,4.097,444,4.097,445,4.097,446,4.097,447,4.097,448,3.64,449,4.747,450,2.938,451,2.131,452,2.785,453,3.64,454,1.562,455,5.825,456,4.097,457,4.097,458,4.097,459,3.64,460,3.64,461,4.097,462,4.097,463,4.097,464,3.114,465,3.339,466,4.097,467,4.097,468,4.097,469,4.097,470,3.64,471,2.934,472,3.64,473,3.339]],["t/648",[287,3.02,295,1.009,408,4.879,448,5.319,449,4.879,464,4.55,465,4.879,474,2.446,475,5.877,476,5.987,477,3.323,478,5.319,479,7.29,480,4.879,481,5.319,482,5.319,483,6.12,484,5.987,485,5.987,486,6.672,487,5.987,488,5.987,489,5.987,490,5.319,491,5.987,492,3.719,493,5.987]],["t/650",[64,0.787,66,1.559,87,2.702,166,3.525,428,1.901,442,6.164,454,2.163,475,5.199,483,4.624,494,6.413,495,5.675,496,5.241,497,5.041,498,4.624,499,3.047,500,5.675,501,5.675,502,5.675,503,5.041,504,5.916,505,4.624,506,5.675]],["t/652",[64,0.753,66,1.612,166,3.643,227,3.051,297,1.742,320,2.515,329,4.458,409,2.959,428,1.965,451,3.051,454,2.236,475,4.201,483,4.78,504,6.625,505,4.78,507,7.588,508,5.211,509,5.211,510,5.866,511,5.866,512,7.414,513,5.866,514,2.287,515,5.866,516,5.866,517,4.425]],["t/654",[64,0.731,66,1.68,89,2.759,166,3.797,295,1.03,454,2.33,464,5.783,475,5.449,479,6.76,486,6.76,490,5.431,505,4.982,518,7.922,519,6.113,520,6.113,521,4.982,522,3.797,523,4.982,524,4.378,525,5.431]],["t/656",[64,0.786,66,1.821,454,2.525,526,8.584,527,6.626,528,6.626,529,6.626,530,6.626,531,6.626,532,6.626,533,6.626,534,6.626,535,6.626,536,6.626]],["t/658",[46,6.147,81,1.555,147,1.437,287,2.489,340,6.512,374,4.502,406,4.021,429,6.994,464,3.75,475,3.534,477,2.739,537,5.355,538,6.623,539,5.884,540,6.623,541,4.934,542,4.934,543,7.991,544,7.991,545,7.991,546,1.28,547,4.383,548,4.934,549,4.934,550,6.623,551,6.623,552,3.75,553,6.623,554,4.934,555,4.934,556,3.534,557,4.383,558,4.934]],["t/660",[0,2.501,7,1.395,62,1.246,63,1.456,64,0.815,72,0.89,73,1.095,75,1.432,78,0.868,80,1.181,81,1.157,88,1.23,106,0.483,113,2.622,213,0.963,254,1.5,267,1.456,295,0.619,425,1.246,428,1.988,438,1.696,454,0.856,471,1.608,496,1.395,522,1.395,546,1.653,559,2.245,560,2.245,561,1.995,562,3.541,563,2.245,564,4.386,565,1.256,566,4.139,567,2.781,568,1.972,569,0.94,570,3.797,571,2.988,572,2.245,573,2.63,574,5.717,575,4.25,576,1.83,577,0.784,578,3.797,579,1.429,580,2.245,581,2.245,582,2.506,583,1.995,584,2.245,585,4.659,586,4.386,587,6.724,588,1.707,589,1.456,590,3.262,591,1.995,592,2.245,593,2.245,594,2.245,595,1.83,596,2.245,597,2.245,598,4.659,599,2.245,600,3.262,601,2.429,602,3.262,603,2.245,604,2.245,605,4.563,606,3.672,607,3.672,608,4.139,609,2.993,610,1.83,611,1.83,612,3.672,613,3.672,614,3.672,615,1.707,616,4.659,617,3.672,618,3.262,619,1.608,620,1.608,621,2.245,622,2.791,623,5.382,624,1.83,625,2.245,626,2.245,627,2.245,628,2.245,629,2.245,630,1.83,631,2.245,632,1.83,633,1.83,634,2.245,635,2.245,636,2.245,637,1.995,638,3.672,639,1.83,640,1.995,641,1.707,642,1.707,643,1.995,644,2.245,645,2.245,646,1.995,647,2.381,648,1.707,649,2.245,650,1.608,651,1.995,652,1.995,653,1.995]],["t/662",[0,2.036,64,0.831,72,0.569,73,0.772,75,1.479,78,1.302,80,1.22,88,1.271,113,3.078,254,1.549,295,0.639,409,1.913,428,1.271,438,1.195,440,3.37,562,2.883,564,5.289,566,3.37,567,2.264,570,3.091,573,5.102,574,4.491,575,3.947,578,3.091,579,1.9,582,2.054,589,3.574,600,3.37,601,2.929,602,3.37,637,3.37,639,3.091,647,2.46,650,3.947,651,3.37,652,3.37,654,3.793,655,6.491,656,3.793,657,3.091,658,3.793,659,3.793,660,1.549,661,1.587,662,6.491,663,6.491,664,3.37,665,3.793,666,3.793,667,3.793,668,3.793,669,5.511,670,3.793,671,7.894,672,3.793,673,3.793,674,3.793,675,3.793,676,3.793]],["t/665",[0,1.767,1,0.633,11,1.567,12,1.525,21,2.134,58,0.955,64,0.849,86,2.424,88,2.227,106,1.431,111,5.417,147,1.444,213,1.411,243,2.44,289,2.237,295,0.836,297,2.519,312,3.081,320,1.411,409,1.66,428,1.102,438,1.037,567,1.964,568,1.767,569,1.377,577,2.322,579,0.792,591,2.924,647,3.217,648,4.538,661,2.076,677,3.872,678,2.682,679,3.291,680,2.924,681,5.971,682,2.924,683,3.291,684,2.924,685,4.407,686,2.357,687,3.291,688,4.043,689,8.009,690,4.961,691,8.195,692,3.291,693,4.407,694,2.924]],["t/667",[64,0.833,72,0.873,83,2.634,84,2.341,86,2.125,106,1.254,143,1.836,163,4.428,213,2.499,290,5.177,312,4.585,319,4.428,330,3.778,428,1.952,459,5.177,577,2.976,695,5.827,696,5.827,697,5.827]],["t/669",[1,0.621,58,1.136,64,0.821,72,1.061,73,0.995,75,1.259,78,0.763,80,1.038,81,2.229,84,1.344,85,3.523,87,2.811,112,1.128,113,1.907,143,1.86,295,0.544,329,2.455,421,7.075,425,1.793,428,1.977,436,2.455,438,1.018,460,6.613,465,6.066,471,2.313,496,2.006,525,4.345,546,1.269,568,2.626,579,1.421,582,2.454,583,5.85,589,2.094,605,2.313,609,3.986,611,2.632,650,2.313,661,1.351,677,3.172,694,2.869,698,4.891,699,3.828,700,7.444,701,3.23,702,2.006,703,3.23,704,6.584,705,2.869,706,1.734,707,2.313,708,5.903,709,4.891,710,2.919,711,3.23,712,3.23,713,3.23,714,3.23,715,3.23,716,3.23,717,3.23,718,2.869,719,2.869,720,2.869,721,3.23,722,3.23,723,3.23]],["t/671",[1,1.06,64,0.813,72,1.251,73,1.54,75,1.479,76,2.149,77,2.181,78,1.302,80,1.772,81,2.045,83,1.354,112,1.925,113,2.531,181,2.854,205,1.383,211,2.036,215,2.46,295,1.094,319,2.883,413,2.717,425,3.603,428,1.271,454,1.446,514,1.479,589,2.46,601,2.929,619,2.717,630,3.091,632,3.091,650,2.717,693,3.37,699,4.907,724,3.37,725,3.793,726,3.793,727,3.793,728,3.793,729,3.793,730,3.793,731,3.793,732,3.793,733,3.793,734,2.181,735,3.793,736,5.511,737,3.37,738,2.717,739,3.793,740,4.896,741,4.188,742,2.883,743,3.37,744,5.511,745,3.793,746,3.169,747,2.356,748,3.793,749,1.414,750,3.37,751,3.793,752,2.883,753,3.793,754,3.793]],["t/674",[64,0.612,287,3.503,289,4.719,292,4.973,438,2.188,746,3.992,755,6.943,756,6.943,757,5.277,758,6.943,759,6.943,760,6.943,761,6.943]],["t/676",[73,1.747,425,4.153,762,7.481]],["t/678",[0,3.583,20,3.793,21,3.236,58,0.96,63,3.236,64,0.663,83,2.382,84,2.066,85,2.978,243,2.283,289,3.392,312,3.1,436,3.793,438,1.573,497,4.434,556,3.574,577,1.743,605,3.574,608,5.929,609,6.128,757,3.793,763,4.991,764,4.067,765,4.067,766,4.067,767,5.439,768,4.067,769,4.067,770,4.991,771,7.133,772,4.991,773,4.991,774,3.392,775,6.674,776,3.392,777,4.434,778,4.991,779,6.674,780,4.991,781,7.52,782,4.991,783,4.991,784,4.991,785,4.991]],["t/680",[0,2.649,73,1.004,84,1.356,350,2.852,438,2.087,450,2.489,499,2.649,522,3.065,556,5.723,578,5.398,579,1.924,589,3.199,620,3.534,646,4.383,677,3.199,757,5.034,771,7.406,777,5.884,786,6.623,787,5.398,788,4.934,789,4.934,790,4.383,791,4.383,792,4.934,793,4.934,794,4.934,795,4.934,796,4.934,797,4.934,798,4.934,799,4.934,800,6.793,801,3.534,802,4.934,803,3.534,804,4.934,805,4.934,806,4.934,807,4.934,808,4.934]],["t/682",[0,2.969,1,1.665,7,3.435,11,2.634,12,2.563,18,4.507,20,4.203,21,3.586,23,2.876,28,2.849,62,3.07,181,2.432,230,4.507,267,3.586,318,5.127,340,4.507,371,4.913,374,3.759,438,1.743,450,2.79,451,2.876,480,5.819,509,4.913,562,4.203,573,3.961,589,3.586,618,4.913,682,4.913,738,3.961,809,5.53,810,4.507,811,5.53,812,5.53,813,5.53,814,4.507,815,4.507,816,5.53]],["t/684",[28,2.985,450,3.774,454,2.851,537,5.358]],["t/686",[44,5.177,64,0.651,66,1.601,213,2.499,230,4.748,348,4.748,350,2.634,393,5.287,413,4.173,428,2.473,477,4.098,499,3.963,537,4.173,567,3.477,576,4.748,579,1.403,622,4.428,680,5.177,817,7.383,818,5.827,819,5.827,820,5.827,821,4.173,822,5.827,823,5.827,824,5.177,825,5.827,826,5.827,827,5.827,828,5.827]],["t/688",[0,4.433,1,1.664,3,4.126,11,2.891,12,2.813,21,4.912,318,5.355,397,5.393,438,1.913,449,4.947,720,5.393,829,6.071,830,5.393,831,5.393,832,6.73,833,6.071,834,6.071,835,7.575,836,7.575,837,6.071]],["t/690",[1,1.347,46,5.013,82,1.851,318,4.539,415,6.218,429,6.731,454,2.668,838,6.999,839,8.786]],["t/693",[7,2.916,11,3.05,12,3.377,64,0.851,83,2.924,85,2.802,86,2.335,106,1.01,161,2.52,174,5.869,243,2.19,295,0.791,297,2.325,471,3.362,586,3.825,620,3.362,643,4.17,657,3.825,688,3.825,801,3.362,814,3.825,840,4.17,841,4.694,842,4.694,843,4.694,844,3.362,845,4.694,846,4.17,847,3.568,848,4.17,849,4.694,850,4.694]],["t/695",[11,2.783,12,3.76,21,2.669,63,2.669,64,0.836,73,1.383,81,1.842,83,2.086,106,1.258,173,3.129,174,2.948,243,1.408,295,1.246,312,3.63,320,2.506,329,3.129,409,2.077,413,2.948,425,2.285,452,3.972,471,4.186,499,2.21,570,3.355,686,2.948,750,3.657,791,3.657,801,4.186,821,2.948,848,5.192,851,4.116,852,4.116,853,5.844,854,4.116,855,4.116,856,6.037,857,5.844,858,4.116,859,4.116,860,4.116,861,4.116,862,3.657,863,4.116,864,4.116,865,4.116,866,4.116,867,2.285,868,4.116,869,2.669,870,4.116,871,4.116,872,4.116,873,4.116,874,2.557]],["t/697",[12,3.738,64,0.593,173,5.114,174,6.188,295,1.134,428,2.254,640,5.978,800,5.483,801,4.819,810,5.483,875,6.728,876,6.728,877,6.728,878,6.728]],["t/699",[1,1.085,64,0.809,83,2.012,113,2.198,147,1.641,213,2.418,227,2.932,297,1.674,473,4.594,499,3.027,546,1.463,569,3.025,577,1.969,590,5.009,677,3.656,790,5.009,824,6.422,832,5.009,879,5.638,880,5.009,881,6.422,882,5.638,883,5.638,884,4.285,885,5.638,886,5.009,887,5.638,888,7.229,889,7.229,890,5.638]],["t/701",[11,3.349,12,2.832,28,1.75,58,0.844,64,0.839,84,2.276,86,2.565,106,1.514,107,1.725,147,1.277,154,4.98,161,3.776,243,2.833,297,2.375,409,4.035,565,1.5,661,1.835,821,3.142,846,3.897,881,6.248,891,3.897,892,4.933,893,7.607,894,7.607]],["t/703",[11,3.502,12,3.408,450,3.71,451,3.825,452,4.999,454,2.803]],["t/706",[3,4.215,28,3.063,45,6.255,46,5.497,47,5.834,48,6.255,49,5.509,50,6.819,295,1.045,367,2.035,650,4.441,653,5.509,699,4.021,724,5.509,787,5.053,895,6.201,896,6.201,897,6.201,898,6.201,899,4.713,900,4.441,901,6.201]],["t/708",[1,1.676,28,3.326,64,0.677,66,2.46,67,2.739,213,2.659,428,2.571,568,4.121,884,4.713,902,6.201,903,6.201,904,7.676,905,7.676]],["t/710",[1,1.265,28,2.624,64,0.816,66,1.807,72,1.193,78,1.554,80,2.114,81,2.507,254,2.686,706,3.53,906,3.898,907,4.264]],["t/712",[1,1.265,28,2.624,64,0.816,66,1.807,72,1.193,78,1.554,80,2.114,81,2.507,254,2.686,706,3.53,908,4.014,909,6.576]],["t/714",[58,0.989,61,3.68,64,0.851,81,2.559,243,2.89,297,2.411,320,2.918,413,3.68,454,1.958,477,3.777,537,3.68,639,4.187,821,3.68,910,4.565,911,4.625,912,4.565,913,4.227,914,3.653,915,2.144,916,3.68]],["t/717",[1,1.006,28,2.086,64,0.86,66,1.437,72,0.784,75,2.039,78,1.235,80,1.681,81,2.749,86,2.271,87,2.49,213,2.242,243,2.857,254,2.136,295,0.595,297,2.044,303,3.19,312,2.193,320,2.952,330,3.391,428,1.183,454,1.346,517,2.108,579,0.85,911,4.679,914,2.807,917,3.531,918,3.391,919,5.229,920,3.531,921,3.531,922,2.108]],["t/719",[1,0.949,28,1.969,58,0.949,64,0.853,66,1.356,72,0.993,75,1.924,78,1.166,80,1.586,81,2.704,86,2.415,143,1.555,213,2.84,243,2.265,254,2.015,295,0.831,297,1.966,303,2.286,320,3.206,428,1.653,517,2.945,647,3.199,911,3.354,914,2.649,922,2.945,923,4.295,924,4.934]],["t/721",[1,0.857,28,1.777,64,0.827,66,1.224,72,0.926,75,1.736,78,1.052,80,1.432,81,1.946,83,2.204,92,1.864,143,1.403,227,4.183,254,1.819,295,1.041,297,1.834,320,1.91,367,1.462,428,1.492,442,3.027,450,3.116,494,3.385,496,2.766,517,2.658,568,2.391,615,4.694,641,4.694,686,4.424,774,4.198,776,3.027,847,4.694,900,3.19,911,3.027,915,2.234,925,3.629,926,3.957,927,5.033,928,3.116,929,4.424,930,2.01,931,2.182,932,2.064,933,3.957,934,4.454,935,3.19,936,3.19,937,3.19]],["t/723",[1,0.815,28,1.69,64,0.838,66,1.164,72,0.894,75,1.652,78,1.001,80,1.362,81,1.88,83,2.128,92,1.773,143,1.335,213,2.558,215,2.747,227,4.604,254,1.731,295,0.714,297,1.771,320,2.96,367,1.957,442,2.88,494,3.22,496,2.632,517,2.529,568,3.202,647,2.747,774,4.054,776,4.054,900,3.034,911,2.88,915,2.361,923,3.868,925,3.453,929,4.272,930,1.912,931,2.076,932,1.963,933,3.764,935,4.272,936,4.272,937,4.272,938,3.764,939,4.237]],["t/725",[1,0.702,7,3.328,28,1.456,58,1.031,64,0.83,66,1.003,72,0.803,75,1.423,78,0.862,80,1.174,81,1.688,83,2.265,86,1.331,92,1.527,143,1.15,166,2.267,213,1.565,227,3.875,249,2.178,254,1.491,258,2.974,287,2.703,295,0.903,297,1.591,320,2.722,367,1.198,442,2.481,450,1.841,451,1.898,454,1.391,494,2.774,496,2.267,517,2.178,568,3.408,579,1.29,586,5.174,624,2.974,647,2.367,707,2.614,774,2.481,776,2.481,800,2.974,810,2.974,900,2.614,911,2.481,914,1.96,915,2.454,916,4.547,918,2.367,923,2.367,925,2.974,929,2.614,930,1.647,931,1.788,935,2.614,936,2.614,937,2.614,938,3.243,940,6.347,941,3.65,942,3.65,943,3.65,944,6.348,945,2.974,946,3.65,947,3.65,948,5.358]],["t/727",[295,1.189,450,3.559,615,5.363,641,5.363,686,5.054,847,5.363,915,2.223,926,6.269,927,5.75,928,3.559,949,6.269]],["t/729",[28,2.803,45,4.395,287,2.721,295,1.51,385,4.395,454,2.056,522,3.35,537,5.595,737,4.791,914,4.724,915,2.214,916,5.031,923,4.555,950,5.393,951,5.393,952,5.393,953,5.059,954,5.252,955,6.941,956,5.393]],["t/731",[166,4.347,295,1.179,450,3.531,454,2.668,706,3.758,957,6.218,958,6.218,959,6.218,960,6.218,961,6.218,962,6.218,963,6.218]],["t/733",[0,3.98,1,1.758,73,1.509,143,1.848,295,1.249,438,2.562,481,5.211,740,7.222,880,5.211,964,5.866,965,5.866,966,5.866,967,5.866,968,5.866,969,7.414,970,5.866,971,5.866,972,7.414,973,5.866,974,5.866,975,5.866]],["t/735",[1,1.294,14,3.837,64,0.82,72,1.134,76,2.622,84,1.387,112,1.764,143,1.591,227,2.626,295,0.851,297,1.997,393,3.616,523,4.114,601,2.278,605,3.616,620,3.616,710,3.013,746,2.903,918,3.274,976,3.837,977,3.616,978,5.049,979,5.049,980,5.049,981,5.049,982,5.049,983,4.485,984,7.563,985,4.485,986,5.049,987,5.049,988,5.049,989,5.049,990,5.049,991,5.049,992,5.049,993,5.049,994,5.049,995,5.049,996,5.975,997,5.049]],["t/737",[62,3.981,267,4.651,286,5.845,589,4.651,815,5.845,954,4.281,998,7.172,999,7.172,1000,6.372]],["t/739",[1,1.251,14,3.647,58,0.923,62,2.663,64,0.846,72,1.105,73,0.977,84,1.318,107,1.177,181,2.858,266,4.262,289,3.261,302,4.262,319,4.94,539,4.262,546,1.245,579,1.155,610,3.91,648,4.94,677,3.111,743,5.774,749,2.423,844,4.655,910,5.774,1001,4.798,1002,4.798,1003,3.91,1004,4.798,1005,6.5,1006,4.798,1007,4.798,1008,4.798,1009,4.798,1010,4.798,1011,4.798,1012,4.798,1013,4.798]],["t/741",[1,1.279,64,0.827,72,1.252,74,1.866,75,1.935,80,2.138,81,2.095,84,1.363,113,2.592,147,1.445,181,2.182,211,2.664,243,1.697,244,5.907,254,2.027,271,3.823,305,3.082,320,2.851,356,4.408,409,2.503,734,2.853,912,4.408,996,4.408,1003,5.418,1014,4.962,1015,4.962,1016,4.408,1017,5.907,1018,4.408,1019,4.962,1020,4.962,1021,4.962,1022,4.408]],["t/743",[1,1.078,64,0.823,72,1.259,74,1.251,78,1.323,79,2.913,80,1.801,112,1.957,163,4.257,213,2.402,215,3.632,243,1.916,303,2.596,454,2.135,595,6.483,678,4.565,892,3.632,1023,6.396,1024,4.976,1025,4.976,1026,5.601,1027,4.976,1028,4.976,1029,4.976,1030,4.976,1031,4.976,1032,4.976,1033,5.601]],["t/745",[11,3.416,12,3.324,58,1.612,61,5.137,367,2.354,450,3.618,451,3.73,454,2.734]],["t/747",[1,1.415,64,0.837,66,1.59,67,2.065,72,1.211,73,1.496,74,1.293,75,2.866,82,1.531,105,1.56,106,1.582,107,1.803,112,2.022,350,2.065,1034,5.788,1035,1.753,1036,1.753,1037,6.531,1038,3.753]],["t/749",[1,1.294,64,0.842,66,1.387,67,1.802,72,1.134,73,1.369,74,1.128,75,2.622,76,2.622,77,3.867,78,1.589,79,3.498,80,2.163,81,2.119,82,1.335,105,1.361,106,1.448,107,1.65,112,1.764,601,3.035,746,3.867,747,4.177,906,2.473,1035,1.529,1036,1.529,1038,3.274,1039,3.616]],["t/751",[1,1.357,64,0.846,66,1.491,67,1.936,72,1.175,73,1.436,74,1.212,75,2.75,82,1.435,105,1.463,106,1.518,107,1.73,112,1.896,752,5.361,906,2.658,1035,1.643,1036,1.643,1038,3.519,1039,3.887,1040,4.422,1041,4.422,1042,5.748,1043,4.422]],["t/753",[1,1.237,23,3.343,64,0.848,66,1.297,67,1.684,72,1.096,73,1.308,74,1.054,75,2.506,82,1.248,105,1.272,106,1.383,107,1.576,112,1.649,451,2.455,571,3.568,906,2.312,1035,1.429,1036,1.429,1038,3.06,1039,3.38,1044,3.846,1045,5.58,1046,6.395,1047,5.238,1048,3.836,1049,3.836,1050,5.238,1051,3.846]],["t/755",[1,1.262,23,3.963,64,0.835,66,1.061,67,1.378,72,1.077,73,1.334,74,1.465,75,2.176,76,2.176,81,1.759,82,1.476,105,1.505,106,1.64,107,1.762,112,1.349,113,1.505,295,0.941,350,1.378,546,1.002,577,1.349,579,0.929,619,2.765,738,2.765,844,3.998,906,1.891,1035,1.169,1036,1.169,1038,2.503,1039,2.765,1045,2.624,1048,2.304,1049,3.331,1052,4.882,1053,4.882,1054,3.146,1055,3.146,1056,3.146,1057,4.549,1058,4.549,1059,4.549,1060,3.146,1061,4.549,1062,4.549,1063,5.582,1064,4.549,1065,3.146,1066,1.146]],["t/757",[23,3.248,64,0.738,292,4.473,374,4.245,522,3.879,524,4.473,552,4.747,575,4.473,588,4.747,899,4.747,931,3.777,1048,4.601,1049,3.727,1052,5.24,1053,5.24,1067,5.089,1068,5.089,1069,5.089,1070,5.089,1071,5.089,1072,5.089]],["t/759",[1,1.05,64,0.847,72,1.216,73,1.111,75,2.128,81,1.18,84,2.159,106,1.79,107,1.846,112,1.907,113,1.46,243,2.204,297,1.112,303,2.985,425,3.03,546,1.672,579,1.704,688,5.25,699,3.54,741,5.381,742,4.149,746,3.139,747,3.391,892,3.54,906,1.834,1038,3.54,1039,2.682,1066,1.913,1073,3.051,1074,3.051,1075,4.449,1076,3.051,1077,3.051,1078,3.051,1079,4.449]],["t/762",[906,3.729,1080,3.527]],["t/764",[11,3.416,12,3.324,58,1.612,61,5.137,367,2.354,450,3.618,451,3.73,454,2.734]],["t/766",[1,1.289,58,1.289,64,0.836,66,1.379,67,1.791,72,1.206,73,1.535,74,1.121,82,1.328,105,1.353,106,1.623,107,1.643,112,1.753,181,2.946,255,3.255,263,3.412,295,0.846,350,1.791,546,1.303,579,1.208,867,2.786,928,2.532,1035,1.52,1036,1.52,1066,1.49,1081,5.019,1082,6.7,1083,4.336,1084,2.886,1085,2.886,1086,2.886,1087,3.595]],["t/768",[1,1.172,58,1.172,64,0.842,66,1.199,67,1.557,72,1.138,73,1.428,74,0.975,76,2.374,77,3.501,78,1.439,79,3.167,80,1.958,81,1.919,82,1.154,105,1.176,106,1.51,107,1.494,112,1.525,181,2.678,211,3.269,255,2.83,263,2.966,295,0.735,546,1.133,579,1.051,601,2.748,746,3.501,747,3.782,867,2.423,908,2.202,928,2.202,1035,1.322,1036,1.322,1066,1.296,1083,4.033,1084,2.509,1085,2.509,1086,2.509,1087,3.126,1088,3.126]],["t/770",[1,1.223,58,1.223,64,0.845,66,1.276,67,1.657,72,1.168,73,1.475,74,1.038,82,1.228,105,1.252,106,1.56,107,1.559,112,1.622,181,2.795,211,3.413,255,3.011,263,3.157,295,0.783,546,1.205,579,1.118,752,4.832,867,2.578,908,2.343,928,2.343,1035,1.406,1036,1.406,1040,3.785,1041,3.785,1042,5.18,1043,3.785,1066,1.379,1083,4.167,1084,2.67,1085,2.67,1086,2.67,1087,3.326,1088,3.326]],["t/772",[1,1.125,23,3.039,58,1.125,64,0.847,66,1.131,67,1.469,72,1.109,73,1.383,74,0.92,82,1.089,105,1.11,106,1.463,107,1.433,112,1.438,181,2.57,211,3.138,255,2.669,263,2.798,295,0.694,451,2.141,546,1.068,571,3.244,579,0.991,867,2.285,908,2.077,928,2.077,1035,1.246,1036,1.246,1044,3.355,1045,5.31,1046,6.028,1047,4.763,1048,3.488,1049,3.488,1050,4.763,1051,3.355,1066,1.222,1083,3.907,1084,2.367,1085,2.367,1086,2.367,1087,2.948,1088,2.948]],["t/774",[1,1.181,23,3.784,58,0.988,64,0.836,66,0.947,67,1.23,72,1.091,73,1.385,74,1.372,76,2.003,81,1.619,82,1.359,105,1.385,106,1.642,107,1.669,112,1.204,113,1.344,181,2.259,211,2.758,255,2.235,263,2.343,295,1.035,350,1.23,546,1.333,577,1.204,579,1.236,619,2.469,738,2.469,844,3.679,867,1.914,908,1.739,928,1.739,1022,4.563,1035,1.044,1036,1.044,1045,2.343,1048,2.057,1049,3.066,1052,4.624,1053,4.624,1054,2.809,1055,2.809,1056,2.809,1057,4.186,1058,4.186,1059,4.186,1060,2.809,1061,4.186,1062,4.186,1064,4.186,1065,2.809,1066,1.525,1083,3.53,1084,1.982,1085,1.982,1086,1.982,1087,2.469,1088,2.469]],["t/776",[23,3.248,64,0.738,292,4.473,374,4.245,522,3.879,524,4.473,552,4.747,575,4.473,588,4.747,899,4.747,931,3.777,1048,4.601,1049,3.727,1052,5.24,1053,5.24,1067,5.089,1068,5.089,1069,5.089,1070,5.089,1071,5.089,1072,5.089]],["t/778",[1,1.092,64,0.843,72,1.236,81,1.244,84,2.199,106,1.723,107,1.628,112,1.982,113,1.539,181,2.495,211,3.046,243,2.271,297,1.172,303,3.077,425,3.149,546,1.723,579,1.747,699,3.678,741,5.516,742,4.311,746,3.262,747,3.523,892,3.678,908,1.992,1066,1.971,1073,3.217,1074,3.217,1075,4.623,1076,3.217,1077,3.217,1078,3.217,1079,4.623,1088,2.828,1089,6.639]],["t/781",[428,2.423,906,4.124,908,4.247,953,4.158,1080,3.901]],["t/783",[7,3.479,11,4.136,12,3.891,28,2.235,48,4.565,58,1.385,64,0.635,86,2.043,147,2.096,154,5.867,166,3.479,173,4.257,174,4.012,289,3.807,451,2.913,454,2.135,565,1.916,648,4.257,661,2.344,664,4.976,814,4.565,821,4.012,891,4.976,930,2.528,931,2.744,932,2.596,1090,2.596,1091,5.601,1092,5.601,1093,5.601,1094,5.601,1095,4.976]],["t/786",[58,0.811,64,0.825,72,1.182,73,0.858,74,0.942,78,1.404,82,1.115,83,2.457,84,1.892,88,1.991,89,2.682,92,2.487,98,2.318,105,1.137,106,1.482,107,1.458,143,1.873,147,1.731,205,1.537,224,3.091,295,0.71,297,1.765,350,1.505,367,1.384,438,1.329,474,1.722,514,1.644,546,1.094,565,1.442,569,1.764,577,2.753,579,1.015,582,1.572,660,2.428,661,1.764,749,1.572,915,1.329,932,2.754,1035,1.277,1036,1.277,1066,1.252,1090,1.954,1096,3.204,1097,4.518,1098,2.912,1099,1.764,1100,1.764,1101,1.682,1102,1.644]],["t/788",[58,0.77,64,0.839,72,1.159,73,0.815,74,0.894,78,1.353,82,1.059,83,2.387,84,1.838,88,1.919,89,2.585,92,2.397,98,2.234,105,1.079,106,1.44,107,1.405,143,2.301,147,1.668,161,3.076,205,1.46,224,2.979,295,0.675,297,1.701,367,1.314,428,1.919,438,1.261,474,1.635,514,1.561,546,1.039,565,1.369,569,1.675,577,2.551,579,0.964,582,1.492,660,2.34,661,1.675,749,1.492,915,1.261,932,2.655,1035,1.212,1036,1.212,1066,1.188,1090,1.855,1098,2.806,1099,1.675,1100,1.675,1101,1.597,1102,1.561,1103,2.486,1104,1.675]],["t/790",[58,0.76,64,0.842,72,1.152,73,0.804,74,0.882,78,1.34,82,1.044,83,2.369,84,1.824,88,1.9,89,2.56,92,2.374,98,2.212,105,1.064,106,1.429,107,1.391,143,2.287,147,1.652,161,3.046,205,1.44,224,2.95,295,0.665,297,1.684,367,1.296,428,1.9,438,1.244,474,1.613,514,1.539,546,1.025,565,1.35,569,1.652,577,2.685,579,0.95,582,1.472,660,2.317,661,1.652,749,1.472,915,1.244,932,2.629,1035,1.196,1036,1.196,1066,1.172,1090,1.83,1098,2.779,1099,1.652,1100,1.652,1101,1.575,1102,1.539,1103,2.452,1104,1.652]],["t/793",[915,2.399,1080,3.527]],["t/795",[1080,3.527,1104,3.185]],["t/797",[11,3.416,12,3.324,58,1.612,61,5.137,367,2.354,450,3.618,451,3.73,454,2.734]],["t/799",[1,1.232,58,1.232,64,0.84,66,1.29,67,1.675,72,1.174,73,1.484,74,1.049,82,1.242,105,1.265,106,1.569,107,1.571,112,1.64,113,1.83,295,0.791,350,2.285,546,1.218,579,1.13,867,2.606,928,2.368,1035,1.421,1036,1.421,1037,5.689,1066,1.394,1083,4.191,1084,2.699,1085,2.699,1086,2.699,1105,3.191,1106,4.694,1107,3.977,1108,3.977,1109,4.353,1110,4.353,1111,4.586]],["t/801",[1,1.125,58,1.125,64,0.847,66,1.131,67,1.469,72,1.109,73,1.383,74,0.92,76,2.279,77,3.36,78,1.381,79,3.039,80,1.879,81,1.842,82,1.089,105,1.11,106,1.463,107,1.433,112,1.438,113,1.605,295,0.694,350,1.469,546,1.068,567,2.457,579,0.991,601,2.637,746,3.36,747,3.63,867,2.285,908,2.077,928,2.077,1035,1.246,1036,1.246,1066,1.222,1083,3.907,1084,2.367,1085,2.367,1086,2.367,1105,2.798,1107,3.63,1108,3.63,1109,3.972,1110,3.972,1111,4.186]],["t/803",[1,1.172,58,1.172,64,0.85,66,1.199,67,1.557,72,1.138,73,1.428,74,0.975,82,1.154,105,1.176,106,1.51,107,1.494,112,1.525,113,1.702,295,0.735,350,1.557,546,1.133,567,2.605,579,1.051,752,4.628,867,2.423,908,2.202,928,2.202,1035,1.322,1036,1.322,1040,3.557,1041,3.557,1042,4.963,1043,3.557,1066,1.296,1083,4.033,1084,2.509,1085,2.509,1086,2.509,1105,2.966,1107,3.782,1108,3.782,1109,4.139,1110,4.139,1111,4.362]],["t/805",[1,1.081,23,2.922,58,1.081,64,0.851,66,1.07,67,1.39,72,1.081,73,1.341,74,0.87,82,1.03,105,1.05,106,1.418,107,1.378,112,1.361,113,1.519,295,0.656,350,1.39,451,2.026,546,1.011,567,2.325,571,3.118,579,0.938,867,2.162,908,1.965,928,1.965,1035,1.179,1036,1.179,1044,3.174,1045,5.198,1046,5.878,1047,4.578,1048,3.353,1049,3.353,1050,4.578,1051,3.174,1066,1.156,1083,3.788,1084,2.24,1085,2.24,1086,2.24,1105,2.648,1107,3.489,1108,3.489,1109,3.818,1110,3.818,1111,4.023]],["t/807",[1,1.149,23,3.709,58,0.955,64,0.841,66,0.904,67,1.174,72,1.069,73,1.353,74,1.334,76,1.934,81,1.563,82,1.312,105,1.337,106,1.614,107,1.63,112,1.15,113,1.934,295,1.006,350,1.77,546,1.287,567,1.964,577,1.15,579,1.194,619,2.357,738,2.357,844,3.553,867,1.827,908,1.66,928,1.66,1035,0.996,1036,0.996,1045,2.237,1048,1.964,1049,2.961,1052,4.518,1053,4.518,1054,2.682,1055,2.682,1056,2.682,1057,4.043,1058,4.043,1059,4.043,1060,2.682,1061,4.043,1062,4.043,1064,4.043,1065,2.682,1066,1.473,1083,3.433,1084,1.892,1085,1.892,1086,1.892,1105,2.237,1107,3.081,1108,3.081,1109,3.372,1110,3.372,1111,3.553,1112,4.961]],["t/809",[23,3.248,64,0.738,292,4.473,374,4.245,522,3.879,524,4.473,552,4.747,575,4.473,588,4.747,899,4.747,931,3.777,1048,4.601,1049,3.727,1052,5.24,1053,5.24,1067,5.089,1068,5.089,1069,5.089,1070,5.089,1071,5.089,1072,5.089]],["t/811",[1,1.025,64,0.847,72,1.26,81,1.141,84,2.134,106,1.671,107,1.55,112,1.86,113,1.411,243,2.161,297,1.075,303,2.927,350,1.292,425,2.956,546,1.64,567,2.16,579,1.677,699,3.453,741,5.295,742,4.047,746,3.062,747,3.308,892,3.453,908,1.826,1066,1.876,1073,2.95,1074,2.95,1075,4.34,1076,2.95,1077,2.95,1078,2.95,1079,4.34,1105,2.46,1107,3.308,1108,3.308,1109,3.62,1110,3.62,1113,5.325,1114,5.325,1115,6.318]],["t/814",[428,2.423,906,4.124,908,4.247,953,4.158,1080,3.901]],["t/817",[58,0.804,64,0.839,72,1.177,73,0.85,74,0.933,78,1.395,82,1.104,84,1.882,86,2.153,88,1.978,89,2.664,90,2.596,91,3.17,98,2.302,105,1.126,106,1.474,107,1.448,143,1.86,147,1.216,205,1.523,243,2.686,295,0.704,303,2.736,350,1.49,367,1.37,438,1.316,474,1.706,514,1.628,546,1.084,565,1.428,577,2.744,579,1.421,582,1.556,660,2.412,749,1.556,1035,1.264,1036,1.264,1066,1.24,1096,3.174,1097,4.487,1099,1.747,1100,1.747,1101,1.666,1102,1.628]],["t/819",[58,0.763,64,0.847,72,1.154,73,0.807,74,0.886,78,1.345,82,1.049,84,1.829,86,2.075,88,1.906,89,2.568,90,2.503,91,3.055,98,2.219,105,1.069,106,1.433,107,1.396,143,2.292,147,1.155,161,3.055,205,1.446,243,2.634,295,0.668,303,2.637,367,1.302,428,1.906,438,1.25,474,1.62,514,1.546,546,1.029,565,1.357,577,2.541,579,1.37,582,1.478,660,2.325,749,1.478,1035,1.201,1036,1.201,1066,1.178,1099,1.66,1100,1.66,1101,1.582,1102,1.546,1103,2.463,1104,1.66]],["t/821",[58,0.753,64,0.849,72,1.148,73,0.796,74,0.874,78,1.332,82,1.035,84,1.815,86,2.055,88,1.888,89,2.543,90,2.478,91,3.026,98,2.197,105,1.055,106,1.422,107,1.382,143,2.278,147,1.139,161,3.026,205,1.427,243,2.62,295,0.659,303,2.612,367,1.284,428,1.888,438,1.233,474,1.598,514,1.525,546,1.015,565,1.338,577,2.676,579,1.357,582,1.458,660,2.302,749,1.458,1035,1.185,1036,1.185,1066,1.162,1099,1.637,1100,1.637,1101,1.561,1102,1.525,1103,2.43,1104,1.637]],["t/824",[1080,3.527,1104,3.185]],["t/827",[58,0.774,64,0.831,72,1.161,73,0.818,74,0.898,78,1.358,82,1.064,83,2.394,84,1.843,88,1.925,90,2.527,92,2.405,98,2.241,105,1.084,106,1.444,107,1.41,143,1.811,147,1.673,205,1.466,224,2.989,295,0.678,297,1.707,350,1.435,367,1.32,438,1.267,474,1.643,514,1.568,546,1.044,565,1.375,568,3.086,569,1.683,577,2.704,579,0.968,582,1.499,660,2.348,661,1.683,749,1.499,915,1.267,931,2.816,1035,1.218,1036,1.218,1066,1.194,1090,1.863,1096,3.056,1097,4.368,1098,2.816,1099,1.683,1100,1.683,1101,1.604,1102,1.568,1116,4.116,1117,2.663]],["t/829",[58,0.736,64,0.842,72,1.138,73,0.779,74,0.855,78,1.31,82,1.012,83,2.328,84,1.792,88,1.858,90,2.439,92,2.321,98,2.162,105,1.032,106,1.404,107,1.36,143,2.254,147,1.615,161,2.978,205,1.395,224,2.884,295,0.645,297,1.647,367,1.256,428,1.858,438,1.206,474,1.563,514,1.492,546,0.993,565,1.309,568,2.978,569,1.601,577,2.499,579,0.921,582,1.426,660,2.265,661,1.601,749,1.426,915,1.206,931,2.717,1035,1.159,1036,1.159,1066,1.136,1090,1.773,1098,2.717,1099,1.601,1100,1.601,1101,1.527,1102,1.492,1103,2.377,1104,1.601,1116,3.972,1117,2.57]],["t/831",[58,0.727,64,0.844,72,1.132,73,0.769,74,0.844,78,1.298,82,0.999,83,2.31,84,1.779,88,1.84,90,2.416,92,2.299,98,2.142,105,1.018,106,1.394,107,1.347,143,2.24,147,1.599,161,2.949,205,1.377,224,2.857,295,0.636,297,1.631,367,1.239,428,1.84,438,1.19,474,1.543,514,1.472,546,0.98,565,1.292,568,2.949,569,1.58,577,2.639,579,0.909,582,1.408,660,2.244,661,1.58,749,1.408,915,1.19,931,2.691,1035,1.144,1036,1.144,1066,1.121,1090,1.75,1098,2.691,1099,1.58,1100,1.58,1101,1.507,1102,1.472,1103,2.346,1104,1.58,1116,3.934,1117,2.546]],["t/834",[915,2.399,1080,3.527]],["t/836",[1080,3.527,1104,3.185]],["t/838",[1,0.739,24,2.293,62,1.318,64,0.838,72,1.11,73,0.483,74,1.601,75,1.498,78,1.144,79,1.235,80,1.236,81,1.753,82,0.628,84,1.056,88,0.795,105,0.64,106,1.197,107,0.582,113,0.926,143,0.748,163,2.921,181,1.69,211,1.275,213,2.076,215,1.54,243,1.656,271,2.209,272,2.109,295,0.648,297,0.705,303,1.781,412,1.804,425,3.088,436,4.228,452,1.614,453,2.109,472,2.109,473,1.935,478,2.109,482,2.109,496,1.475,503,2.109,546,0.616,556,1.7,574,1.935,595,3.945,601,1.734,610,1.935,611,3.131,620,2.752,678,3.945,707,2.752,718,2.109,734,2.783,746,2.783,747,3.007,886,4.942,892,1.54,977,2.752,985,2.109,1003,3.131,1016,4.3,1017,2.109,1018,3.414,1023,3.414,1024,2.109,1025,2.109,1027,3.414,1028,2.109,1029,5.428,1030,2.109,1031,2.109,1032,3.414,1118,3.843,1119,2.374,1120,2.374,1121,3.843,1122,3.843,1123,2.109,1124,2.374,1125,2.374,1126,2.374,1127,4.841,1128,4.3,1129,5.563,1130,6.11,1131,5.563,1132,3.843,1133,2.374,1134,2.374,1135,2.374,1136,3.843,1137,2.374,1138,4.841,1139,2.374,1140,3.843,1141,2.374,1142,2.374,1143,2.374,1144,2.374,1145,2.374,1146,2.374,1147,2.374,1148,2.374,1149,2.374,1150,2.374,1151,2.374]],["t/840",[11,3.229,12,3.142,64,0.598,86,2.473,111,5.526,367,2.225,450,3.421,451,3.526,452,4.609,454,3.089,677,4.397,930,3.06,931,3.322,932,3.142,1095,6.024]],["t/842",[147,2.16,454,2.827,565,2.537,869,4.81,1152,5.637]],["t/844",[58,1.18,64,0.802,72,1.057,73,0.897,74,0.985,82,1.166,83,2.517,84,1.938,89,2.767,90,2.697,91,3.293,92,2.566,98,2.391,105,1.188,106,1.518,107,1.504,143,1.933,147,1.284,205,1.608,295,0.743,350,1.573,367,1.447,438,1.389,474,1.801,514,1.719,546,1.144,565,1.508,569,1.845,577,2.142,579,1.061,582,1.643,660,2.505,661,1.845,749,1.643,803,3.157,915,1.389,930,2.767,1035,1.335,1036,1.335,1066,1.309,1090,2.043,1098,3.004,1099,1.845,1100,1.845,1101,1.759,1102,1.719,1117,2.842,1153,3.293,1154,4.392,1155,4.661]],["t/846",[58,1.132,64,0.829,72,1.024,73,0.846,74,0.928,82,1.099,83,2.437,84,1.877,85,3.512,89,2.655,90,2.587,91,3.159,92,2.462,98,2.294,105,1.12,106,1.47,107,1.443,143,2.341,147,1.21,205,1.515,295,0.7,367,1.364,428,1.971,438,1.31,474,1.698,514,1.62,546,1.079,565,1.421,569,1.739,577,2.055,579,1,582,1.549,660,2.403,661,1.739,749,1.549,915,1.31,930,2.655,1035,1.258,1036,1.258,1066,1.234,1090,1.926,1098,2.882,1099,1.739,1100,1.739,1101,1.658,1102,1.62,1104,1.739,1117,2.726,1153,3.159,1154,4.214,1156,2.976]],["t/849",[915,2.399,1080,3.527]],["t/851",[1080,3.527,1104,3.185]],["t/854",[58,0.788,64,0.828,72,1.169,73,0.834,74,0.915,82,1.084,83,2.418,84,1.862,89,2.628,90,2.561,91,3.127,92,2.437,98,2.271,105,1.104,106,1.459,107,1.429,143,1.835,147,1.696,205,1.494,295,0.69,350,1.462,367,1.344,438,1.291,474,1.674,514,1.597,546,1.063,565,1.401,569,1.714,577,2.912,579,0.986,582,1.527,660,2.379,661,1.714,749,1.527,915,1.291,930,2.628,1035,1.241,1036,1.241,1066,1.216,1090,1.898,1096,3.114,1097,4.427,1098,2.853,1099,1.714,1100,1.714,1101,1.635,1102,1.597,1117,2.699,1153,3.127,1154,4.172]],["t/856",[58,0.75,64,0.841,72,1.146,73,0.793,74,0.87,82,1.03,83,2.351,84,1.81,89,2.535,90,2.47,91,3.016,92,2.351,98,2.19,105,1.05,106,1.418,107,1.378,143,2.273,147,1.636,161,3.016,205,1.42,295,0.656,367,1.278,428,1.882,438,1.227,474,1.591,514,1.519,546,1.011,565,1.332,569,1.63,577,2.783,579,0.938,582,1.452,660,2.295,661,1.63,749,1.452,915,1.227,930,2.535,1035,1.179,1036,1.179,1066,1.156,1090,1.805,1098,2.752,1099,1.63,1100,1.63,1101,1.554,1102,1.519,1103,2.419,1104,1.63,1117,2.603,1153,3.016,1154,4.023]],["t/858",[58,0.74,64,0.843,72,1.14,73,0.782,74,0.859,82,1.017,83,2.334,84,1.797,89,2.511,90,2.447,91,2.987,92,2.328,98,2.169,105,1.036,106,1.408,107,1.365,143,2.259,147,1.62,161,2.987,205,1.402,295,0.648,367,1.261,428,1.864,438,1.211,474,1.57,514,1.499,546,0.997,565,1.315,569,1.608,577,2.857,579,0.925,582,1.433,660,2.273,661,1.608,749,1.433,915,1.211,930,2.511,1035,1.164,1036,1.164,1066,1.141,1090,1.781,1098,2.726,1099,1.608,1100,1.608,1101,1.533,1102,1.499,1103,2.387,1104,1.608,1117,2.578,1153,2.987,1154,3.985]],["t/861",[915,2.399,1080,3.527]],["t/863",[1080,3.527,1104,3.185]],["t/865",[147,2.16,454,2.827,565,2.537,869,4.81,1152,5.637]],["t/867",[58,1.156,64,0.819,72,1.04,73,0.871,74,0.956,78,1.419,82,1.132,83,2.476,84,1.907,88,2.012,90,2.641,92,2.513,98,2.342,105,1.153,106,1.494,107,1.473,143,1.893,147,1.246,205,1.56,224,3.123,295,0.721,297,1.783,350,1.527,367,1.404,438,1.348,474,1.748,514,1.668,546,1.11,565,1.463,568,3.224,569,1.79,579,1.03,582,1.595,660,2.453,661,1.79,749,1.595,803,3.064,915,1.348,931,2.942,1035,1.296,1036,1.296,1066,1.27,1090,1.983,1098,2.942,1099,1.79,1100,1.79,1101,1.707,1102,1.668,1116,4.301,1117,2.783,1155,4.565]],["t/869",[58,1.11,64,0.836,72,1.008,73,0.822,74,0.903,78,1.362,82,1.068,83,2.4,84,1.848,85,3.442,88,1.932,90,2.536,92,2.413,98,2.248,105,1.089,106,1.447,107,1.414,143,2.311,147,1.176,205,1.473,224,2.999,295,0.681,297,1.712,367,1.326,428,1.932,438,1.273,474,1.65,514,1.575,546,1.048,565,1.382,568,3.096,569,1.69,579,0.972,582,1.506,660,2.356,661,1.69,749,1.506,915,1.273,931,2.825,1035,1.223,1036,1.223,1066,1.199,1090,1.872,1098,2.825,1099,1.69,1100,1.69,1101,1.612,1102,1.575,1104,1.69,1116,4.13,1117,2.672,1156,2.893]],["t/872",[915,2.399,1080,3.527]],["t/874",[1080,3.527,1104,3.185]],["t/876",[147,2.16,454,2.827,565,2.537,869,4.81,1152,5.637]],["t/878",[58,1.189,64,0.815,72,1.063,73,0.907,74,0.995,78,1.459,82,1.178,83,2.53,84,1.948,88,2.069,89,2.787,92,2.584,98,2.408,105,1.201,106,1.526,107,1.515,143,1.946,147,1.297,205,1.624,224,3.212,295,0.751,297,1.834,350,1.589,367,1.462,438,1.403,474,1.819,514,1.736,546,1.156,565,1.523,569,1.864,579,1.072,582,1.66,660,2.523,661,1.864,749,1.66,803,3.19,915,1.403,932,2.862,1035,1.349,1036,1.349,1066,1.322,1090,2.064,1098,3.026,1099,1.864,1100,1.864,1101,1.777,1102,1.736,1155,4.694]],["t/880",[58,1.14,64,0.835,72,1.029,73,0.854,74,0.937,78,1.4,82,1.11,83,2.45,84,1.887,85,3.535,88,1.984,89,2.673,92,2.479,98,2.31,105,1.131,106,1.478,107,1.453,143,2.351,147,1.222,205,1.53,224,3.081,295,0.707,297,1.759,367,1.377,428,1.984,438,1.322,474,1.714,514,1.636,546,1.089,565,1.435,569,1.756,579,1.01,582,1.564,660,2.42,661,1.756,749,1.564,915,1.322,932,2.745,1035,1.271,1036,1.271,1066,1.246,1090,1.944,1098,2.902,1099,1.756,1100,1.756,1101,1.674,1102,1.636,1104,1.756,1156,3.005]],["t/883",[915,2.399,1080,3.527]],["t/885",[1080,3.527,1104,3.185]],["t/887",[1,0.705,3,2.491,58,0.705,64,0.838,72,1.169,75,1.429,76,1.429,78,0.866,79,1.906,80,1.179,83,2.271,84,1.477,86,1.337,87,2.56,106,1.37,112,1.28,113,1.429,143,1.694,215,2.377,243,2.177,254,1.497,295,0.618,312,3.338,320,1.572,438,1.155,498,2.987,569,1.534,601,1.654,605,3.849,657,2.987,764,2.987,765,2.987,766,2.987,767,2.987,768,2.987,769,2.987,856,6.227,918,2.377,930,1.654,931,1.796,932,1.698,976,2.786,977,2.625,1123,3.256,1157,3.665,1158,3.256,1159,3.256,1160,3.665,1161,3.256,1162,3.256,1163,3.256,1164,3.256,1165,3.256,1166,3.256,1167,3.665,1168,3.256,1169,3.256,1170,3.256,1171,3.665,1172,3.665,1173,3.665,1174,3.256,1175,3.256,1176,3.665,1177,3.665,1178,3.665,1179,3.665,1180,3.665,1181,5.375,1182,3.665,1183,3.665,1184,3.665,1185,3.665,1186,3.665,1187,3.665,1188,3.665,1189,3.665]],["t/889",[147,2.16,454,2.827,565,2.537,869,4.81,1152,5.637]],["t/891",[58,1.189,64,0.83,72,1.063,73,0.907,74,0.995,78,1.459,82,1.178,84,1.948,86,2.252,88,2.069,89,2.787,90,2.716,91,3.316,98,2.408,105,1.201,106,1.526,107,1.515,143,1.946,205,1.624,243,2.751,295,0.751,303,2.862,350,1.589,367,1.462,438,1.403,474,1.819,514,1.736,546,1.156,565,1.523,579,1.487,582,1.66,660,2.523,749,1.66,803,3.19,1035,1.349,1036,1.349,1066,1.322,1099,1.864,1100,1.864,1101,1.777,1102,1.736,1155,4.694]],["t/893",[58,1.14,64,0.843,72,1.029,73,0.854,74,0.937,78,1.4,82,1.11,84,1.887,85,3.535,86,2.16,88,1.984,89,2.673,90,2.605,91,3.18,98,2.31,105,1.131,106,1.478,107,1.453,143,2.351,205,1.53,243,2.691,295,0.707,303,2.745,367,1.377,428,1.984,438,1.322,474,1.714,514,1.636,546,1.089,565,1.435,579,1.426,582,1.564,660,2.42,749,1.564,1035,1.271,1036,1.271,1066,1.246,1099,1.756,1100,1.756,1101,1.674,1102,1.636,1104,1.756,1156,3.005]],["t/895",[58,1.121,64,0.841,72,1.016,73,0.834,74,0.915,78,1.376,82,1.084,84,1.862,85,3.476,86,2.124,88,1.951,89,2.628,90,2.561,91,3.127,98,2.271,105,1.104,106,1.459,107,1.429,143,2.326,205,1.494,213,2.498,243,2.667,295,0.69,303,2.699,312,2.545,330,3.777,367,1.344,428,1.951,438,1.291,474,1.674,514,1.597,546,1.063,565,1.401,579,1.402,582,1.527,660,2.379,749,1.527,1035,1.241,1036,1.241,1066,1.216,1099,1.714,1100,1.714,1101,1.635,1102,1.597,1104,1.714,1156,2.934]],["t/898",[1080,3.527,1104,3.185]],["t/900",[58,0.918,64,0.852,72,0.715,73,0.971,76,1.86,77,2.743,78,1.127,79,3.368,80,1.534,81,1.504,84,2.166,106,1.027,181,2.098,227,3.368,243,2.215,295,0.804,303,3.001,601,2.153,840,5.753,892,3.094,928,2.407,976,3.626,977,3.417,1128,4.239,1190,4.772,1191,6.475,1192,4.772,1193,4.772,1194,4.772,1195,4.772,1196,6.475,1197,4.239,1198,4.772,1199,4.772,1200,4.772]],["t/902",[1,0.617,3,2.179,58,0.617,64,0.849,72,1.113,73,0.652,81,1.01,84,1.336,87,2.799,88,1.074,112,1.12,113,1.25,215,2.079,227,2.529,254,1.31,295,0.54,320,1.375,348,2.612,393,3.483,438,1.01,452,2.179,498,3.963,504,3.963,522,3.65,564,2.612,573,2.296,601,1.447,630,2.612,632,3.963,764,2.612,765,2.612,766,2.612,767,2.612,768,3.963,769,4.789,862,2.848,976,2.437,977,2.296,983,2.848,1158,2.848,1159,2.848,1161,2.848,1162,2.848,1163,2.848,1164,2.848,1165,2.848,1166,2.848,1168,2.848,1169,2.848,1170,4.321,1174,2.848,1175,2.848,1201,3.206,1202,3.206,1203,3.206,1204,4.864,1205,3.206,1206,4.864,1207,3.206,1208,3.206,1209,3.206,1210,3.206,1211,3.206,1212,3.206,1213,3.206,1214,3.206,1215,3.206,1216,3.206,1217,3.206,1218,4.864,1219,3.206,1220,3.206,1221,3.206,1222,3.206,1223,3.206,1224,3.206,1225,3.206,1226,4.864,1227,3.206,1228,4.864,1229,3.206,1230,3.206,1231,3.206,1232,3.206,1233,3.206,1234,3.206,1235,3.206,1236,3.206,1237,3.206,1238,3.206]],["t/904",[1,0.446,7,1.439,58,0.446,64,0.854,66,0.637,67,0.827,72,0.969,74,1.586,76,0.903,78,1.783,80,0.745,86,1.374,87,2.612,88,2.283,147,0.675,227,1.205,243,1.289,249,3.273,254,0.947,271,1.332,287,2.766,295,0.39,297,0.688,305,1.439,320,0.994,350,0.827,367,0.76,409,1.169,477,1.286,492,1.439,499,1.244,569,0.97,571,2.643,577,0.809,579,0.907,582,2.249,601,1.046,622,1.761,633,1.888,702,1.439,706,1.244,707,1.66,710,4.067,734,2.166,774,1.575,776,1.575,874,1.439,884,1.761,906,1.846,907,1.503,913,1.439,914,2.556,915,1.5,916,1.66,918,1.503,922,2.249,929,1.66,930,2.475,932,1.746,935,1.66,936,1.66,937,1.66,940,4.469,945,1.888,953,2.166,954,2.249,1117,1.746,1153,1.244,1239,1.503,1240,1.503,1241,1.503,1242,2.059,1243,2.059,1244,2.059,1245,2.561,1246,1.503,1247,2.561,1248,1.503,1249,1.503,1250,1.503,1251,1.503,1252,1.575,1253,2.443,1254,2.443,1255,2.443,1256,1.503,1257,1.503,1258,4.872,1259,1.503,1260,3.347,1261,2.059,1262,2.059,1263,2.059,1264,2.059,1265,2.059,1266,2.059,1267,2.059,1268,1.503,1269,1.503,1270,1.761,1271,1.503,1272,1.761,1273,2.059]],["t/906",[1,0.437,7,1.409,58,0.437,64,0.855,66,0.623,67,0.81,72,0.96,74,1.574,76,0.885,78,1.771,80,0.73,86,1.35,87,2.579,88,2.262,147,0.661,213,0.973,227,1.926,243,1.267,249,3.232,254,0.927,271,1.305,287,2.732,295,0.382,297,1.1,305,1.409,320,0.973,330,1.471,350,0.81,367,0.745,409,1.145,477,1.259,492,1.409,499,1.218,569,0.949,571,2.605,577,0.793,579,0.891,582,2.224,601,1.024,622,1.724,633,1.849,702,1.409,706,1.218,707,1.625,710,4.031,734,2.129,774,1.542,776,1.542,874,1.409,884,1.724,906,1.814,907,1.471,913,1.409,914,2.519,915,1.479,916,1.625,918,1.471,922,2.21,929,1.625,930,2.444,932,1.716,935,1.625,936,1.625,937,1.625,940,4.413,945,1.849,953,2.129,954,2.21,1117,1.716,1153,1.218,1239,1.471,1240,1.471,1241,1.471,1242,2.016,1243,2.016,1244,2.016,1245,2.517,1246,1.471,1247,2.517,1248,1.471,1249,1.471,1250,1.471,1251,1.471,1252,1.542,1253,2.402,1254,2.402,1255,2.402,1256,1.471,1257,1.471,1258,4.811,1259,1.471,1260,3.29,1261,2.016,1262,2.016,1263,2.016,1264,2.016,1265,2.016,1266,2.016,1267,2.016,1268,1.471,1269,1.471,1271,1.471,1273,2.016,1274,1.849,1275,1.849]],["t/908",[1,0.545,58,0.545,64,0.854,66,0.778,67,1.01,72,0.921,74,1.577,76,1.103,78,1.895,80,0.91,86,1.611,87,2.925,88,2.556,147,0.824,213,1.214,224,2.298,243,0.968,249,2.637,254,1.156,271,1.627,287,2.229,295,0.477,297,0.84,305,1.758,320,2.634,350,1.01,409,1.428,477,1.571,492,1.758,499,1.519,571,1.571,577,0.989,601,1.277,702,1.758,706,1.519,710,4.402,734,1.627,874,2.744,906,2.165,907,1.835,913,1.758,914,2.918,915,0.892,922,2.637,923,1.835,930,2.772,932,1.311,953,2.541,954,2.637,1117,2.048,1153,1.519,1239,1.835,1240,1.835,1241,1.835,1245,1.924,1246,1.835,1247,1.924,1248,1.835,1249,1.835,1250,1.835,1251,1.835,1252,1.924,1253,2.865,1254,2.865,1255,2.865,1256,1.835,1257,1.835,1259,2.865,1268,1.835,1269,1.835,1270,2.151,1271,1.835,1272,2.151,1276,2.151,1277,2.514,1278,2.514,1279,2.514]],["t/910",[1,0.818,64,0.857,66,1.168,67,1.176,72,0.745,73,0.671,74,1.235,76,0.768,78,1.732,80,0.634,86,2.016,87,2.365,88,2.126,181,1.869,205,0.719,213,2.13,249,1.967,254,0.805,271,1.133,286,1.606,287,1.663,297,0.585,320,0.845,350,0.703,385,2.686,409,0.994,425,1.094,477,1.83,492,2.047,499,1.058,557,1.751,565,1.127,571,1.094,577,0.688,579,1.664,601,0.889,647,2.138,702,1.224,706,1.058,710,3.787,734,1.133,874,1.224,900,3.557,908,2.788,913,1.224,914,1.77,915,0.621,918,3.221,922,1.967,923,2.138,930,3.002,931,2.433,932,0.913,953,1.133,954,1.176,955,2.929,1117,1.527,1153,1.058,1239,1.278,1240,2.138,1241,2.138,1246,1.278,1248,1.278,1249,1.278,1250,1.278,1251,1.278,1253,2.138,1254,2.138,1255,2.138,1256,1.278,1257,1.278,1259,1.278,1268,1.278,1269,1.278,1270,1.498,1271,1.278,1272,1.498,1280,1.971,1281,1.971,1282,1.971,1283,1.971,1284,1.971,1285,1.971,1286,1.971,1287,1.971,1288,1.971,1289,4.249,1290,3.296,1291,1.971,1292,1.971,1293,4.249,1294,3.296,1295,1.971,1296,1.971,1297,1.971,1298,1.971,1299,1.971,1300,1.971,1301,6.653,1302,3.296,1303,1.971,1304,3.296,1305,3.296,1306,1.971,1307,3.296,1308,1.971,1309,3.296,1310,3.296]],["t/912",[1,0.585,58,0.585,64,0.854,66,0.835,67,1.084,72,0.956,74,1.624,76,1.184,78,1.932,80,0.977,86,1.108,87,3.038,88,2.535,147,0.884,249,2.786,254,1.241,271,1.747,287,2.355,295,0.512,297,0.902,305,1.887,320,1.303,350,1.084,409,1.532,477,1.686,492,1.887,499,1.631,571,1.686,577,1.061,601,1.371,702,1.887,706,1.631,710,4.517,734,1.747,874,1.887,906,2.287,907,1.97,913,1.887,914,3.052,915,0.957,922,2.786,930,2.879,932,1.408,953,2.684,954,2.786,1117,2.163,1153,1.631,1239,1.97,1240,1.97,1241,1.97,1245,2.065,1246,1.97,1247,2.065,1248,1.97,1249,1.97,1250,1.97,1251,1.97,1252,2.065,1253,3.027,1254,3.027,1255,3.027,1256,1.97,1257,1.97,1259,1.97,1268,1.97,1269,1.97,1270,2.309,1271,1.97,1272,2.309,1276,2.309]],["t/914",[1,0.569,58,0.569,64,0.855,66,0.812,67,1.055,72,0.942,74,1.606,76,1.152,78,1.918,80,0.95,86,1.078,87,2.994,88,2.51,147,0.86,213,1.267,227,1.537,249,2.727,254,1.207,271,1.699,287,2.305,295,0.498,297,1.357,305,1.836,320,1.267,330,1.916,350,1.055,409,1.491,477,1.64,492,1.836,499,1.587,571,1.64,577,1.032,601,1.334,702,1.836,706,1.587,710,4.472,734,1.699,874,1.836,906,2.239,907,1.916,913,1.836,914,3,915,0.931,922,2.727,930,2.837,932,1.369,953,2.627,954,2.727,1117,2.117,1153,1.587,1239,1.916,1240,1.916,1241,1.916,1245,2.009,1246,1.916,1247,2.009,1248,1.916,1249,1.916,1250,1.916,1251,1.916,1252,2.009,1253,2.963,1254,2.963,1255,2.963,1256,1.916,1257,1.916,1259,1.916,1268,1.916,1269,1.916,1271,1.916,1274,2.408,1275,2.408,1276,2.246]],["t/916",[28,2.644,166,4.115,295,1.117,450,3.342,518,5.887,521,5.4,561,5.887,661,2.772,706,3.557,957,5.887,958,5.887,959,5.887,960,5.887,961,5.887,962,5.887,963,5.887,1311,5.4,1312,6.626,1313,6.626]],["t/918",[1,0.531,58,0.531,64,0.855,66,0.758,67,0.984,72,0.908,74,1.561,76,1.075,78,1.881,80,0.887,86,1.579,87,2.885,88,2.534,147,0.803,213,1.857,224,2.252,227,1.435,243,0.943,249,2.585,254,1.127,271,1.586,287,2.185,295,0.465,297,1.286,305,1.713,320,2.597,330,1.789,350,0.984,409,1.391,477,1.531,492,1.713,499,1.481,571,1.531,577,0.964,601,1.245,702,1.713,706,1.481,710,4.36,734,1.586,874,2.69,906,2.122,907,1.789,913,1.713,914,2.87,915,0.869,922,2.585,923,1.789,930,2.733,932,1.278,953,2.49,954,2.585,1117,2.007,1153,1.481,1239,1.789,1240,1.789,1241,1.789,1245,1.875,1246,1.789,1247,1.875,1248,1.789,1249,1.789,1250,1.789,1251,1.789,1252,1.875,1253,2.808,1254,2.808,1255,2.808,1256,1.789,1257,1.789,1259,2.808,1268,1.789,1269,1.789,1271,1.789,1274,2.248,1275,2.248,1276,2.096,1277,2.451,1278,2.451,1279,2.451]],["t/920",[1,1.4,2,4.182,4,3.397,6,2.572,8,3.232,9,2.841,10,3.014,11,1.889,12,1.838,16,4.638,17,4.341,18,4.638,19,3.524,20,3.014,21,3.691,22,3.524,23,2.063,24,4.341,26,2.841,27,4.608,28,2.902,62,2.202,64,0.587,97,3.014,100,3.232,115,3.014,127,3.524,128,3.524,135,3.232,179,5.056,180,3.232,181,1.744,187,3.014,191,3.232,267,3.691,336,3.524,344,3.524,345,3.524,381,3.524,389,5.056,562,3.014,573,2.841,576,3.232,699,2.572,815,3.232,830,3.524,1314,3.966,1315,3.966,1316,3.966,1317,3.966,1318,5.691,1319,3.966,1320,3.966,1321,3.966,1322,5.691,1323,5.691,1324,3.966,1325,3.966,1326,3.966,1327,3.966,1328,3.966,1329,3.966,1330,3.966,1331,5.691,1332,3.966,1333,5.691,1334,3.966,1335,3.966,1336,3.966,1337,3.966,1338,3.966,1339,3.966,1340,3.966]],["t/922",[1,1.018,14,2.728,66,0.986,78,1.25,81,1.131,295,1.169,393,2.571,412,2.728,428,1.202,437,4.702,442,4.717,470,3.189,480,7.207,496,3.287,507,6.165,508,3.189,514,1.4,517,2.142,524,4.503,547,3.189,556,2.571,615,2.728,624,2.925,641,2.728,684,3.189,685,4.702,686,2.571,705,4.702,719,4.702,801,2.571,831,3.189,847,4.023,927,2.925,928,1.811,949,3.189,1000,3.189,1341,3.59,1342,3.59,1343,3.59,1344,5.293,1345,8.006,1346,3.59,1347,5.293,1348,3.59,1349,3.59,1350,3.59,1351,3.59,1352,3.59,1353,3.59,1354,3.59,1355,3.59,1356,3.59,1357,5.293,1358,6.287,1359,3.59,1360,3.59,1361,3.59,1362,3.59,1363,3.59,1364,3.59,1365,3.59,1366,3.59,1367,3.59,1368,3.59,1369,3.59,1370,5.293,1371,3.59,1372,3.59,1373,3.59,1374,3.59,1375,5.293,1376,3.59,1377,3.59,1378,3.59,1379,3.59,1380,3.59,1381,3.59,1382,5.293,1383,3.59,1384,3.59,1385,3.59,1386,3.59,1387,3.59,1388,3.59,1389,3.59]],["t/924",[28,2.664,58,1.285,147,1.944,205,2.435,521,5.441,546,2.084,565,2.284,642,5.075,749,2.489,1090,3.094,1102,2.603,1390,6.677,1391,6.677,1392,6.677,1393,6.677,1394,6.677,1395,6.677]],["t/926",[1,1.044,58,0.848,64,0.841,72,0.997,73,1.552,75,1.1,76,2.115,78,1.282,80,1.744,81,2.096,106,1.897,112,1.895,147,1.283,181,1.24,205,1.978,211,1.515,243,1.508,297,1.821,303,2.042,517,3.97,546,2.252,579,1.476,642,5.056,677,3.976,749,2.022,757,2.144,787,2.299,869,2.858,1038,1.829,1066,1.975,1101,2.446,1102,2.115,1107,1.752,1108,1.752,1197,2.506,1311,2.299,1396,5.91,1397,2.506,1398,2.506,1399,2.821,1400,2.821,1401,6.132,1402,2.821,1403,2.506,1404,2.506,1405,2.821,1406,2.506,1407,2.506,1408,3.916,1409,2.506,1410,2.506]],["t/928",[1,1.012,58,0.817,64,0.843,66,1.445,67,1.877,72,1.036,73,1.473,74,1.453,75,1.049,76,2.051,78,1.243,80,1.691,81,2.049,82,2.09,105,2.13,106,1.79,107,1.041,147,1.236,181,1.183,205,1.918,211,1.444,243,1.452,255,1.744,297,1.774,303,1.968,517,3.881,523,5.299,546,2.158,642,4.942,749,1.961,869,2.753,1066,1.931,1101,2.595,1102,2.051,1107,1.671,1108,1.671,1311,2.192,1396,5.777,1397,2.39,1398,2.39,1403,2.39,1404,2.39,1406,2.39,1407,2.39,1408,3.772,1409,2.39,1410,2.39,1411,2.69]],["t/930",[1412,7.546,1413,7.546,1414,7.546]]],"invertedIndex":[["",{"_index":64,"t":{"626":{"position":[[160,2],[215,2],[271,1],[355,3],[359,2],[383,1],[409,1],[443,1],[471,1],[490,1],[496,2],[521,2],[597,2],[677,1],[691,1],[711,1],[713,2],[765,1],[783,1],[817,1],[845,1],[847,1],[859,1],[861,3],[878,2],[903,1],[917,1],[937,1],[939,2],[970,1],[991,2],[1047,1],[1125,3],[1129,2],[1175,1],[1203,1],[1222,1],[1261,1],[1285,2],[1361,2],[1441,1],[1443,2],[1446,2],[1520,1],[1548,1],[1550,1],[1562,1],[1564,3],[1606,1],[1630,1],[1632,2]]},"628":{"position":[[235,1],[837,1],[839,2],[895,1],[979,3],[983,2],[1078,1],[1114,1],[1142,1],[1144,1],[1156,1],[1158,3],[1181,2],[1206,2],[1282,2],[1362,1],[1376,1],[1396,1],[1410,1],[1431,2],[1487,1],[1565,3],[1569,2],[1668,1],[1696,1],[1698,1],[1710,1],[1712,3],[1768,1],[1792,2],[1868,2],[1948,1],[1950,2]]},"630":{"position":[[292,1],[476,2],[586,1],[718,2],[765,1],[817,2],[888,1],[962,3],[978,1],[999,2],[1109,1],[1241,2],[1288,1],[1340,2],[1411,1],[1485,3],[1735,1],[1737,2],[1804,1],[1855,2],[1868,1],[1921,1],[1933,1],[1947,1],[1967,1],[1969,2],[2086,1],[2088,2],[2101,1],[2154,1],[2166,3],[2307,2],[2364,1],[2394,2],[2442,3],[2446,4],[2451,2],[2537,2],[2623,1],[2625,2],[2667,3],[2671,4],[2676,2],[2762,3]]},"632":{"position":[[143,1],[145,2],[201,1],[285,3],[289,2],[340,1],[376,1],[404,1],[406,1],[418,1],[420,3],[438,2],[441,1],[568,2],[623,2],[722,2],[800,1],[903,3],[907,2],[958,1],[994,1],[1022,1],[1024,1],[1036,1],[1038,3],[1056,2],[1233,1],[1235,2],[1265,1],[1337,3],[1341,2],[1410,1],[1428,2],[1482,1],[1521,1],[1659,1],[1680,2],[1709,1],[1787,3],[1849,2],[1852,1],[1873,2],[1905,2]]},"634":{"position":[[145,1],[452,1],[555,3],[570,1],[667,3],[705,1],[731,1],[809,3],[835,2],[943,2],[977,1],[991,1],[1011,1],[1025,1],[1084,2],[1119,1],[1143,2],[1251,2],[1285,1],[1287,2]]},"636":{"position":[[9,1],[96,1],[304,1]]},"638":{"position":[[20,1],[195,1],[269,1]]},"646":{"position":[[632,1]]},"650":{"position":[[122,1],[132,1],[191,1],[246,2],[249,2],[252,2]]},"652":{"position":[[49,1],[61,1],[123,2],[170,2]]},"654":{"position":[[7,1],[13,1],[68,1]]},"656":{"position":[[7,1],[27,1],[216,2],[385,2]]},"660":{"position":[[837,1],[941,1],[968,2],[980,2],[983,1],[1014,1],[1051,2],[1054,1],[1071,1],[1109,2],[1173,2],[1189,2],[1192,1],[1194,2],[1259,3],[1263,2],[1266,2],[1269,2],[1272,3],[1687,1],[1806,2],[1832,2],[1839,1],[1856,3],[1876,1],[1898,2],[1901,1],[1918,1],[1946,2],[1993,2],[2085,3],[2089,1],[2096,1],[2108,1],[2175,2],[2188,1],[2205,1],[2207,2],[2210,3]]},"662":{"position":[[523,1],[674,1],[676,2],[689,3],[727,2],[740,2],[743,1],[780,1],[836,2],[839,2],[867,2],[880,2],[883,1],[920,1],[976,2],[979,2],[1007,2],[1020,2],[1023,1],[1060,1],[1116,2],[1119,2],[1122,2],[1125,3]]},"665":{"position":[[162,1],[462,1],[500,1],[512,1],[525,2],[540,2],[543,1],[545,2],[578,1],[580,1],[582,1],[621,2],[639,1],[641,1],[648,1],[650,1],[652,3],[686,1],[698,1],[705,2],[720,2],[723,1],[725,2],[735,1],[737,1],[739,1],[767,3],[799,1],[811,1],[818,2],[833,2],[836,1],[838,2],[856,1],[865,3],[869,2],[973,1],[975,1],[977,1],[1006,2],[1009,1],[1011,2],[1029,1],[1038,3]]},"667":{"position":[[14,1],[16,1],[68,2],[112,2],[115,1],[117,2],[170,2],[241,2],[244,4],[249,2],[252,3]]},"669":{"position":[[453,2],[562,1],[590,2],[593,2],[619,1],[693,1],[727,1],[776,1],[798,2],[801,2],[816,2],[898,1],[927,1],[965,1],[1052,2],[1055,1],[1057,2],[1096,1],[1149,1],[1238,3],[1242,3],[1246,2],[1249,1],[1285,2],[1288,3],[1379,2]]},"671":{"position":[[10,1],[40,1],[73,1],[111,1],[226,2],[255,3],[592,1],[635,1],[668,1],[759,1],[777,1],[800,1],[834,2],[837,1],[869,1],[871,2],[895,2],[898,3]]},"674":{"position":[[69,1]]},"678":{"position":[[107,2],[255,2],[497,1]]},"686":{"position":[[254,1],[278,1]]},"693":{"position":[[60,1],[62,1],[64,1],[66,1],[100,2],[103,1],[105,2],[114,1],[116,1],[129,1],[131,1],[133,2],[157,1],[159,1],[161,1],[163,1],[243,3],[247,2],[287,1],[289,1],[291,1],[293,1],[359,1],[361,1],[363,1],[365,1]]},"695":{"position":[[165,1],[167,1],[169,1],[199,2],[202,1],[204,2],[266,3],[295,2],[395,1],[407,2],[423,2],[489,2],[492,1],[494,2],[498,1],[500,1],[502,1],[513,1],[515,1],[517,3],[521,2],[573,2],[683,3]]},"697":{"position":[[22,1]]},"699":{"position":[[63,1],[81,1],[96,1],[114,1],[155,1],[187,1],[230,1],[250,1]]},"701":{"position":[[105,1],[140,1],[201,1],[211,1],[256,2],[259,1],[333,1],[343,1],[388,2],[391,1],[466,1],[476,1],[528,1],[538,1],[583,2],[586,1],[620,1],[622,2],[625,1],[627,2],[630,1],[632,2]]},"708":{"position":[[233,1],[266,1]]},"710":{"position":[[14,1],[34,1],[83,1],[85,1],[119,2],[133,1]]},"712":{"position":[[14,1],[28,1],[71,1],[73,1],[107,2],[121,1]]},"714":{"position":[[37,1],[67,2],[70,1],[72,3],[76,1],[85,1],[87,1],[97,1],[99,1],[101,2],[104,3],[131,1],[161,2],[164,1],[166,3],[170,1],[179,1],[181,1],[191,1],[193,1],[195,2],[198,3]]},"717":{"position":[[68,1],[84,1],[112,1],[171,3],[175,2],[223,1],[253,2],[256,1],[277,3],[281,1],[290,1],[292,1],[302,1],[304,1],[306,2],[309,3],[313,2],[390,2],[393,1],[414,3],[418,1],[427,1],[429,1],[454,1],[456,1],[458,2],[461,3],[513,1],[529,1],[557,1],[635,3],[639,2],[688,1],[703,1],[731,2],[734,1],[755,3],[759,1],[768,1],[770,1],[777,1],[779,1],[781,2],[784,1],[786,2],[789,2],[866,2],[869,1],[890,3],[894,1],[903,1],[905,1],[914,1],[916,1],[918,2],[921,3]]},"719":{"position":[[85,1],[101,1],[129,1],[214,3],[228,1],[230,1],[241,1],[263,1],[276,2],[327,2],[330,1],[351,3],[355,1],[364,1],[366,1],[368,1],[378,1],[380,2],[383,1],[385,1],[395,1],[397,1],[399,1],[401,2],[404,3]]},"721":{"position":[[322,1],[340,1],[368,1],[427,3],[441,1],[443,1],[452,1],[457,2],[508,2],[511,1],[534,3],[538,1],[565,1],[618,3],[672,1],[674,2],[677,3]]},"723":{"position":[[173,1],[191,1],[219,1],[304,3],[318,1],[320,1],[329,1],[341,1],[346,2],[400,2],[403,1],[427,3],[431,1],[443,1],[461,1],[514,3],[569,2],[588,1],[641,3],[695,1],[697,1],[699,2],[702,3]]},"725":{"position":[[281,1],[320,1],[348,1],[407,3],[411,3],[431,2],[486,3],[506,2],[566,1],[578,1],[587,3],[591,3],[615,2],[628,1],[721,2],[724,1],[747,3],[751,1],[778,1],[831,3],[885,1],[887,2],[890,3],[1066,3],[1107,2]]},"735":{"position":[[35,1],[71,1],[113,1],[157,2],[217,2],[350,2],[355,1],[377,3],[430,2],[433,1],[461,2],[464,2]]},"739":{"position":[[0,2],[18,2],[33,1],[62,2],[136,2],[191,2],[194,2],[210,2],[271,2],[312,1],[356,2],[483,2],[486,1],[498,1],[563,2],[581,2],[584,1],[617,2],[633,2],[636,1],[656,2],[714,3]]},"741":{"position":[[26,1],[40,1],[80,1],[128,3],[153,1],[182,3],[222,1],[250,1],[264,1],[304,1],[340,3],[344,2],[480,3],[534,1]]},"743":{"position":[[12,1],[42,1],[72,2],[75,1],[85,1],[164,3],[179,1],[287,1],[299,4],[319,3]]},"747":{"position":[[103,1],[122,1],[198,2],[201,1],[215,1],[235,1],[249,1],[287,1],[357,2],[398,2],[401,1],[421,3]]},"749":{"position":[[107,1],[126,1],[210,2],[225,2],[238,3],[242,3],[246,1],[260,1],[280,1],[294,1],[332,1],[410,2],[425,2],[438,3],[442,3],[484,2],[487,1],[507,3]]},"751":{"position":[[107,1],[126,1],[159,2],[162,3],[243,2],[246,3],[250,1],[264,1],[284,1],[298,1],[336,1],[363,2],[366,3],[448,3],[490,2],[493,1],[513,3]]},"753":{"position":[[125,1],[144,1],[177,2],[180,3],[189,1],[191,2],[242,2],[338,2],[341,3],[345,1],[359,1],[379,1],[393,1],[431,1],[458,2],[461,3],[470,1],[472,2],[523,2],[619,2],[622,3],[664,2],[667,1],[687,3]]},"755":{"position":[[294,1],[313,1],[346,2],[349,3],[420,3],[424,1],[438,1],[458,1],[472,1],[486,1],[589,1],[603,1],[623,1],[637,1],[675,1],[702,2],[705,3],[776,3],[818,2],[821,1],[841,3],[924,1],[970,1],[998,1],[1018,3]]},"757":{"position":[[13,1],[77,1],[129,1]]},"759":{"position":[[66,1],[109,1],[148,1],[183,3],[204,1],[251,3],[293,2],[296,1],[316,3],[332,1],[375,1],[414,1],[468,2],[471,1],[513,3],[517,2],[520,3],[562,2],[565,1],[585,3],[666,2],[669,1],[697,1],[725,1],[754,3],[825,2],[828,1],[856,1],[884,1],[913,3],[984,2],[987,1],[1015,1],[1043,1],[1072,3]]},"766":{"position":[[97,1],[110,1],[192,1],[222,2],[225,3],[262,1],[276,1],[296,1],[310,1],[342,1],[453,1],[481,1],[509,1],[511,2],[514,3],[551,3]]},"768":{"position":[[95,1],[108,1],[180,2],[195,2],[208,3],[212,3],[233,1],[263,2],[266,3],[303,1],[317,1],[337,1],[351,1],[383,1],[455,2],[470,2],[483,3],[487,3],[537,1],[565,1],[593,1],[595,2],[598,3],[635,3]]},"770":{"position":[[95,1],[108,1],[129,2],[132,3],[213,2],[216,3],[237,1],[267,2],[270,3],[307,1],[321,1],[341,1],[355,1],[387,1],[408,2],[411,3],[493,3],[543,1],[571,1],[599,1],[601,2],[604,3],[641,3]]},"772":{"position":[[113,1],[126,1],[147,2],[150,3],[159,1],[161,2],[212,2],[308,2],[311,3],[332,1],[362,2],[365,3],[402,1],[416,1],[436,1],[450,1],[482,1],[503,2],[506,3],[515,1],[517,2],[568,2],[664,2],[667,3],[717,1],[745,1],[773,1],[775,2],[778,3],[815,3]]},"774":{"position":[[282,1],[295,1],[316,2],[319,3],[390,3],[411,1],[441,2],[444,3],[481,1],[495,1],[515,1],[529,1],[543,1],[640,1],[654,1],[674,1],[688,1],[720,1],[741,2],[744,3],[815,3],[865,1],[893,1],[921,1],[923,2],[926,3],[963,3],[1046,1],[1086,1],[1114,1],[1134,3]]},"776":{"position":[[13,1],[77,1],[129,1]]},"778":{"position":[[54,1],[97,1],[136,1],[171,3],[186,1],[227,3],[243,1],[286,1],[319,1],[367,2],[370,1],[412,3],[416,2],[419,3],[494,2],[497,1],[525,1],[553,1],[582,3],[647,2],[650,1],[678,1],[706,1],[735,3],[800,2],[803,1],[831,1],[859,1],[888,3]]},"783":{"position":[[105,1],[140,1]]},"786":{"position":[[63,1],[75,1],[111,1],[113,1],[138,1],[173,1],[256,1],[270,1],[290,1],[302,1],[338,1],[340,1],[365,1],[431,2],[434,1],[462,1],[490,1],[534,3]]},"788":{"position":[[58,1],[70,1],[106,1],[108,1],[133,1],[168,1],[210,2],[213,3],[231,3],[277,1],[291,1],[311,1],[323,1],[359,1],[361,1],[386,1],[418,1],[433,2],[436,3],[454,2],[479,2],[482,1],[510,1],[538,1],[582,1],[584,2]]},"790":{"position":[[73,1],[85,1],[121,1],[123,1],[148,1],[183,1],[211,1],[218,2],[221,3],[239,2],[249,2],[294,1],[308,1],[328,1],[340,1],[376,1],[378,1],[403,1],[435,1],[442,2],[445,3],[463,2],[496,2],[499,1],[527,1],[555,1],[599,1],[601,2]]},"799":{"position":[[105,1],[125,1],[228,2],[259,7],[284,1],[331,2],[334,3],[371,1],[385,1],[405,1],[419,1],[458,1],[561,2],[592,7],[665,1],[693,1],[721,1],[723,2],[726,3],[763,3]]},"801":{"position":[[103,1],[123,1],[180,1],[233,2],[248,2],[261,3],[265,3],[269,2],[300,7],[325,1],[372,2],[375,3],[412,1],[426,1],[446,1],[460,1],[499,1],[556,1],[609,2],[624,2],[637,3],[641,3],[645,2],[676,7],[749,1],[777,1],[805,1],[807,2],[810,3],[847,3]]},"803":{"position":[[103,1],[123,1],[180,1],[182,2],[185,3],[266,2],[269,3],[273,2],[304,7],[329,1],[376,2],[379,3],[416,1],[430,1],[450,1],[464,1],[503,1],[560,1],[562,2],[565,3],[647,3],[651,2],[682,7],[755,1],[783,1],[811,1],[813,2],[816,3],[853,3]]},"805":{"position":[[121,1],[141,1],[198,1],[200,2],[203,3],[212,1],[214,2],[265,2],[361,2],[364,3],[368,2],[399,7],[424,1],[471,2],[474,3],[511,1],[525,1],[545,1],[559,1],[598,1],[655,1],[657,2],[660,3],[669,1],[671,2],[722,2],[818,2],[821,3],[825,2],[856,7],[929,1],[957,1],[985,1],[987,2],[990,3],[1027,3]]},"807":{"position":[[290,1],[310,1],[367,1],[369,2],[372,3],[443,3],[447,2],[478,7],[503,1],[550,2],[553,3],[590,1],[604,1],[624,1],[638,1],[652,1],[756,1],[770,1],[790,1],[804,1],[843,1],[900,1],[902,2],[905,3],[976,3],[980,2],[1011,7],[1084,1],[1112,1],[1140,1],[1142,2],[1145,3],[1182,3],[1265,1],[1312,1],[1340,1],[1360,3]]},"809":{"position":[[13,1],[77,1],[129,1]]},"811":{"position":[[62,1],[105,1],[144,1],[179,3],[201,1],[258,1],[280,3],[284,2],[315,7],[343,1],[385,1],[428,1],[468,1],[525,1],[554,2],[557,1],[599,3],[603,2],[606,3],[610,2],[641,7],[669,1],[779,2],[782,1],[810,1],[838,1],[867,3],[941,2],[944,1],[972,1],[1000,1],[1029,3],[1103,2],[1106,1],[1134,1],[1162,1],[1191,3]]},"817":{"position":[[63,1],[75,1],[85,1],[113,1],[115,1],[127,1],[129,3],[146,1],[183,1],[264,1],[278,1],[298,1],[310,1],[320,1],[348,1],[350,1],[362,1],[364,3],[381,1],[449,2],[452,1],[480,1],[508,1],[550,3]]},"819":{"position":[[58,1],[70,1],[80,1],[108,1],[110,1],[122,1],[124,3],[141,1],[178,1],[220,2],[223,3],[241,3],[285,1],[299,1],[319,1],[331,1],[341,1],[369,1],[371,1],[383,1],[385,3],[402,1],[438,1],[453,2],[456,3],[474,2],[497,2],[500,1],[528,1],[556,1],[598,1],[600,2]]},"821":{"position":[[73,1],[85,1],[95,1],[123,1],[125,1],[137,1],[139,3],[156,1],[193,1],[221,1],[228,2],[231,3],[249,2],[259,2],[302,1],[316,1],[336,1],[348,1],[358,1],[386,1],[388,1],[400,1],[402,3],[419,1],[455,1],[462,2],[465,3],[483,2],[514,2],[517,1],[545,1],[573,1],[615,1],[617,2]]},"827":{"position":[[63,1],[75,1],[103,1],[105,1],[120,1],[122,1],[147,1],[186,1],[269,1],[283,1],[303,1],[315,1],[343,1],[345,1],[360,1],[362,1],[387,1],[457,2],[460,1],[488,1],[516,1],[560,3]]},"829":{"position":[[58,1],[70,1],[98,1],[100,1],[115,1],[117,1],[142,1],[181,1],[223,2],[226,3],[244,3],[290,1],[304,1],[324,1],[336,1],[364,1],[366,1],[381,1],[383,1],[408,1],[444,1],[459,2],[462,3],[480,2],[505,2],[508,1],[536,1],[564,1],[608,1],[610,2]]},"831":{"position":[[73,1],[85,1],[113,1],[115,1],[130,1],[132,1],[157,1],[196,1],[224,1],[231,2],[234,3],[252,2],[262,2],[307,1],[321,1],[341,1],[353,1],[381,1],[383,1],[398,1],[400,1],[425,1],[461,1],[468,2],[471,3],[489,2],[522,2],[525,1],[553,1],[581,1],[625,1],[627,2]]},"838":{"position":[[63,1],[114,1],[124,1],[238,3],[290,1],[348,1],[371,1],[413,1],[425,1],[464,1],[647,1],[759,2],[762,2],[878,2],[889,1],[953,1],[1055,3],[1155,1],[1267,2],[1270,2],[1323,1],[1379,1],[1397,2],[1400,1],[1423,2],[1439,2],[1442,1],[1483,3],[1513,1],[1551,1],[1581,2],[1584,1],[1594,1],[1678,3],[1693,1],[1801,1],[1813,4],[1833,2],[1851,2],[1854,1],[1877,2],[1902,1],[1933,3],[1937,1],[1983,1],[1985,1],[2050,3],[2085,1],[2130,2],[2141,2],[2154,3],[2192,1],[2216,1],[2218,1]]},"840":{"position":[[45,1]]},"844":{"position":[[46,1],[58,1],[155,1],[228,1],[242,1],[262,1],[274,1],[392,2],[395,1],[423,1],[451,1],[495,3]]},"846":{"position":[[56,1],[68,1],[165,1],[197,2],[200,3],[218,3],[264,1],[278,1],[298,1],[310,1],[402,1],[409,2],[412,3],[430,2],[455,2],[458,1],[486,1],[514,1],[558,1],[560,2]]},"854":{"position":[[63,1],[75,1],[120,3],[124,3],[128,7],[149,1],[200,1],[283,1],[297,1],[317,1],[329,1],[374,3],[378,3],[382,7],[403,1],[485,2],[488,1],[516,1],[544,1],[588,3]]},"856":{"position":[[58,1],[70,1],[115,3],[119,3],[123,7],[144,1],[195,1],[237,2],[240,3],[258,3],[304,1],[318,1],[338,1],[350,1],[395,3],[399,3],[403,7],[424,1],[472,1],[487,2],[490,3],[508,2],[533,2],[536,1],[564,1],[592,1],[636,1],[638,2]]},"858":{"position":[[73,1],[85,1],[130,3],[134,3],[138,7],[159,1],[210,1],[238,1],[245,2],[248,3],[266,2],[276,2],[321,1],[335,1],[355,1],[367,1],[412,3],[416,3],[420,7],[441,1],[489,1],[496,2],[499,3],[517,2],[550,2],[553,1],[581,1],[609,1],[653,1],[655,2]]},"867":{"position":[[46,1],[58,1],[86,1],[104,1],[146,1],[219,1],[233,1],[253,1],[265,1],[293,1],[311,1],[374,2],[377,1],[405,1],[433,1],[477,3]]},"869":{"position":[[56,1],[68,1],[96,1],[114,1],[156,1],[188,2],[191,3],[209,3],[255,1],[269,1],[289,1],[301,1],[329,1],[347,1],[384,1],[391,2],[394,3],[412,2],[437,2],[440,1],[468,1],[496,1],[540,1],[542,2]]},"878":{"position":[[46,1],[58,1],[94,1],[136,1],[209,1],[223,1],[243,1],[255,1],[291,1],[354,2],[357,1],[385,1],[413,1],[457,3]]},"880":{"position":[[56,1],[68,1],[104,1],[146,1],[178,2],[181,3],[199,3],[245,1],[259,1],[279,1],[291,1],[327,1],[364,1],[371,2],[374,3],[392,2],[417,2],[420,1],[448,1],[476,1],[520,1],[522,2]]},"887":{"position":[[35,1],[74,1],[132,1],[208,2],[211,1],[395,1],[419,3],[461,2],[464,1],[526,3],[543,1],[652,3],[679,2],[682,1],[756,1],[758,2],[807,2],[881,1],[883,2],[939,1],[963,1],[1076,1],[1083,1],[1085,2],[1147,1],[1216,1],[1218,3],[1222,3],[1267,3]]},"891":{"position":[[46,1],[58,1],[68,1],[96,1],[115,1],[143,1],[214,1],[228,1],[248,1],[260,1],[270,1],[298,1],[317,1],[366,2],[369,1],[397,1],[425,1],[467,3]]},"893":{"position":[[56,1],[68,1],[78,1],[106,1],[125,1],[153,1],[185,2],[188,3],[206,3],[250,1],[264,1],[284,1],[296,1],[306,1],[334,1],[353,1],[378,1],[385,2],[388,3],[406,2],[429,2],[432,1],[460,1],[488,1],[530,1],[532,2]]},"895":{"position":[[56,1],[68,1],[78,1],[106,1],[125,1],[153,1],[204,2],[207,3],[225,3],[269,1],[283,1],[303,1],[315,1],[325,1],[353,1],[372,1],[397,1],[423,2],[426,3],[444,2],[467,2],[470,1],[498,1],[526,1],[568,1],[570,2]]},"900":{"position":[[34,1],[136,3],[155,2],[158,1],[171,1],[178,1],[188,1],[221,2],[224,1],[253,2],[313,3],[317,1],[319,2],[344,2],[347,1],[360,1],[367,1],[377,1],[408,2],[411,1],[470,2],[473,1],[516,3],[520,3],[524,1],[526,2]]},"902":{"position":[[35,1],[68,1],[124,1],[194,1],[233,1],[277,1],[373,2],[389,1],[401,1],[408,1],[410,2],[464,1],[509,3],[513,1],[515,1],[530,1],[606,2],[609,1],[611,2],[643,2],[693,3],[697,2],[783,2],[856,2],[886,2],[976,3],[1018,2],[1021,1],[1083,3],[1112,2],[1115,1],[1137,1],[1324,2],[1327,3],[1356,4],[1361,3],[1365,10],[1376,7],[1393,4],[1424,7],[1432,4],[1437,8],[1446,6],[1453,11],[1496,3],[1500,3]]},"904":{"position":[[9,3],[13,1],[60,1],[148,2],[165,1],[239,1],[301,1],[329,1],[355,1],[398,2],[401,1],[413,2],[428,3],[467,1],[469,1],[569,2],[596,2],[613,2],[623,2],[626,2],[629,1],[663,1],[665,1],[673,3],[683,3],[697,3],[711,3],[715,2],[729,1],[769,3],[814,2],[885,3],[919,2],[1051,2],[1054,3],[1079,2],[1099,1],[1178,4],[1183,4],[1188,6],[1230,2],[1282,3],[1334,2],[1409,3],[1451,2],[1531,1],[1567,3],[1571,3],[1589,2],[1616,1],[1716,2],[1719,1],[1721,3],[1823,2],[1856,1],[1887,3],[1942,1],[1949,1],[1972,2],[1975,1],[2006,3],[2027,2],[2073,3],[2077,1],[2079,3],[2101,5],[2107,3],[2118,1],[2120,1],[2134,1],[2153,1],[2161,1],[2175,1],[2194,1],[2202,1],[2215,1],[2234,1],[2242,1],[2255,1],[2274,1],[2282,1],[2296,1],[2315,1],[2334,2]]},"906":{"position":[[9,3],[13,1],[60,1],[148,2],[165,1],[239,1],[301,1],[303,3],[310,2],[324,3],[333,2],[347,1],[373,1],[416,2],[419,1],[431,2],[446,3],[485,1],[487,1],[587,2],[614,2],[631,2],[641,2],[644,2],[647,1],[681,1],[683,1],[691,3],[701,3],[715,3],[729,3],[752,2],[766,1],[806,3],[851,2],[922,3],[956,2],[1088,2],[1091,3],[1116,2],[1136,1],[1215,4],[1220,4],[1225,6],[1267,2],[1319,3],[1371,2],[1446,3],[1488,2],[1568,1],[1604,3],[1608,3],[1626,2],[1653,1],[1753,2],[1756,1],[1758,3],[1860,2],[1893,1],[1924,3],[1979,1],[1986,1],[2009,2],[2012,1],[2043,3],[2064,2],[2108,3],[2112,1],[2114,3],[2136,5],[2142,3],[2153,1],[2155,1],[2169,1],[2188,1],[2196,1],[2210,1],[2229,1],[2237,1],[2250,1],[2269,1],[2277,1],[2290,1],[2309,1],[2317,1],[2331,1],[2350,1],[2369,2]]},"908":{"position":[[9,3],[13,1],[60,1],[148,2],[165,1],[218,1],[280,1],[308,1],[317,2],[320,2],[323,1],[357,1],[359,1],[367,3],[377,3],[391,3],[405,3],[435,2],[449,1],[489,3],[534,2],[605,3],[639,2],[771,2],[774,3],[799,2],[819,1],[898,4],[903,4],[908,6],[950,2],[1002,3],[1020,2],[1036,1],[1066,1],[1076,1],[1130,1],[1194,2],[1197,2],[1221,2],[1224,1],[1247,2],[1250,1],[1276,3],[1297,2],[1343,3],[1347,3],[1369,5],[1375,3],[1386,1],[1388,1],[1402,1],[1416,1],[1424,1],[1438,1],[1452,1],[1460,1],[1473,1],[1487,1],[1495,1],[1508,1],[1522,1],[1530,1],[1544,2]]},"910":{"position":[[15,3],[19,1],[66,2],[76,1],[90,1],[122,1],[130,1],[185,1],[213,1],[241,1],[243,1],[251,3],[261,3],[275,3],[289,3],[293,2],[303,2],[306,2],[309,1],[323,1],[344,3],[389,2],[450,3],[484,2],[606,2],[609,3],[634,2],[654,1],[723,4],[728,4],[733,6],[775,2],[827,3],[845,2],[862,1],[895,1],[932,2],[962,2],[965,1],[991,3],[1012,2],[1058,3],[1092,5],[1098,3],[1109,1],[1111,1],[1125,1],[1139,1],[1147,1],[1161,1],[1175,1],[1183,1],[1196,1],[1210,1],[1218,1],[1231,1],[1245,1],[1253,1],[1267,2],[1270,3],[1274,1],[1321,2],[1331,1],[1396,1],[1440,1],[1534,1],[1553,1],[1578,1],[1610,1],[1612,3],[1683,2],[1713,1],[1742,1],[1774,1],[1776,3],[1804,2],[1823,1],[1907,1],[1909,3],[1965,2],[1991,1],[2077,1],[2079,3],[2112,2],[2133,1],[2217,1],[2219,3],[2297,2],[2319,1],[2405,1],[2407,3],[2435,2],[2456,1],[2542,1],[2544,3],[2600,2],[2628,1],[2716,1],[2718,3],[2751,2],[2774,1],[2860,1],[2862,3],[2940,2],[2964,1],[3052,1],[3054,3],[3085,2],[3105,1],[3125,1],[3127,1]]},"912":{"position":[[9,3],[13,1],[60,1],[148,2],[165,1],[218,1],[280,1],[308,1],[317,2],[320,2],[323,1],[357,1],[359,1],[367,3],[377,3],[391,3],[405,3],[409,2],[423,1],[463,3],[508,2],[579,3],[613,2],[745,2],[748,3],[773,2],[793,1],[872,4],[877,4],[882,6],[924,2],[976,3],[994,2],[1011,1],[1047,1],[1084,2],[1108,2],[1111,1],[1137,3],[1158,2],[1204,3],[1226,5],[1232,3],[1243,1],[1245,1],[1259,1],[1273,1],[1281,1],[1295,1],[1309,1],[1317,1],[1330,1],[1344,1],[1352,1],[1365,1],[1379,1],[1387,1],[1401,2]]},"914":{"position":[[9,3],[13,1],[60,1],[148,2],[165,1],[218,1],[280,1],[282,3],[289,2],[303,3],[312,2],[326,1],[335,2],[338,2],[341,1],[375,1],[377,1],[385,3],[395,3],[409,3],[423,3],[446,2],[460,1],[500,3],[545,2],[616,3],[650,2],[782,2],[785,3],[810,2],[830,1],[909,4],[914,4],[919,6],[961,2],[1013,3],[1031,2],[1048,1],[1084,1],[1121,2],[1145,2],[1148,1],[1174,3],[1195,2],[1239,3],[1261,5],[1267,3],[1278,1],[1280,1],[1294,1],[1308,1],[1316,1],[1330,1],[1344,1],[1352,1],[1365,1],[1379,1],[1387,1],[1400,1],[1414,1],[1422,1],[1436,2]]},"918":{"position":[[9,3],[13,1],[60,1],[148,2],[165,1],[218,1],[280,1],[282,3],[289,2],[303,3],[312,2],[326,1],[335,2],[338,2],[341,1],[375,1],[377,1],[385,3],[395,3],[409,3],[423,3],[472,2],[486,1],[526,3],[571,2],[642,3],[676,2],[808,2],[811,3],[836,2],[856,1],[935,4],[940,4],[945,6],[987,2],[1039,3],[1057,2],[1073,1],[1103,1],[1113,1],[1167,1],[1231,2],[1234,2],[1258,2],[1261,1],[1284,2],[1287,1],[1313,3],[1334,2],[1378,3],[1382,3],[1404,5],[1410,3],[1421,1],[1423,1],[1437,1],[1451,1],[1459,1],[1473,1],[1487,1],[1495,1],[1508,1],[1522,1],[1530,1],[1543,1],[1557,1],[1565,1],[1579,2]]},"920":{"position":[[17,1],[354,1],[531,1]]},"926":{"position":[[166,1],[198,1],[231,3],[241,3],[255,3],[259,3],[301,2],[304,1],[332,1],[379,1],[381,3],[508,1],[540,1],[567,3],[577,3],[591,3],[595,3],[636,2],[639,1],[667,1],[724,1],[726,3],[860,1],[899,1],[953,1],[961,3],[971,3],[985,3],[989,3],[1046,2],[1049,1],[1077,1],[1141,1],[1143,3],[1280,1],[1298,2],[1301,1],[1329,1],[1375,1],[1396,3],[1613,1],[1631,2],[1634,1],[1662,1],[1706,1],[1727,3]]},"928":{"position":[[184,1],[203,1],[242,3],[252,3],[266,3],[270,3],[274,1],[288,1],[316,1],[336,1],[338,1],[489,1],[516,3],[526,3],[540,3],[544,3],[552,1],[571,1],[601,1],[615,1],[643,1],[663,1],[665,1],[830,1],[884,1],[892,3],[902,3],[916,3],[920,3],[928,1],[972,1],[986,1],[1014,1],[1061,1],[1063,1],[1165,1],[1180,1],[1216,1],[1242,1],[1256,1],[1284,1],[1322,1],[1324,1],[1508,1],[1523,1],[1557,1],[1583,1],[1597,1],[1625,1],[1661,1],[1663,1]]}}}],["0",{"_index":227,"t":{"630":{"position":[[910,2],[959,2],[1433,2],[1482,2]]},"652":{"position":[[257,2]]},"699":{"position":[[121,2]]},"721":{"position":[[579,2],[596,2],[609,2],[654,2],[670,1]]},"723":{"position":[[475,2],[492,2],[505,2],[551,2],[567,1],[602,2],[619,2],[632,2],[677,2],[693,1]]},"725":{"position":[[792,2],[809,2],[822,2],[867,2],[883,1]]},"735":{"position":[[291,2]]},"900":{"position":[[173,2],[362,2]]},"902":{"position":[[1308,2],[1321,2]]},"904":{"position":[[2332,1]]},"906":{"position":[[313,2],[2367,1]]},"914":{"position":[[292,2]]},"918":{"position":[[292,2]]}}}],["0deprec",{"_index":949,"t":{"727":{"position":[[0,11]]},"922":{"position":[[101,11]]}}}],["0xffffff",{"_index":1166,"t":{"887":{"position":[[386,8]]},"902":{"position":[[876,9]]}}}],["1",{"_index":297,"t":{"632":{"position":[[1516,4],[1822,3]]},"634":{"position":[[209,1],[765,1],[1040,1]]},"652":{"position":[[260,2]]},"665":{"position":[[517,2],[703,1],[760,3],[764,2],[816,1],[854,1],[858,1],[986,3],[990,3],[1027,1],[1031,1]]},"693":{"position":[[58,1],[155,1],[285,1],[357,1]]},"699":{"position":[[135,1]]},"701":{"position":[[189,3],[222,3],[321,3],[454,3],[516,3]]},"714":{"position":[[35,1],[39,1],[129,1],[133,1]]},"717":{"position":[[221,1],[225,1],[686,1],[690,1]]},"719":{"position":[[239,1],[243,1]]},"721":{"position":[[449,2],[454,2]]},"723":{"position":[[326,2],[331,2]]},"725":{"position":[[563,2],[568,2]]},"735":{"position":[[347,2],[353,1]]},"759":{"position":[[448,2]]},"778":{"position":[[347,2]]},"786":{"position":[[121,3],[348,3]]},"788":{"position":[[116,3],[369,3]]},"790":{"position":[[131,3],[386,3]]},"811":{"position":[[534,2]]},"827":{"position":[[130,3],[370,3]]},"829":{"position":[[125,3],[391,3]]},"831":{"position":[[140,3],[408,3]]},"838":{"position":[[2138,2]]},"867":{"position":[[119,3],[326,3]]},"869":{"position":[[129,3],[362,3]]},"878":{"position":[[109,3],[306,3]]},"880":{"position":[[119,3],[342,3]]},"904":{"position":[[2240,1]]},"906":{"position":[[336,2],[2275,1]]},"908":{"position":[[1493,1]]},"910":{"position":[[1216,1]]},"912":{"position":[[1350,1]]},"914":{"position":[[315,2],[1385,1]]},"918":{"position":[[315,2],[1528,1]]},"926":{"position":[[1278,1],[1282,3],[1611,1],[1615,3]]},"928":{"position":[[1214,1],[1218,4],[1555,1],[1559,4]]}}}],["1+1",{"_index":732,"t":{"671":{"position":[[284,3]]}}}],["1+:toadd",{"_index":1030,"t":{"743":{"position":[[269,8]]},"838":{"position":[[1783,8]]}}}],["1,2",{"_index":692,"t":{"665":{"position":[[608,5]]}}}],["1.0.0",{"_index":503,"t":{"650":{"position":[[202,8]]},"838":{"position":[[2026,8]]}}}],["1.1",{"_index":515,"t":{"652":{"position":[[263,4]]}}}],["1.1earli",{"_index":1362,"t":{"922":{"position":[[756,8]]}}}],["1.2",{"_index":516,"t":{"652":{"position":[[268,4]]}}}],["1.2releas",{"_index":1366,"t":{"922":{"position":[[848,10]]}}}],["10",{"_index":215,"t":{"630":{"position":[[701,3],[714,3],[1224,3],[1237,3]]},"671":{"position":[[237,2]]},"723":{"position":[[532,3]]},"743":{"position":[[296,2]]},"838":{"position":[[1810,2]]},"887":{"position":[[280,3]]},"902":{"position":[[754,3]]}}}],["1000",{"_index":1196,"t":{"900":{"position":[[322,6],[529,6]]}}}],["1045",{"_index":1214,"t":{"902":{"position":[[504,4]]}}}],["1080",{"_index":748,"t":{"671":{"position":[[864,4]]}}}],["12",{"_index":842,"t":{"693":{"position":[[126,2]]}}}],["120",{"_index":991,"t":{"735":{"position":[[335,4]]}}}],["123",{"_index":983,"t":{"735":{"position":[[152,4]]},"902":{"position":[[689,3]]}}}],["1234",{"_index":1164,"t":{"887":{"position":[[330,5]]},"902":{"position":[[817,5]]}}}],["137",{"_index":164,"t":{"628":{"position":[[1171,5],[1725,5]]}}}],["14",{"_index":274,"t":{"632":{"position":[[434,3],[1052,3]]}}}],["16000",{"_index":878,"t":{"697":{"position":[[86,5]]}}}],["18.x",{"_index":416,"t":{"644":{"position":[[60,5]]}}}],["19",{"_index":1154,"t":{"844":{"position":[[112,4],[328,4]]},"846":{"position":[[122,4],[364,4]]},"854":{"position":[[160,3],[414,3]]},"856":{"position":[[155,3],[435,3]]},"858":{"position":[[170,3],[452,3]]}}}],["1998",{"_index":1413,"t":{"930":{"position":[[12,5]]}}}],["1experiment",{"_index":547,"t":{"658":{"position":[[144,13]]},"922":{"position":[[642,13]]}}}],["2",{"_index":320,"t":{"634":{"position":[[221,1],[777,1],[1052,1]]},"652":{"position":[[273,1]]},"665":{"position":[[523,1]]},"695":{"position":[[293,1],[464,3]]},"714":{"position":[[95,1],[189,1]]},"717":{"position":[[300,1],[701,1],[705,1],[772,2]]},"719":{"position":[[261,1],[265,1],[376,1]]},"721":{"position":[[636,2]]},"723":{"position":[[338,2],[343,2],[659,2]]},"725":{"position":[[575,2],[580,2],[849,2]]},"741":{"position":[[195,3],[199,4]]},"887":{"position":[[349,2]]},"902":{"position":[[836,2]]},"904":{"position":[[2200,1]]},"906":{"position":[[2235,1]]},"908":{"position":[[1117,4],[1171,1],[1180,4],[1458,1]]},"910":{"position":[[1181,1]]},"912":{"position":[[1315,1]]},"914":{"position":[[1350,1]]},"918":{"position":[[1154,4],[1208,1],[1217,4],[1493,1]]}}}],["2+3",{"_index":1132,"t":{"838":{"position":[[785,3],[1292,3]]}}}],["2.0",{"_index":703,"t":{"669":{"position":[[238,3]]}}}],["2.rds.amazonaws.com",{"_index":1059,"t":{"755":{"position":[[379,21],[735,21]]},"774":{"position":[[349,21],[774,21]]},"807":{"position":[[402,21],[935,21]]}}}],["20",{"_index":1116,"t":{"827":{"position":[[149,4],[389,4]]},"829":{"position":[[144,4],[410,4]]},"831":{"position":[[159,4],[427,4]]},"867":{"position":[[88,2],[295,2]]},"869":{"position":[[98,2],[331,2]]}}}],["2113931265",{"_index":1220,"t":{"902":{"position":[[907,11]]}}}],["2119",{"_index":1069,"t":{"757":{"position":[[71,5]]},"776":{"position":[[71,5]]},"809":{"position":[[71,5]]}}}],["2130",{"_index":1067,"t":{"757":{"position":[[7,5]]},"776":{"position":[[7,5]]},"809":{"position":[[7,5]]}}}],["2131",{"_index":1072,"t":{"757":{"position":[[123,5]]},"776":{"position":[[123,5]]},"809":{"position":[[123,5]]}}}],["2181036031",{"_index":1221,"t":{"902":{"position":[[936,11]]}}}],["2282",{"_index":1414,"t":{"930":{"position":[[18,5]]}}}],["253",{"_index":1234,"t":{"902":{"position":[[1296,4]]}}}],["2stabl",{"_index":517,"t":{"652":{"position":[[290,7],[298,7]]},"717":{"position":[[0,7]]},"719":{"position":[[0,7]]},"721":{"position":[[0,7]]},"723":{"position":[[0,7]]},"725":{"position":[[0,7]]},"922":{"position":[[1114,7]]},"926":{"position":[[17,7],[396,7],[748,7],[1155,7],[1492,7]]},"928":{"position":[[17,7],[351,7],[685,7],[1073,7],[1418,7]]}}}],["3",{"_index":409,"t":{"642":{"position":[[39,2]]},"652":{"position":[[279,2]]},"662":{"position":[[292,3]]},"665":{"position":[[646,1]]},"695":{"position":[[511,1]]},"701":{"position":[[232,3],[354,3],[364,3],[549,3],[559,3]]},"741":{"position":[[388,1]]},"904":{"position":[[2280,1]]},"906":{"position":[[2315,1]]},"908":{"position":[[1528,1]]},"910":{"position":[[1251,1]]},"912":{"position":[[1385,1]]},"914":{"position":[[1420,1]]},"918":{"position":[[1563,1]]}}}],["33",{"_index":1230,"t":{"902":{"position":[[1261,3]]}}}],["3306",{"_index":747,"t":{"671":{"position":[[829,4]]},"749":{"position":[[219,5],[419,5]]},"759":{"position":[[178,4],[508,4]]},"768":{"position":[[189,5],[464,5]]},"778":{"position":[[166,4],[407,4]]},"801":{"position":[[242,5],[618,5]]},"811":{"position":[[174,4],[594,4]]},"838":{"position":[[163,5],[980,5],[1633,5]]}}}],["384",{"_index":1232,"t":{"902":{"position":[[1279,4]]}}}],["3legaci",{"_index":1378,"t":{"922":{"position":[[1181,7]]}}}],["4",{"_index":922,"t":{"717":{"position":[[775,1]]},"719":{"position":[[393,1]]},"904":{"position":[[2132,1],[2159,1]]},"906":{"position":[[2167,1],[2194,1]]},"908":{"position":[[1400,1],[1422,1]]},"910":{"position":[[1123,1],[1145,1]]},"912":{"position":[[1257,1],[1279,1]]},"914":{"position":[[1292,1],[1314,1]]},"918":{"position":[[1435,1],[1457,1]]}}}],["4.5.2",{"_index":901,"t":{"706":{"position":[[224,8]]}}}],["45",{"_index":91,"t":{"626":{"position":[[492,3],[874,3],[1224,4],[1577,4]]},"817":{"position":[[157,4],[392,4]]},"819":{"position":[[152,4],[413,4]]},"821":{"position":[[167,4],[430,4]]},"844":{"position":[[126,5],[342,5]]},"846":{"position":[[136,5],[378,5]]},"854":{"position":[[172,4],[426,4]]},"856":{"position":[[167,4],[447,4]]},"858":{"position":[[182,4],[464,4]]},"891":{"position":[[117,4],[319,4]]},"893":{"position":[[127,4],[355,4]]},"895":{"position":[[127,4],[374,4]]}}}],["5",{"_index":840,"t":{"693":{"position":[[80,3]]},"900":{"position":[[180,2],[369,2]]}}}],["5.6.10",{"_index":1219,"t":{"902":{"position":[[773,9]]}}}],["53",{"_index":165,"t":{"628":{"position":[[1177,3],[1731,4]]}}}],["6",{"_index":841,"t":{"693":{"position":[[84,3]]}}}],["6.9.0",{"_index":1151,"t":{"838":{"position":[[2207,8]]}}}],["60000",{"_index":223,"t":{"630":{"position":[[810,6],[890,7],[1333,6],[1413,7]]}}}],["8",{"_index":1165,"t":{"887":{"position":[[366,2]]},"902":{"position":[[853,2]]}}}],["8bb6118f8fd6935ad0876a3be34a717d32708ffd",{"_index":1041,"t":{"751":{"position":[[193,43]]},"770":{"position":[[163,43]]},"803":{"position":[[216,43]]}}}],["_err",{"_index":911,"t":{"714":{"position":[[54,6],[148,6]]},"717":{"position":[[240,6],[377,6],[718,6],[853,6]]},"719":{"position":[[314,6]]},"721":{"position":[[493,6]]},"723":{"position":[[384,6]]},"725":{"position":[[706,6]]}}}],["a,b,c,d",{"_index":695,"t":{"667":{"position":[[31,7]]}}}],["a.j",{"_index":1073,"t":{"759":{"position":[[44,4]]},"778":{"position":[[32,4]]},"811":{"position":[[40,4]]}}}],["aberta",{"_index":190,"t":{"630":{"position":[[142,7]]}}}],["abov",{"_index":1013,"t":{"739":{"position":[[708,5]]}}}],["accept",{"_index":751,"t":{"671":{"position":[[976,6]]}}}],["access",{"_index":706,"t":{"669":{"position":[[357,6]]},"710":{"position":[[57,7]]},"712":{"position":[[51,7]]},"731":{"position":[[78,6]]},"904":{"position":[[637,7]]},"906":{"position":[[655,7]]},"908":{"position":[[331,7]]},"910":{"position":[[221,7]]},"912":{"position":[[331,7]]},"914":{"position":[[349,7]]},"916":{"position":[[146,6]]},"918":{"position":[[349,7]]}}}],["accord",{"_index":644,"t":{"660":{"position":[[2435,9]]}}}],["accordingli",{"_index":596,"t":{"660":{"position":[[760,12]]}}}],["acima",{"_index":242,"t":{"630":{"position":[[1777,5],[2009,5],[2347,5],[2577,5]]}}}],["ack",{"_index":870,"t":{"695":{"position":[[641,3]]}}}],["acompanhamento",{"_index":373,"t":{"636":{"position":[[524,14]]}}}],["action",{"_index":544,"t":{"658":{"position":[[101,7],[238,7],[335,7],[530,7]]}}}],["activ",{"_index":1380,"t":{"922":{"position":[[1289,6]]}}}],["ad",{"_index":1399,"t":{"926":{"position":[[122,6]]}}}],["add(group",{"_index":1105,"t":{"799":{"position":[[0,10]]},"801":{"position":[[0,10]]},"803":{"position":[[0,10]]},"805":{"position":[[0,10]]},"807":{"position":[[0,10]]},"811":{"position":[[0,10]]}}}],["addit",{"_index":589,"t":{"660":{"position":[[599,10]]},"662":{"position":[[245,10],[296,10]]},"669":{"position":[[3,8]]},"671":{"position":[[905,8]]},"680":{"position":[[251,8]]},"682":{"position":[[228,10]]},"737":{"position":[[3,8]]}}}],["address",{"_index":1389,"t":{"922":{"position":[[1520,10]]}}}],["adicionai",{"_index":100,"t":{"626":{"position":[[626,10],[1390,10]]},"628":{"position":[[1311,10],[1897,10]]},"920":{"position":[[496,11]]}}}],["adicionalment",{"_index":264,"t":{"630":{"position":[[2766,15]]}}}],["adquirir",{"_index":251,"t":{"630":{"position":[[2221,8]]}}}],["advanc",{"_index":951,"t":{"729":{"position":[[80,8]]}}}],["affect",{"_index":1273,"t":{"904":{"position":[[2317,8]]},"906":{"position":[[2352,8]]}}}],["affectedrow",{"_index":774,"t":{"678":{"position":[[222,13]]},"721":{"position":[[242,12],[582,13]]},"723":{"position":[[478,13],[605,13]]},"725":{"position":[[795,13]]},"904":{"position":[[485,15]]},"906":{"position":[[503,15]]}}}],["ag",{"_index":90,"t":{"626":{"position":[[484,5],[853,5],[1216,5],[1556,5]]},"628":{"position":[[1150,5],[1704,5]]},"632":{"position":[[412,5],[1030,5]]},"817":{"position":[[121,5],[356,5]]},"819":{"position":[[116,5],[377,5]]},"821":{"position":[[131,5],[394,5]]},"827":{"position":[[97,5],[337,5]]},"829":{"position":[[92,5],[358,5]]},"831":{"position":[[107,5],[375,5]]},"844":{"position":[[89,6],[305,6]]},"846":{"position":[[99,6],[341,6]]},"854":{"position":[[106,6],[360,6]]},"856":{"position":[[101,6],[381,6]]},"858":{"position":[[116,6],[398,6]]},"867":{"position":[[80,5],[287,5]]},"869":{"position":[[90,5],[323,5]]},"891":{"position":[[109,5],[311,5]]},"893":{"position":[[119,5],[347,5]]},"895":{"position":[[119,5],[366,5]]}}}],["again",{"_index":664,"t":{"662":{"position":[[396,6]]},"783":{"position":[[246,6]]}}}],["aim",{"_index":809,"t":{"682":{"position":[[7,4]]}}}],["ajuda",{"_index":182,"t":{"630":{"position":[[31,5]]},"634":{"position":[[1298,5],[1315,6]]}}}],["algo",{"_index":257,"t":{"630":{"position":[[2403,4],[2634,4]]},"640":{"position":[[14,4]]}}}],["algorithm",{"_index":649,"t":{"660":{"position":[[2592,9]]}}}],["algoritm",{"_index":665,"t":{"662":{"position":[[502,9]]}}}],["allow",{"_index":484,"t":{"648":{"position":[[181,6]]}}}],["alongsid",{"_index":500,"t":{"650":{"position":[[90,9]]}}}],["alterada",{"_index":1321,"t":{"920":{"position":[[140,8]]}}}],["alternativament",{"_index":248,"t":{"630":{"position":[[2170,17]]}}}],["alway",{"_index":622,"t":{"660":{"position":[[1488,6],[2239,6]]},"686":{"position":[[192,6]]},"904":{"position":[[1793,6]]},"906":{"position":[[1830,6]]}}}],["além",{"_index":151,"t":{"628":{"position":[[472,4]]}}}],["amazon",{"_index":1052,"t":{"755":{"position":[[56,6],[113,6],[406,7],[762,7]]},"757":{"position":[[36,6],[138,6]]},"774":{"position":[[44,6],[101,6],[376,7],[801,7]]},"776":{"position":[[36,6],[138,6]]},"807":{"position":[[52,6],[109,6],[429,7],[962,7]]},"809":{"position":[[36,6],[138,6]]}}}],["analisador",{"_index":1316,"t":{"920":{"position":[[64,10]]}}}],["anoth",{"_index":580,"t":{"660":{"position":[[372,7]]}}}],["answer",{"_index":1311,"t":{"916":{"position":[[22,7]]},"926":{"position":[[84,7]]},"928":{"position":[[84,7]]}}}],["anterior",{"_index":188,"t":{"630":{"position":[[119,8]]}}}],["ao",{"_index":191,"t":{"630":{"position":[[150,2]]},"634":{"position":[[890,2],[1198,2]]},"920":{"position":[[167,2]]}}}],["apena",{"_index":327,"t":{"634":{"position":[[370,6]]}}}],["api",{"_index":267,"t":{"632":{"position":[[32,4]]},"636":{"position":[[45,3]]},"638":{"position":[[247,3]]},"660":{"position":[[1303,3]]},"682":{"position":[[76,3]]},"737":{"position":[[79,3]]},"920":{"position":[[132,3],[390,3]]}}}],["aplica",{"_index":325,"t":{"634":{"position":[[297,7],[359,7]]}}}],["aplicada",{"_index":358,"t":{"636":{"position":[[267,9]]}}}],["approach",{"_index":1363,"t":{"922":{"position":[[817,11]]}}}],["aqui",{"_index":55,"t":{"624":{"position":[[270,5]]}}}],["arg",{"_index":1179,"t":{"887":{"position":[[772,5]]}}}],["argument",{"_index":760,"t":{"674":{"position":[[89,9]]}}}],["argumento",{"_index":359,"t":{"636":{"position":[[279,10]]}}}],["arguments[1",{"_index":1181,"t":{"887":{"position":[[941,13],[1149,13]]}}}],["arguments[2",{"_index":1182,"t":{"887":{"position":[[965,13]]}}}],["arquivo",{"_index":402,"t":{"640":{"position":[[41,7]]}}}],["array",{"_index":312,"t":{"634":{"position":[[89,6],[874,5],[883,6],[905,5],[1182,5],[1191,6],[1213,5]]},"665":{"position":[[398,5],[942,5]]},"667":{"position":[[139,5],[148,6]]},"678":{"position":[[536,5]]},"695":{"position":[[230,5],[318,5]]},"717":{"position":[[11,5]]},"887":{"position":[[824,7],[840,7]]},"895":{"position":[[614,5]]}}}],["array.isarray(arguments[1",{"_index":1180,"t":{"887":{"position":[[851,29]]}}}],["asc",{"_index":1259,"t":{"904":{"position":[[1558,4]]},"906":{"position":[[1595,4]]},"908":{"position":[[1107,3],[1161,3]]},"910":{"position":[[926,5]]},"912":{"position":[[1078,5]]},"914":{"position":[[1115,5]]},"918":{"position":[[1144,3],[1198,3]]}}}],["ascertain",{"_index":1371,"t":{"922":{"position":[[1045,9]]}}}],["ask",{"_index":561,"t":{"660":{"position":[[43,3]]},"916":{"position":[[42,5]]}}}],["associada",{"_index":202,"t":{"630":{"position":[[282,9]]}}}],["assur",{"_index":1343,"t":{"922":{"position":[[162,6]]}}}],["async",{"_index":271,"t":{"632":{"position":[[72,5],[121,5],[1211,5]]},"741":{"position":[[0,5],[224,5]]},"838":{"position":[[92,5],[1962,5]]},"904":{"position":[[616,6]]},"906":{"position":[[634,6]]},"908":{"position":[[310,6]]},"910":{"position":[[296,6]]},"912":{"position":[[310,6]]},"914":{"position":[[328,6]]},"918":{"position":[[328,6]]}}}],["asynchron",{"_index":594,"t":{"660":{"position":[[703,14]]}}}],["ataqu",{"_index":141,"t":{"628":{"position":[[344,7]]}}}],["atenção",{"_index":1084,"t":{"766":{"position":[[555,7]]},"768":{"position":[[639,7]]},"770":{"position":[[645,7]]},"772":{"position":[[834,7]]},"774":{"position":[[1138,7]]},"799":{"position":[[767,7]]},"801":{"position":[[851,7]]},"803":{"position":[[857,7]]},"805":{"position":[[1046,7]]},"807":{"position":[[1364,7]]}}}],["atingido",{"_index":237,"t":{"630":{"position":[[1605,9]]}}}],["atravé",{"_index":372,"t":{"636":{"position":[[513,7]]}}}],["attach",{"_index":804,"t":{"680":{"position":[[499,6]]}}}],["atualização",{"_index":390,"t":{"638":{"position":[[179,11]]}}}],["auth",{"_index":564,"t":{"660":{"position":[[83,4],[801,4],[952,6],[1869,6]]},"662":{"position":[[702,5],[842,5],[982,5]]},"902":{"position":[[119,4]]}}}],["auth.doublesha1('pass123",{"_index":1205,"t":{"902":{"position":[[235,27]]}}}],["auth.verifytoken",{"_index":1207,"t":{"902":{"position":[[279,17]]}}}],["authcallback",{"_index":1222,"t":{"902":{"position":[[948,13]]}}}],["authent",{"_index":573,"t":{"660":{"position":[[211,14],[610,14]]},"662":{"position":[[34,14],[159,14],[256,14],[412,14]]},"682":{"position":[[285,14]]},"902":{"position":[[962,13]]},"920":{"position":[[737,14]]}}}],["authenticate(param",{"_index":1202,"t":{"902":{"position":[[169,20]]}}}],["authentication::native41",{"_index":645,"t":{"660":{"position":[[2448,24]]}}}],["authnextfactor",{"_index":656,"t":{"662":{"position":[[90,14]]}}}],["author",{"_index":1147,"t":{"838":{"position":[[2144,9]]}}}],["authplugin",{"_index":566,"t":{"660":{"position":[[103,11],[928,12],[2480,11]]},"662":{"position":[[661,12]]}}}],["authswitchhandl",{"_index":616,"t":{"660":{"position":[[1318,17],[1778,18],[2508,17]]}}}],["authswitchrequest",{"_index":634,"t":{"660":{"position":[[2130,17]]}}}],["auto",{"_index":463,"t":{"646":{"position":[[709,4]]}}}],["auto_incr",{"_index":1249,"t":{"904":{"position":[[993,15]]},"906":{"position":[[1030,15]]},"908":{"position":[[713,15]]},"910":{"position":[[548,15]]},"912":{"position":[[687,15]]},"914":{"position":[[724,15]]},"918":{"position":[[750,15]]}}}],["automat",{"_index":1193,"t":{"900":{"position":[[270,13]]}}}],["automaticament",{"_index":245,"t":{"630":{"position":[[1870,15],[2103,15]]}}}],["auxiliar",{"_index":146,"t":{"628":{"position":[[393,8]]}}}],["avail",{"_index":514,"t":{"652":{"position":[[239,9]]},"671":{"position":[[1080,10]]},"786":{"position":[[704,9]]},"788":{"position":[[753,9]]},"790":{"position":[[770,9]]},"817":{"position":[[639,9]]},"819":{"position":[[688,9]]},"821":{"position":[[705,9]]},"827":{"position":[[730,9]]},"829":{"position":[[779,9]]},"831":{"position":[[796,9]]},"844":{"position":[[665,9]]},"846":{"position":[[729,9]]},"854":{"position":[[758,9]]},"856":{"position":[[807,9]]},"858":{"position":[[824,9]]},"867":{"position":[[647,9]]},"869":{"position":[[711,9]]},"878":{"position":[[627,9]]},"880":{"position":[[691,9]]},"891":{"position":[[556,9]]},"893":{"position":[[620,9]]},"895":{"position":[[667,9]]},"922":{"position":[[1330,10]]}}}],["avg",{"_index":357,"t":{"636":{"position":[[254,5]]}}}],["await",{"_index":74,"t":{"626":{"position":[[273,5],[411,5],[785,5]]},"628":{"position":[[897,5],[1080,5]]},"630":{"position":[[1806,5],[2366,5],[2422,5]]},"632":{"position":[[78,6],[203,5],[342,5],[802,5],[960,5],[1484,5]]},"634":{"position":[[454,5],[733,5]]},"741":{"position":[[82,5],[155,5],[204,5],[398,5],[516,5]]},"743":{"position":[[356,5]]},"747":{"position":[[124,5]]},"749":{"position":[[128,5]]},"751":{"position":[[128,5]]},"753":{"position":[[146,5]]},"755":{"position":[[315,5],[488,5],[547,5]]},"766":{"position":[[194,5]]},"768":{"position":[[235,5]]},"770":{"position":[[239,5]]},"772":{"position":[[334,5]]},"774":{"position":[[413,5],[545,5],[604,5]]},"786":{"position":[[175,5]]},"788":{"position":[[170,5]]},"790":{"position":[[185,5]]},"799":{"position":[[286,5]]},"801":{"position":[[327,5]]},"803":{"position":[[331,5]]},"805":{"position":[[426,5]]},"807":{"position":[[505,5],[654,5],[713,5]]},"817":{"position":[[185,5]]},"819":{"position":[[180,5]]},"821":{"position":[[195,5]]},"827":{"position":[[188,5]]},"829":{"position":[[183,5]]},"831":{"position":[[198,5]]},"838":{"position":[[126,5],[292,5],[373,5],[675,5],[930,5],[1183,5],[1364,5],[2007,7]]},"844":{"position":[[157,5]]},"846":{"position":[[167,5]]},"854":{"position":[[202,5]]},"856":{"position":[[197,5]]},"858":{"position":[[212,5]]},"867":{"position":[[148,5]]},"869":{"position":[[158,5]]},"878":{"position":[[138,5]]},"880":{"position":[[148,5]]},"891":{"position":[[145,5]]},"893":{"position":[[155,5]]},"895":{"position":[[155,5]]},"904":{"position":[[731,5],[817,5],[922,5],[1101,5],[1337,5],[1454,5],[1618,5],[2083,5]]},"906":{"position":[[768,5],[854,5],[959,5],[1138,5],[1374,5],[1491,5],[1655,5],[2118,5]]},"908":{"position":[[451,5],[537,5],[642,5],[821,5],[1038,5],[1351,5]]},"910":{"position":[[392,5],[487,5],[656,5],[864,5],[1062,5]]},"912":{"position":[[425,5],[511,5],[616,5],[795,5],[1013,5],[1208,5]]},"914":{"position":[[462,5],[548,5],[653,5],[832,5],[1050,5],[1243,5]]},"918":{"position":[[488,5],[574,5],[679,5],[858,5],[1075,5],[1386,5]]},"928":{"position":[[205,5],[573,5],[930,5],[1182,5],[1525,5]]}}}],["await.j",{"_index":1118,"t":{"838":{"position":[[0,8],[2062,11]]}}}],["b",{"_index":459,"t":{"646":{"position":[[622,1]]},"667":{"position":[[197,1]]}}}],["b.j",{"_index":1074,"t":{"759":{"position":[[49,4]]},"778":{"position":[[37,4]]},"811":{"position":[[45,4]]}}}],["babel",{"_index":1150,"t":{"838":{"position":[[2194,6]]}}}],["babelrc",{"_index":1120,"t":{"838":{"position":[[15,8]]}}}],["back",{"_index":592,"t":{"660":{"position":[[659,4]]}}}],["backend",{"_index":969,"t":{"733":{"position":[[118,8],[166,8]]}}}],["backward",{"_index":1344,"t":{"922":{"position":[[169,8],[281,8]]}}}],["badg",{"_index":508,"t":{"652":{"position":[[18,6]]},"922":{"position":[[14,6]]}}}],["banco",{"_index":70,"t":{"626":{"position":[[239,5],[1015,5]]},"628":{"position":[[863,5],[1455,5]]},"632":{"position":[[169,5],[304,5],[922,5]]}}}],["bar",{"_index":743,"t":{"671":{"position":[[730,6]]},"739":{"position":[[241,6],[528,6]]}}}],["base",{"_index":1000,"t":{"737":{"position":[[73,5]]},"922":{"position":[[983,5]]}}}],["baseado",{"_index":391,"t":{"638":{"position":[[197,7]]}}}],["basic",{"_index":956,"t":{"729":{"position":[[608,5]]}}}],["befor",{"_index":557,"t":{"658":{"position":[[474,6]]},"910":{"position":[[1651,6]]}}}],["begin",{"_index":945,"t":{"725":{"position":[[553,5]]},"904":{"position":[[1518,5]]},"906":{"position":[[1555,5]]}}}],["behavior",{"_index":798,"t":{"680":{"position":[[363,8]]}}}],["below",{"_index":1152,"t":{"842":{"position":[[13,5]]},"865":{"position":[[13,5]]},"876":{"position":[[13,5]]},"889":{"position":[[13,5]]}}}],["bem",{"_index":269,"t":{"632":{"position":[[58,3]]}}}],["benchmark",{"_index":839,"t":{"690":{"position":[[63,10],[85,10],[115,10]]}}}],["beta",{"_index":1228,"t":{"902":{"position":[[1222,7],[1239,7]]}}}],["better",{"_index":814,"t":{"682":{"position":[[170,6]]},"693":{"position":[[449,6]]},"783":{"position":[[336,6]]}}}],["between",{"_index":653,"t":{"660":{"position":[[2648,7]]},"706":{"position":[[107,7]]}}}],["biblioteca",{"_index":317,"t":{"634":{"position":[[166,10]]}}}],["bin.000007",{"_index":989,"t":{"735":{"position":[[311,12]]}}}],["binari",{"_index":20,"t":{"622":{"position":[[153,7]]},"678":{"position":[[584,6]]},"682":{"position":[[364,6]]},"920":{"position":[[622,6]]}}}],["bind",{"_index":832,"t":{"688":{"position":[[99,8],[173,8]]},"699":{"position":[[4,4]]}}}],["binlog",{"_index":837,"t":{"688":{"position":[[249,6]]}}}],["binlogpo",{"_index":990,"t":{"735":{"position":[[324,10]]}}}],["binlogstream",{"_index":980,"t":{"735":{"position":[[100,12]]}}}],["binlogstream.pip",{"_index":993,"t":{"735":{"position":[[381,18]]}}}],["binário",{"_index":19,"t":{"622":{"position":[[145,7]]},"920":{"position":[[601,7]]}}}],["blob",{"_index":627,"t":{"660":{"position":[[1607,4]]}}}],["block",{"_index":523,"t":{"654":{"position":[[178,6]]},"735":{"position":[[362,8]]},"928":{"position":[[137,6],[435,6],[769,6],[1154,6],[1497,6]]}}}],["bluebird",{"_index":284,"t":{"632":{"position":[[677,11],[696,8],[710,11],[757,10],[893,9]]}}}],["boolean",{"_index":790,"t":{"680":{"position":[[146,7]]},"699":{"position":[[105,7]]}}}],["both",{"_index":1408,"t":{"926":{"position":[[1417,4],[1748,4]]},"928":{"position":[[1343,4],[1682,4]]}}}],["bound",{"_index":1346,"t":{"922":{"position":[[230,5]]}}}],["branch",{"_index":426,"t":{"646":{"position":[[154,6]]}}}],["browser",{"_index":441,"t":{"646":{"position":[[399,7]]}}}],["buffer",{"_index":590,"t":{"660":{"position":[[630,8],[1667,8]]},"699":{"position":[[222,6]]}}}],["buffer.from",{"_index":1040,"t":{"751":{"position":[[180,12]]},"770":{"position":[[150,12]]},"803":{"position":[[203,12]]}}}],["buffer.from('8bb6118f8fd6935ad0876a3be34a717d32708ffd",{"_index":1043,"t":{"751":{"position":[[384,55]]},"770":{"position":[[429,55]]},"803":{"position":[[583,55]]}}}],["bug",{"_index":1388,"t":{"922":{"position":[[1488,4]]}}}],["build",{"_index":551,"t":{"658":{"position":[[266,5],[306,5]]}}}],["built",{"_index":407,"t":{"642":{"position":[[16,5]]}}}],["bun",{"_index":1071,"t":{"757":{"position":[[119,3]]},"776":{"position":[[119,3]]},"809":{"position":[[119,3]]}}}],["byte",{"_index":794,"t":{"680":{"position":[[242,5]]}}}],["bytes/sec",{"_index":730,"t":{"671":{"position":[[240,9]]}}}],["c",{"_index":163,"t":{"628":{"position":[[1169,1],[1723,1]]},"667":{"position":[[214,1]]},"743":{"position":[[83,1]]},"838":{"position":[[122,1],[1592,1]]}}}],["c.end",{"_index":1032,"t":{"743":{"position":[[310,8]]},"838":{"position":[[936,8],[1824,8]]}}}],["c.execute('select",{"_index":1029,"t":{"743":{"position":[[251,17]]},"838":{"position":[[484,17],[569,17],[695,17],[727,17],[1765,17]]}}}],["c.query('show",{"_index":1027,"t":{"743":{"position":[[187,13]]},"838":{"position":[[298,13],[1701,13]]}}}],["c.query('som",{"_index":1124,"t":{"838":{"position":[[379,13]]}}}],["ca",{"_index":1049,"t":{"753":{"position":[[294,3],[575,3]]},"755":{"position":[[202,2],[214,2]]},"757":{"position":[[153,2]]},"772":{"position":[[264,3],[620,3]]},"774":{"position":[[190,2],[202,2]]},"776":{"position":[[153,2]]},"805":{"position":[[317,3],[774,3]]},"807":{"position":[[198,2],[210,2]]},"809":{"position":[[153,2]]}}}],["cach",{"_index":174,"t":{"628":{"position":[[2042,6]]},"693":{"position":[[215,6],[256,6],[322,5],[416,5],[480,5]]},"695":{"position":[[52,5]]},"697":{"position":[[36,6],[63,6],[173,5]]},"783":{"position":[[282,5]]}}}],["call",{"_index":586,"t":{"660":{"position":[[520,4],[560,4],[1549,5],[2556,6]]},"693":{"position":[[209,5]]},"725":{"position":[[90,4],[630,5],[1034,5]]}}}],["callback",{"_index":63,"t":{"626":{"position":[[151,8]]},"628":{"position":[[788,8]]},"630":{"position":[[431,8],[1722,8],[2298,8]]},"634":{"position":[[432,8],[692,8]]},"660":{"position":[[1443,9]]},"678":{"position":[[453,9]]},"695":{"position":[[598,8]]}}}],["callback'",{"_index":1401,"t":{"926":{"position":[[470,10],[822,10],[1226,10],[1561,10]]}}}],["callback(nul",{"_index":629,"t":{"660":{"position":[[1646,14]]}}}],["callback.j",{"_index":1036,"t":{"747":{"position":[[51,11]]},"749":{"position":[[55,11]]},"751":{"position":[[55,11]]},"753":{"position":[[55,11]]},"755":{"position":[[242,11]]},"766":{"position":[[45,11]]},"768":{"position":[[43,11]]},"770":{"position":[[43,11]]},"772":{"position":[[43,11]]},"774":{"position":[[230,11]]},"786":{"position":[[47,11]]},"788":{"position":[[42,11]]},"790":{"position":[[57,11]]},"799":{"position":[[53,11]]},"801":{"position":[[51,11]]},"803":{"position":[[51,11]]},"805":{"position":[[51,11]]},"807":{"position":[[238,11]]},"817":{"position":[[47,11]]},"819":{"position":[[42,11]]},"821":{"position":[[57,11]]},"827":{"position":[[47,11]]},"829":{"position":[[42,11]]},"831":{"position":[[57,11]]},"844":{"position":[[30,11]]},"846":{"position":[[40,11]]},"854":{"position":[[47,11]]},"856":{"position":[[42,11]]},"858":{"position":[[57,11]]},"867":{"position":[[30,11]]},"869":{"position":[[40,11]]},"878":{"position":[[30,11]]},"880":{"position":[[40,11]]},"891":{"position":[[30,11]]},"893":{"position":[[40,11]]},"895":{"position":[[40,11]]}}}],["candid",{"_index":1367,"t":{"922":{"position":[[859,9]]}}}],["capabilityflag",{"_index":769,"t":{"678":{"position":[[91,15]]},"887":{"position":[[369,16]]},"902":{"position":[[859,16],[889,16],[919,16]]}}}],["case",{"_index":619,"t":{"660":{"position":[[1461,5]]},"671":{"position":[[352,4]]},"755":{"position":[[148,4]]},"774":{"position":[[136,4]]},"807":{"position":[[144,4]]}}}],["catalog",{"_index":1224,"t":{"902":{"position":[[1139,8]]}}}],["catch",{"_index":105,"t":{"626":{"position":[[679,5],[905,5]]},"628":{"position":[[1364,5]]},"630":{"position":[[1935,5]]},"634":{"position":[[979,5]]},"747":{"position":[[203,5]]},"749":{"position":[[248,5]]},"751":{"position":[[252,5]]},"753":{"position":[[347,5]]},"755":{"position":[[426,5],[591,5]]},"766":{"position":[[264,5]]},"768":{"position":[[305,5]]},"770":{"position":[[309,5]]},"772":{"position":[[404,5]]},"774":{"position":[[483,5],[642,5]]},"786":{"position":[[258,5]]},"788":{"position":[[279,5]]},"790":{"position":[[296,5]]},"799":{"position":[[373,5]]},"801":{"position":[[414,5]]},"803":{"position":[[418,5]]},"805":{"position":[[513,5]]},"807":{"position":[[592,5],[758,5]]},"817":{"position":[[266,5]]},"819":{"position":[[287,5]]},"821":{"position":[[304,5]]},"827":{"position":[[271,5]]},"829":{"position":[[292,5]]},"831":{"position":[[309,5]]},"838":{"position":[[415,5]]},"844":{"position":[[230,5]]},"846":{"position":[[266,5]]},"854":{"position":[[285,5]]},"856":{"position":[[306,5]]},"858":{"position":[[323,5]]},"867":{"position":[[221,5]]},"869":{"position":[[257,5]]},"878":{"position":[[211,5]]},"880":{"position":[[247,5]]},"891":{"position":[[216,5]]},"893":{"position":[[252,5]]},"895":{"position":[[271,5]]},"928":{"position":[[131,5],[276,5],[429,5],[603,5],[763,5],[974,5],[1148,5],[1244,5],[1491,5],[1585,5]]}}}],["catch((err",{"_index":610,"t":{"660":{"position":[[1176,12]]},"739":{"position":[[620,12]]},"838":{"position":[[1426,12]]}}}],["catch(console.log",{"_index":304,"t":{"632":{"position":[[1876,19]]}}}],["catch(funct",{"_index":1143,"t":{"838":{"position":[[1880,15]]}}}],["caus",{"_index":1383,"t":{"922":{"position":[[1407,5]]}}}],["caution",{"_index":470,"t":{"646":{"position":[[816,7]]},"922":{"position":[[387,7]]}}}],["cb",{"_index":630,"t":{"660":{"position":[[1835,3]]},"671":{"position":[[754,4]]},"902":{"position":[[190,3]]}}}],["cb(err",{"_index":636,"t":{"660":{"position":[[2196,8]]}}}],["cb(null",{"_index":632,"t":{"660":{"position":[[2065,8]]},"671":{"position":[[874,8]]},"902":{"position":[[391,9],[455,8]]}}}],["cd",{"_index":430,"t":{"646":{"position":[[189,2],[643,2]]}}}],["cert",{"_index":1048,"t":{"753":{"position":[[245,5],[526,5]]},"755":{"position":[[217,4]]},"757":{"position":[[26,5],[156,4]]},"772":{"position":[[215,5],[571,5]]},"774":{"position":[[205,4]]},"776":{"position":[[26,5],[156,4]]},"805":{"position":[[268,5],[725,5]]},"807":{"position":[[213,4]]},"809":{"position":[[26,5],[156,4]]}}}],["cert.pem",{"_index":1045,"t":{"753":{"position":[[76,8],[283,10],[326,11],[564,10],[607,11]]},"755":{"position":[[205,8]]},"772":{"position":[[64,8],[253,10],[296,11],[609,10],[652,11]]},"774":{"position":[[193,8]]},"805":{"position":[[72,8],[306,10],[349,11],[763,10],[806,11]]},"807":{"position":[[201,8]]}}}],["certs/ca",{"_index":1044,"t":{"753":{"position":[[67,8]]},"772":{"position":[[55,8]]},"805":{"position":[[63,8]]}}}],["chamar",{"_index":159,"t":{"628":{"position":[[1000,6],[1586,6]]}}}],["chang",{"_index":442,"t":{"646":{"position":[[420,7]]},"650":{"position":[[39,7],[106,8],[211,8],[227,6],[305,7],[345,7],[365,6]]},"721":{"position":[[24,7]]},"723":{"position":[[24,7]]},"725":{"position":[[24,7]]},"922":{"position":[[301,7],[471,7],[747,8],[930,7]]}}}],["changedrow",{"_index":929,"t":{"721":{"position":[[148,11],[657,12]]},"723":{"position":[[554,12],[680,12]]},"725":{"position":[[870,12]]},"904":{"position":[[554,14]]},"906":{"position":[[572,14]]}}}],["changeus",{"_index":750,"t":{"671":{"position":[[963,12]]},"695":{"position":[[749,13]]}}}],["characterset",{"_index":768,"t":{"678":{"position":[[77,13]]},"887":{"position":[[352,13]]},"902":{"position":[[839,13],[1247,13]]}}}],["check",{"_index":537,"t":{"658":{"position":[[13,5],[119,5],[158,6]]},"684":{"position":[[7,5]]},"686":{"position":[[57,5]]},"714":{"position":[[374,5]]},"729":{"position":[[13,5],[372,8],[477,8]]}}}],["checkout",{"_index":458,"t":{"646":{"position":[[612,8]]}}}],["ci",{"_index":432,"t":{"646":{"position":[[240,2],[679,2]]}}}],["class",{"_index":385,"t":{"638":{"position":[[113,6]]},"729":{"position":[[628,5]]},"910":{"position":[[1428,5],[1669,5]]}}}],["classif",{"_index":1374,"t":{"922":{"position":[[1098,15]]}}}],["classifi",{"_index":1357,"t":{"922":{"position":[[618,10],[1354,10]]}}}],["clear",{"_index":550,"t":{"658":{"position":[[256,5],[292,5]]}}}],["cli",{"_index":453,"t":{"646":{"position":[[541,3]]},"838":{"position":[[2201,5]]}}}],["client",{"_index":0,"t":{"622":{"position":[[0,7]]},"626":{"position":[[171,7],[950,7]]},"632":{"position":[[579,7]]},"638":{"position":[[300,7]]},"660":{"position":[[51,6],[1577,6],[2656,6]]},"662":{"position":[[68,6]]},"665":{"position":[[171,6]]},"678":{"position":[[276,6],[383,7]]},"680":{"position":[[318,7]]},"682":{"position":[[384,6]]},"688":{"position":[[68,6],[143,7],[220,6]]},"733":{"position":[[237,6],[281,6]]}}}],["clientflag",{"_index":1157,"t":{"887":{"position":[[62,11]]}}}],["clientflags.compress",{"_index":1167,"t":{"887":{"position":[[397,21]]}}}],["clientplugindata(password1",{"_index":672,"t":{"662":{"position":[[789,27]]}}}],["clientplugindata(password2",{"_index":674,"t":{"662":{"position":[[929,27]]}}}],["clientplugindata(password3",{"_index":676,"t":{"662":{"position":[[1069,27]]}}}],["clone",{"_index":456,"t":{"646":{"position":[[557,5]]}}}],["close",{"_index":801,"t":{"680":{"position":[[405,5]]},"693":{"position":[[250,5]]},"695":{"position":[[72,6],[635,5]]},"697":{"position":[[187,7]]},"922":{"position":[[895,5]]}}}],["co",{"_index":1023,"t":{"743":{"position":[[39,2],[353,2]]},"838":{"position":[[1548,2],[2004,2]]}}}],["co(funct",{"_index":1025,"t":{"743":{"position":[[59,12]]},"838":{"position":[[1568,12]]}}}],["co.j",{"_index":1119,"t":{"838":{"position":[[9,5]]}}}],["code",{"_index":522,"t":{"654":{"position":[[173,4]]},"660":{"position":[[821,4]]},"680":{"position":[[230,4]]},"729":{"position":[[24,4]]},"757":{"position":[[98,4]]},"776":{"position":[[98,4]]},"809":{"position":[[98,4]]},"902":{"position":[[425,5],[498,5],[683,5]]}}}],["codificaçõ",{"_index":13,"t":{"622":{"position":[[105,12]]}}}],["collat",{"_index":1339,"t":{"920":{"position":[[694,9]]}}}],["column",{"_index":856,"t":{"695":{"position":[[239,6],[334,6],[480,8]]},"887":{"position":[[832,7],[955,7],[1029,9],[1066,9]]}}}],["columnlength",{"_index":1231,"t":{"902":{"position":[[1265,13]]}}}],["columntyp",{"_index":1233,"t":{"902":{"position":[[1284,11]]}}}],["coluna",{"_index":308,"t":{"634":{"position":[[19,7]]}}}],["com",{"_index":4,"t":{"622":{"position":[[27,3]]},"626":{"position":[[233,3],[1009,3]]},"628":{"position":[[0,3],[857,3],[1449,3]]},"630":{"position":[[72,3],[2408,3],[2639,3]]},"632":{"position":[[62,3],[163,3]]},"634":{"position":[[27,3]]},"636":{"position":[[39,3],[476,3]]},"638":{"position":[[294,3]]},"920":{"position":[[241,3],[384,3]]}}}],["come",{"_index":852,"t":{"695":{"position":[[37,5]]}}}],["começar",{"_index":405,"t":{"640":{"position":[[103,8]]}}}],["command",{"_index":556,"t":{"658":{"position":[[466,7]]},"678":{"position":[[203,8]]},"680":{"position":[[6,7],[162,7],[222,7],[291,8]]},"838":{"position":[[842,8]]},"922":{"position":[[547,7]]}}}],["commandcod",{"_index":792,"t":{"680":{"position":[[190,13]]}}}],["commit",{"_index":558,"t":{"658":{"position":[[495,7]]}}}],["commonli",{"_index":1312,"t":{"916":{"position":[[33,8]]}}}],["como",{"_index":137,"t":{"628":{"position":[[270,4]]},"630":{"position":[[1654,4]]},"632":{"position":[[768,4]]},"634":{"position":[[81,4]]},"636":{"position":[[139,4],[196,4],[596,4]]},"640":{"position":[[98,4]]}}}],["compartilhado",{"_index":1327,"t":{"920":{"position":[[293,13]]}}}],["compat",{"_index":524,"t":{"654":{"position":[[189,10]]},"757":{"position":[[103,10]]},"776":{"position":[[103,10]]},"809":{"position":[[103,10]]},"922":{"position":[[178,14],[290,10],[1122,13]]}}}],["compatívei",{"_index":396,"t":{"638":{"position":[[282,11]]}}}],["compatível",{"_index":345,"t":{"636":{"position":[[28,10]]},"920":{"position":[[373,10]]}}}],["compil",{"_index":481,"t":{"648":{"position":[[121,8]]},"733":{"position":[[101,9]]}}}],["complet",{"_index":448,"t":{"646":{"position":[[500,8]]},"648":{"position":[[52,8]]}}}],["complianc",{"_index":541,"t":{"658":{"position":[[49,10]]}}}],["compon",{"_index":475,"t":{"648":{"position":[[12,9],[165,11],[273,10]]},"650":{"position":[[12,9],[287,10]]},"652":{"position":[[205,10]]},"654":{"position":[[123,9],[231,10]]},"658":{"position":[[173,10]]}}}],["compress",{"_index":816,"t":{"682":{"position":[[352,11]]}}}],["compressão",{"_index":22,"t":{"622":{"position":[[176,11]]},"920":{"position":[[720,10]]}}}],["comprimida",{"_index":395,"t":{"638":{"position":[[271,10]]}}}],["concept",{"_index":952,"t":{"729":{"position":[[89,9]]}}}],["conexão",{"_index":69,"t":{"626":{"position":[[225,7],[1001,7]]},"628":{"position":[[849,7],[1441,7]]},"630":{"position":[[64,7],[111,7],[314,8],[486,7],[1009,7],[1666,7],[1860,7],[2093,7],[2246,7],[2414,7],[2482,7],[2645,7],[2707,7],[2802,7]]},"632":{"position":[[155,7],[732,8],[1690,7]]},"634":{"position":[[289,7]]},"638":{"position":[[254,7]]}}}],["conexõ",{"_index":180,"t":{"630":{"position":[[14,8],[366,8],[731,8],[837,8],[1254,8],[1360,8],[1525,8],[1591,8]]},"632":{"position":[[1597,8]]},"920":{"position":[[794,8]]}}}],["config",{"_index":567,"t":{"660":{"position":[[126,6],[345,6],[1347,6]]},"662":{"position":[[354,6]]},"665":{"position":[[75,6]]},"686":{"position":[[239,6]]},"801":{"position":[[19,7]]},"803":{"position":[[19,7]]},"805":{"position":[[19,7]]},"807":{"position":[[19,7]]},"811":{"position":[[19,7]]}}}],["configuração",{"_index":322,"t":{"634":{"position":[[258,12]]}}}],["confirm",{"_index":1397,"t":{"926":{"position":[[59,9]]},"928":{"position":[[59,9]]}}}],["conflito",{"_index":315,"t":{"634":{"position":[[129,10]]}}}],["conhecida",{"_index":347,"t":{"636":{"position":[[86,9]]}}}],["conjunto",{"_index":179,"t":{"630":{"position":[[2,8],[354,8]]},"920":{"position":[[232,8],[782,8]]}}}],["conn",{"_index":254,"t":{"630":{"position":[[2359,4],[2617,5]]},"632":{"position":[[1704,4],[1791,4]]},"634":{"position":[[447,4],[565,4]]},"660":{"position":[[832,4],[1682,4]]},"662":{"position":[[518,4]]},"710":{"position":[[128,4]]},"712":{"position":[[116,4]]},"717":{"position":[[107,4],[552,4]]},"719":{"position":[[124,4]]},"721":{"position":[[363,4]]},"723":{"position":[[214,4]]},"725":{"position":[[343,4]]},"741":{"position":[[75,4]]},"887":{"position":[[201,6]]},"902":{"position":[[599,6]]},"904":{"position":[[724,4]]},"906":{"position":[[761,4]]},"908":{"position":[[444,4]]},"910":{"position":[[1450,5]]},"912":{"position":[[418,4]]},"914":{"position":[[455,4]]},"918":{"position":[[481,4]]}}}],["conn.clos",{"_index":1218,"t":{"902":{"position":[[700,13],[1482,13]]}}}],["conn.end",{"_index":305,"t":{"632":{"position":[[1908,12]]},"741":{"position":[[210,11]]},"904":{"position":[[2089,11]]},"906":{"position":[[2124,11]]},"908":{"position":[[1357,11]]},"912":{"position":[[1214,11]]},"914":{"position":[[1249,11]]},"918":{"position":[[1392,11]]}}}],["conn.execute('select",{"_index":912,"t":{"714":{"position":[[108,20]]},"741":{"position":[[161,20]]}}}],["conn.execute>(sql",{"_index":946,"t":{"725":{"position":[[652,53]]}}}],["conn.query>('cal",{"_index":1261,"t":{"904":{"position":[[1624,45]]},"906":{"position":[[1661,45]]}}}],["conn.query('drop",{"_index":1245,"t":{"904":{"position":[[823,33],[1343,33]]},"906":{"position":[[860,33],[1380,33]]},"908":{"position":[[543,33]]},"912":{"position":[[517,33]]},"914":{"position":[[554,33]]},"918":{"position":[[580,33]]}}}],["conn.query(sql",{"_index":934,"t":{"721":{"position":[[460,32]]}}}],["conn.query(sql",{"_index":939,"t":{"723":{"position":[[349,34]]}}}],["conn.query('select",{"_index":917,"t":{"717":{"position":[[185,35]]}}}],["conn.query('show",{"_index":919,"t":{"717":{"position":[[321,33],[797,33]]}}}],["conn.query(sql",{"_index":924,"t":{"719":{"position":[[279,34]]}}}],["conn.query { const response = encrypt(key, password, pluginData); // continue handshake by sending response data return response; }) .catch((err) => { // throw error to propagate error to connect/changeUser handlers }); }; }, }, }); There is also a deprecated API where if a authSwitchHandler connection config option is set it must be a function that receives switch request data and responds via a callback. In this case, the first invocation always has a ({pluginName, pluginData}) signature, following calls - ({pluginData}). The client replies with an opaque blob matching the requested plugin via callback(null, data: Buffer). const conn = mysql.createConnection({ user: 'test_user', password: 'test', database: 'test_database', authSwitchHandler: function ({ pluginName, pluginData }, cb) { if (pluginName === 'ssh-key-auth') { getPrivateKey((key) => { const response = encrypt(key, pluginData); // continue handshake by sending response data // respond with error to propagate error to connect/changeUser handlers cb(null, response); }); } else { const err = new Error( `Unknown AuthSwitchRequest plugin name ${pluginName}` ); err.fatal = true; cb(err); } }, }); The initial handshake is always performed using mysql_native_password plugin. This will be possible to override in future versions. Note that if the mysql_native_password method is requested it will be handled internally according to Authentication::Native41 and no authPlugins function or the authSwitchHandler will be invoked. These MAY be called multiple times if the plugin algorithm requires multiple roundtrips of data exchange between client and server.","s":"Authentication Switch Request","u":"/node-mysql2/docs/documentation/authentication-switch","h":"","p":7},{"i":10,"t":"If the user requires multi-factor authentication in the server, the client will receive a AuthNextFactor request, which is similar in structure to the regular authentication switch request and contains the name and possible initial data for the additional authentication factor plugin (up to 3). Additional passwords can be provided using the connection config options - password2 and password3. Again, for each authentication factor, multiple roundtrips of data exchange can be required by the plugin algoritm. const conn = mysql.createConnection({ user: 'test_user', password: 'secret1', password2: 'secret2', password3: 'secret3', database: 'test_database', authPlugins: { // password1 === password 'auth-plugin1': function ({ password1 }) { return function (serverPluginData) { return clientPluginData(password1, serverPluginData); }; }, 'auth-plugin2': function ({ password2 }) { return function (serverPluginData) { return clientPluginData(password2, serverPluginData); }; }, 'auth-plugin3': function ({ password3 }) { return function (serverPluginData) { return clientPluginData(password3, serverPluginData); }; }, }, });","s":"Multi-factor authentication","u":"/node-mysql2/docs/documentation/authentication-switch","h":"#multi-factor-authentication","p":7},{"i":12,"t":"MySQL2 aims to be a drop in replacement for Node MySQL. note If you see any API incompatibilities with Node MySQL, please report via github issue. Not only MySQL2 offers better performance over Node MySQL, we also support these additional features: Prepared Statements Promise Wrapper Authentication Switch More Features MySQL Server Pooling SSL MySQL Compression Binary Log Protocol Client","s":"Documentation","u":"/node-mysql2/docs/documentation","h":"","p":11},{"i":14,"t":"Please check these examples for MySQL2.","s":"Examples","u":"/node-mysql2/docs/documentation","h":"#examples","p":11},{"i":16,"t":"zeroFill flag is ignored in type conversion. You need to check corresponding field's zeroFill flag and convert to string manually if this is of importance to you. DECIMAL and NEWDECIMAL types always returned as string unless you pass this config option: { decimalNumbers: true, } note This option could lose precision on the number as Javascript Number is a Float!","s":"Known incompatibilities with Node MySQL","u":"/node-mysql2/docs/documentation","h":"#known-incompatibilities-with-node-mysql","p":11},{"i":18,"t":"Wire protocol documentation Node MySQL - Most popular node.js mysql client library node-mariasql - Bindings to libmariasql. One of the fastest clients node-libmysqlclient - Bindings to libmysqlclient go-mysql - MySQL Go client (prepared statements, binlog protocol, server)","s":"Other Resources","u":"/node-mysql2/docs/documentation","h":"#other-resources","p":11},{"i":20,"t":"https://gist.github.com/sidorares/ffe9ee9c423f763e3b6b npm run benchmarks node-mysql-benchmarks try to run example benchmarks on your system","s":"Benchmarks","u":"/node-mysql2/docs/documentation","h":"#benchmarks","p":11},{"i":23,"t":"You can use named placeholders for parameters by setting namedPlaceholders config value or query/execute time option. Named placeholders are converted to unnamed ? on the client (mysql protocol does not support named parameters). If you reference parameter multiple times under the same name it is sent to server multiple times. Unnamed placeholders can still be used by providing the values as an array instead of an object. connection.config.namedPlaceholders = true; connection.execute('select :x + :y as z', { x: 1, y: 2 }, (err, rows) => { // statement prepared as \"select ? + ? as z\" and executed with [1,2] values // rows returned: [ { z: 3 } ] }); connection.execute('select :x + :x as z', { x: 1 }, (err, rows) => { // select ? + ? as z, execute with [1, 1] }); connection.query('select :x + :x as z', { x: 1 }, (err, rows) => { // query select 1 + 1 as z }); // unnamed placeholders are still valid if the values are provided in an array connection.query('select ? + ? as z', [1, 1], (err, rows) => { // query select 1 + 1 as z });","s":"Named placeholders","u":"/node-mysql2/docs/documentation/extras","h":"#named-placeholders","p":21},{"i":25,"t":"const options = { sql: 'select A,B,C,D from foo', rowsAsArray: true }; connection.query(options, (err, results) => { /* results will be an array of arrays like this now: [[ 'field A value', 'field B value', 'field C value', 'field D value', ], ...] */ });","s":"Receiving rows as array of columns instead of hash with column name as key:","u":"/node-mysql2/docs/documentation/extras","h":"#receiving-rows-as-array-of-columns-instead-of-hash-with-column-name-as-key","p":21},{"i":27,"t":"In addition to sending local fs files you can send any stream using infileStreamFactory query option. If set, it has to be a function that return a readable stream. It gets file path from query as a parameter. Note: starting from version 2.0 infileStreamFactory is required parameter for LOAD DATA LOCAL INFILE. Response from server indicates that it wants access to a local file and no infileStreamFactory option is provided the query ends with error. // local file connection.query( 'LOAD DATA LOCAL INFILE \"/tmp/data.csv\" INTO TABLE test FIELDS TERMINATED BY ? (id, title)', onInserted1 ); // local stream const sql = 'LOAD DATA LOCAL INFILE \"mystream\" INTO TABLE test FIELDS TERMINATED BY ? (id, title)'; connection.query( { sql: sql, infileStreamFactory: function (path) { return getStream(); }, }, onInserted2 ); The infileStreamFactory option may also be set at a connection-level: const fs = require('fs'); const mysql = require('mysql2'); const connection = mysql.createConnection({ user: 'test', database: 'test', infileStreamFactory: (path) => { // Validate file path const validPaths = ['/tmp/data.csv']; if (!validPaths.includes(path)) { throw new Error( `invalid file path: ${path}: expected to be one of ${validPaths.join( ',' )}` ); } return fs.createReadStream(path); }, }); connection.query( 'LOAD DATA LOCAL INFILE \"/tmp/data.csv\" INTO TABLE test', onInserted );","s":"Sending tabular data with 'load infile' and local stream:","u":"/node-mysql2/docs/documentation/extras","h":"#sending-tabular-data-with-load-infile-and-local-stream","p":21},{"i":29,"t":"const net = require('net'); const mysql = require('mysql2'); const shape = require('shaper'); const connection = mysql.createConnection({ user: 'test', database: 'test', stream: net.connect('/tmp/mysql.sock').pipe(shape(10)), // emulate 10 bytes/sec link }); connection.query('SELECT 1+1 as test1', console.log); stream also can be a function. In that case function result has to be duplex stream, and it is used for connection transport. This is required if you connect pool using custom transport as new pooled connection needs new stream. Example connecting over socks5 proxy: const mysql = require('mysql2'); const SocksConnection = require('socksjs'); const pool = mysql.createPool({ database: 'test', user: 'foo', password: 'bar', stream: function (cb) { const newStream = new SocksConnection( { host: 'remote.host', port: 3306 }, { host: 'localhost', port: 1080 } ); cb(null, newStream); }, }); In addition to password createConnection(), createPool() and changeUser() accept passwordSha1 option. This is useful when implementing proxies as plaintext password might be not available.","s":"Connecting using custom stream:","u":"/node-mysql2/docs/documentation/extras","h":"#connecting-using-custom-stream","p":21},{"i":32,"t":"createServer() - creates server instance Server.listen - listen port / unix socket (same arguments as net.Server.listen)","s":"Server","u":"/node-mysql2/docs/documentation/mysql-server","h":"#server","p":30},{"i":34,"t":"connect new incoming connection.","s":"Events","u":"/node-mysql2/docs/documentation/mysql-server","h":"#events","p":30},{"i":36,"t":"serverHandshake({ serverVersion, protocolVersion, connectionId, statusFlags, characterSet, capabilityFlags }) send server handshake initialisation packet, wait handshake response and start listening for commands writeOk({ affectedRows: num, insertId: num }) send OK packet to client writeEof(warnings, statusFlags) send EOF packet writeTextResult(rows, fields) write query result to client. Rows and fields are in the same format as in connection.query callback. writeColumns(fields) write fields + EOF packets. writeTextRow(row) write array (not hash!) of values as result row TODO: binary protocol","s":"Connection","u":"/node-mysql2/docs/documentation/mysql-server","h":"#connection","p":30},{"i":38,"t":"Every command packet received by the server will be emitted as a packet event with the parameters: packet: Packet The packet itself knownCommand: boolean is this command known to the server *commandCode: number the parsed command code (first byte) In addition special events are emitted for commands received from the client. If no listener is present a fallback behavior will be invoked. quit() Default: close the connection init_db(schemaName: string) Default: return OK query(sql: string) Please attach a listener to this. Default: return HA_ERR_INTERNAL_ERROR field_list(table: string, fields: string) Default: return ER_WARN_DEPRECATED_SYNTAX ping() - Default: return OK","s":"Events","u":"/node-mysql2/docs/documentation/mysql-server","h":"#events-1","p":30},{"i":40,"t":"In addition to errback interface there is thin wrapper to expose Promise-based api","s":"Promise Wrappers","u":"/node-mysql2/docs/documentation/promise-wrapper","h":"","p":39},{"i":42,"t":"/* eslint-env es6 */ const mysql = require('mysql2/promise'); // or require('mysql2').createConnectionPromise mysql .createConnection({ /* same parameters as for non-promise createConnection */ }) .then((conn) => conn.query('select foo from bar')) .then(([rows, fields]) => console.log(rows[0].foo)); const pool = require('mysql2/promise').createPool({}); // or require('mysql2').createPoolPromise({}) or require('mysql2').createPool({}).promise() pool .getConnection() .then((conn) => { const res = conn.query('select foo from bar'); conn.release(); return res; }) .then((result) => { console.log(result[0][0].foo); }) .catch((err) => { console.log(err); // any of connection time or query time errors from above });","s":"Basic Promise","u":"/node-mysql2/docs/documentation/promise-wrapper","h":"#basic-promise","p":39},{"i":44,"t":"async function example1() { const mysql = require('mysql2/promise'); const conn = await mysql.createConnection({ database: test }); const [rows, fields] = await conn.execute('select ?+? as sum', [2, 2]); await conn.end(); } async function example2() { const mysql = require('mysql2/promise'); const pool = mysql.createPool({ database: test }); // execute in parallel, next console.log in 3 seconds await Promise.all([ pool.query('select sleep(2)'), pool.query('select sleep(3)'), ]); console.log('3 seconds after'); await pool.end(); }","s":"ES7 Async Await","u":"/node-mysql2/docs/documentation/promise-wrapper","h":"#es7-async-await","p":39},{"i":46,"t":"const mysql = require('mysql2'); const co = require('co'); co(function* () { const c = yield mysql.createConnectionPromise({ user: 'root', namedPlaceholders: true, }); const rows = yield c.query('show databases'); console.log(rows); console.log(yield c.execute('select 1+:toAdd as qqq', { toAdd: 10 })); yield c.end(); }); Examples in /examples/promise-co-await","s":"With CO","u":"/node-mysql2/docs/documentation/promise-wrapper","h":"#with-co","p":39},{"i":48,"t":"This website is built using Docusaurus 3, a modern static website generator.","s":"Website Contributing Guidelines","u":"/node-mysql2/docs/contributing/website","h":"","p":47},{"i":50,"t":"You will need these tools installed on your system: Node.js (18.x or higher)","s":"Environment","u":"/node-mysql2/docs/contributing/website","h":"#environment","p":47},{"i":52,"t":"Fork the MySQL2 repository. Download your forked repository locally. The website's workspace is the \"website\" directory in node-mysql2 root. Create a new branch from master (optional). Run cd website to enter the website workspace. Run npm ci to install the dependecies from package-lock.json. Run npm start to starting the local development. It will start a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. For Docusaurus complete documentation, please see here. CLI example git clone https://github.com/sidorares/node-mysql2.git git checkout -b website # optional cd /path-to/node-mysql2/website npm ci npm start Documentation is auto-generated from MDX files placed in these directories: ./docs/documentation ./docs/examples ./docs/faq Caution Note that the website has its own package.json. Please, do not install dependencies for the website in node-mysql2 root.","s":"Development","u":"/node-mysql2/docs/contributing/website","h":"#development","p":47},{"i":54,"t":"Every extra component is thoroughly documented with complete typings descriptions. Docusaurus Markdown Features: The MDX compiler transforms Markdown files to React components, and allows you to use JSX in your Markdown content. This enables you to easily interleave React components within your content, and create delightful learning experiences.","s":"Extras Components","u":"/node-mysql2/docs/contributing/website","h":"#extras-components","p":47},{"i":56,"t":"The History component displays version changes in a table format, listing version numbers alongside their changes. import { History } from '@site/src/components/History'; tip You can also utilize React components in the changes option. Example History Version Changes v1.0.0 Some change message.","s":"History","u":"/node-mysql2/docs/contributing/website","h":"#history","p":47},{"i":58,"t":"See the Stability Badges for more detais. import { Stability } from '@site/src/components/Stability'; tip You can also utilize React components in the message option. Available levels: 0, 1, 1.1, 1.2, 2 and 3. Example 2Stable 2Stable Some message.","s":"Stability","u":"/node-mysql2/docs/contributing/website","h":"#stability","p":47},{"i":60,"t":"import { FAQ } from '@site/src/components/FAQ'; > Some markdown (**MDX**) content. tip The FAQ component can be utilized in any section or page. Code blocks are compatible and can be used within the FAQ component. Example Title Some markdown (MDX) content.","s":"FAQ","u":"/node-mysql2/docs/contributing/website","h":"#faq","p":47},{"i":62,"t":"import { ExternalCodeEmbed } from '@site/src/components/ExternalCodeEmbed'; Example","s":"ExternalCodeEmbed","u":"/node-mysql2/docs/contributing/website","h":"#externalcodeembed","p":47},{"i":64,"t":"npm run test Check Prettier and ESLint rules for compliance npm run lintcheck Included in the GitHub Actions workflow. Check for typings errors 1Experimental Checks for MDX components are missing. npm run typecheck Included in the GitHub Actions workflow. Clear and build the website npm run clear npm run build Included in the GitHub Actions workflow. Fix issues from Prettier and ESLint rules npm run lint To prevent lint issues, it is recommended to execute this command before creating your commit. Not included in the GitHub Actions workflow.","s":"Running Tests","u":"/node-mysql2/docs/contributing/website","h":"#running-tests","p":47},{"i":67,"t":"Similar to connection.query(). connection.execute('select 1 + ? + ? as result', [5, 6], (err, rows) => { // rows: [ { result: 12 } ] // internally 'select 1 + ? + ? as result' is prepared first. On subsequent calls cached statement is re-used }); // close cached statement for 'select 1 + ? + ? as result'. noop if not in cache connection.unprepare('select 1 + ? + ? as result'); Note that connection.execute() will cache the prepared statement for better performance, remove the cache with connection.unprepare() when you're done.","s":"Automatic creation, cached and re-used by connection","u":"/node-mysql2/docs/documentation/prepared-statements","h":"#automatic-creation-cached-and-re-used-by-connection","p":65},{"i":69,"t":"Manually prepared statements doesn't comes with LRU cache and SHOULD be closed using statement.close() instead of connection.unprepare(). connection.prepare('select ? + ? as tests', (err, statement) => { // statement.parameters - array of column definitions, length === number of params, here 2 // statement.columns - array of result column definitions. Can be empty if result schema is dynamic / not known // statement.id // statement.query statement.execute([1, 2], (err, rows, columns) => { // -> [ { tests: 3 } ] }); // don't use connection.unprepare(), it won't work! // note that there is no callback here. There is no statement close ack at protocol level. statement.close(); }); Note that you should not use statement after connection reset (changeUser() or disconnect). Statement scope is connection, you need to prepare statement for each new connection in order to use it.","s":"Manual prepare / execute","u":"/node-mysql2/docs/documentation/prepared-statements","h":"#manual-prepare--execute","p":65},{"i":71,"t":"maxPreparedStatements : We keep the cached statements in a lru-cache. Default size is 16000 but you can use this option to override it. Any statements that are dropped from cache will be closed.","s":"Configuration","u":"/node-mysql2/docs/documentation/prepared-statements","h":"#configuration","p":65},{"i":73,"t":"The bind parameter values passed to execute are serialized JS -> MySQL as: null -> NULL number -> DOUBLE boolean -> TINY (0 for false, 1 for true) object -> depending on prototype: Date -> DATETIME JSON like object - JSON Buffer -> VAR_STRING Other -> VAR_STRING Passing in undefined or a function will result in an error.","s":"Serialization of bind parameters","u":"/node-mysql2/docs/documentation/prepared-statements","h":"#serialization-of-bind-parameters","p":65},{"i":75,"t":"MySQL2 provides execute helper which will prepare and query the statement. You can also manually prepare / unprepare statement with prepare / unprepare methods. connection.execute( 'select ?+1 as qqq, ? as rrr, ? as yyy', [1, null, 3], (err, rows, fields) => { console.log(err, rows, fields); connection.execute( 'select ?+1 as qqq, ? as rrr, ? as yyy', [3, null, 3], (err, rows, fields) => { console.log(err, rows, fields); connection.unprepare('select ?+1 as qqq, ? as rrr, ? as yyy'); connection.execute( 'select ?+1 as qqq, ? as rrr, ? as yyy', [3, null, 3], (err, rows, fields) => { console.log(err, rows, fields); } ); } ); } );","s":"Prepared Statements Helper","u":"/node-mysql2/docs/documentation/prepared-statements","h":"#prepared-statements-helper","p":65},{"i":77,"t":"For Prepared Statements examples, please see here.","s":"Examples","u":"/node-mysql2/docs/documentation/prepared-statements","h":"#examples","p":65},{"i":79,"t":"tip To explore the examples, please use the sidebar navigation on desktop or access the menu on mobile devices.","s":"Examples","u":"/node-mysql2/docs/examples","h":"","p":78},{"i":81,"t":"MySQL-pg-proxy - MySQL to Postgres proxy server. MySQLite.js - MySQL server with JS-only (emscripten compiled) sqlite backend. SQL-engine - MySQL server with LevelDB backend. MySQL-osquery-proxy - Connect to facebook osquery using MySQL client PlyQL - Connect to Druid using MySQL client","s":"Examples using MySQL server API","u":"/node-mysql2/docs/examples","h":"#examples-using-mysql-server-api","p":78},{"i":83,"t":"index.js 'use strict'; const mysql = require('mysql2'); const through2 = require('through2'); const binlogStream = mysql.createBinlogStream({ serverId: 123, // slave ID, first field in \"show slave hosts\" sql response // you can also specify slave host, username, password and port masterId: 0, filename: 'mysql-bin.000007', binlogPos: 120, flags: 1, // 1 = \"non-blocking mode\" }); binlogStream.pipe( through2.obj((obj, enc, next) => { console.log(obj); next(); }) );","s":"Binlog Watcher","u":"/node-mysql2/docs/examples/binlog-watcher","h":"","p":82},{"i":86,"t":"npm install --save mysql2 npm install --save-dev @types/node The @types/node ensure the proper interaction between TypeScript and the Node.js modules used by MySQL2 (net, events, stream, tls, etc.). info Requires TypeScript >=4.5.2.","s":"Installation","u":"/node-mysql2/docs/documentation/typescript-examples","h":"#installation","p":84},{"i":88,"t":"You can import MySQL2 in two ways: By setting the esModuleInterop option to true in tsconfig.json import mysql from 'mysql2'; import mysql from 'mysql2/promise'; By setting the esModuleInterop option to false in tsconfig.json import * as mysql from 'mysql2'; import * as mysql from 'mysql2/promise';","s":"Usage","u":"/node-mysql2/docs/documentation/typescript-examples","h":"#usage","p":84},{"i":90,"t":"import mysql, { ConnectionOptions } from 'mysql2'; const access: ConnectionOptions = { user: 'test', database: 'test', }; const conn = mysql.createConnection(access);","s":"Connection","u":"/node-mysql2/docs/documentation/typescript-examples","h":"#connection","p":84},{"i":92,"t":"import mysql, { PoolOptions } from 'mysql2'; const access: PoolOptions = { user: 'test', database: 'test', }; const conn = mysql.createPool(access);","s":"Pool Connection","u":"/node-mysql2/docs/documentation/typescript-examples","h":"#pool-connection","p":84},{"i":94,"t":"A simple query conn.query('SELECT 1 + 1 AS `test`;', (_err, rows) => { /** * @rows: [ { test: 2 } ] */ }); conn.execute('SELECT 1 + 1 AS `test`;', (_err, rows) => { /** * @rows: [ { test: 2 } ] */ }); The rows output will be these possible types: RowDataPacket[] RowDataPacket[][] ResultSetHeader ResultSetHeader[] ProcedureCallPacket In this example, you need to manually check the output types","s":"Query and Execute","u":"/node-mysql2/docs/documentation/typescript-examples","h":"#query-and-execute","p":84},{"i":97,"t":"2Stable An array with the returned rows, for example: import mysql, { RowDataPacket } from 'mysql2'; const conn = mysql.createConnection({ user: 'test', database: 'test', }); // SELECT conn.query('SELECT 1 + 1 AS `test`;', (_err, rows) => { console.log(rows); /** * @rows: [ { test: 2 } ] */ }); // SHOW conn.query('SHOW TABLES FROM `test`;', (_err, rows) => { console.log(rows); /** * @rows: [ { Tables_in_test: 'test' } ] */ }); Using rowsAsArray option as true: import mysql, { RowDataPacket } from 'mysql2'; const conn = mysql.createConnection({ user: 'test', database: 'test', rowsAsArray: true, }); // SELECT conn.query( 'SELECT 1 + 1 AS test, 2 + 2 AS test;', (_err, rows) => { console.log(rows); /** * @rows: [ [ 2, 4 ] ] */ } ); // SHOW conn.query('SHOW TABLES FROM `test`;', (_err, rows) => { console.log(rows); /** * @rows: [ [ 'test' ] ] */ });","s":"RowDataPacket[]","u":"/node-mysql2/docs/documentation/typescript-examples","h":"#rowdatapacket","p":84},{"i":99,"t":"2Stable Using multipleStatements option as true with multiple queries: import mysql, { RowDataPacket } from 'mysql2'; const conn = mysql.createConnection({ user: 'test', database: 'test', multipleStatements: true, }); const sql = ` SELECT 1 + 1 AS test; SELECT 2 + 2 AS test; `; conn.query(sql, (_err, rows) => { console.log(rows); /** * @rows: [ [ { test: 2 } ], [ { test: 4 } ] ] */ });","s":"RowDataPacket[][]","u":"/node-mysql2/docs/documentation/typescript-examples","h":"#rowdatapacket-1","p":84},{"i":101,"t":"2Stable History Version Changes v3.5.1 OkPacket is deprecated and might be removed in the future major release. Please use ResultSetHeader instead. changedRows option is deprecated and might be removed in the future major release. Please use affectedRows instead. For INSERT, UPDATE, DELETE, TRUNCATE, etc.: import mysql, { ResultSetHeader } from 'mysql2'; const conn = mysql.createConnection({ user: 'test', database: 'test', }); const sql = ` SET @1 = 1; `; conn.query(sql, (_err, result) => { console.log(result); /** * @result: ResultSetHeader { fieldCount: 0, affectedRows: 0, insertId: 0, info: '', serverStatus: 2, warningStatus: 0, changedRows: 0 } */ });","s":"ResultSetHeader","u":"/node-mysql2/docs/documentation/typescript-examples","h":"#resultsetheader","p":84},{"i":103,"t":"2Stable History Version Changes v3.5.1 Introduce ResultSetHeader[] For multiples INSERT, UPDATE, DELETE, TRUNCATE, etc. when using multipleStatements as true: import mysql, { ResultSetHeader } from 'mysql2'; const conn = mysql.createConnection({ user: 'test', database: 'test', multipleStatements: true, }); const sql = ` SET @1 = 1; SET @2 = 2; `; conn.query(sql, (_err, results) => { console.log(results); /** * @results: [ ResultSetHeader { fieldCount: 0, affectedRows: 0, insertId: 0, info: '', serverStatus: 10, warningStatus: 0, changedRows: 0 }, ResultSetHeader { fieldCount: 0, affectedRows: 0, insertId: 0, info: '', serverStatus: 2, warningStatus: 0, changedRows: 0 } ] */ });","s":"ResultSetHeader[]","u":"/node-mysql2/docs/documentation/typescript-examples","h":"#resultsetheader-1","p":84},{"i":105,"t":"2Stable History Version Changes v3.5.1 Introduce ProcedureCallPacket tip By performing a Call Procedure using INSERT, UPDATE, etc., the return will be a ProcedureCallPacket (even if you perform multiples queries and set multipleStatements to true): import mysql, { ProcedureCallPacket, ResultSetHeader } from 'mysql2'; const conn = mysql.createConnection({ user: 'test', database: 'test', }); /** ResultSetHeader */ conn.query('DROP PROCEDURE IF EXISTS myProcedure'); /** ResultSetHeader */ conn.query(` CREATE PROCEDURE myProcedure() BEGIN SET @1 = 1; SET @2 = 2; END `); /** ProcedureCallPacket */ const sql = 'CALL myProcedure()'; conn.query>(sql, (_err, result) => { console.log(result); /** * @result: ResultSetHeader { fieldCount: 0, affectedRows: 0, insertId: 0, info: '', serverStatus: 2, warningStatus: 0, changedRows: 0 } */ }); For CREATE PROCEDURE and DROP PROCEDURE, these returns will be the default ResultSetHeader. By using SELECT and SHOW queries in a Procedure Call, it groups the results as: /** ProcedureCallPacket */ [RowDataPacket[], ResultSetHeader] For ProcedureCallPacket, please see the following examples.","s":"ProcedureCallPacket","u":"/node-mysql2/docs/documentation/typescript-examples","h":"#procedurecallpacket","p":84},{"i":107,"t":"0Deprecated OkPacket is deprecated and might be removed in the future major release. Please use ResultSetHeader instead.","s":"OkPacket","u":"/node-mysql2/docs/documentation/typescript-examples","h":"#okpacket","p":84},{"i":109,"t":"You can also check some code examples using MySQL2 and TypeScript to understand advanced concepts: Extending and using Interfaces with RowDataPacket Extending and using Interfaces with RowDataPacket and rowAsArray Extending and using Interfaces with RowDataPacket and multipleStatements Extending and using Interfaces with RowDataPacket, rowAsArray and multipleStatements Checking for ResultSetHeader, extending and using Interfaces with RowDataPacket from ProcedureCallPacket Checking for ResultSetHeader, extending and using Interfaces with RowDataPacket and rowAsArray from ProcedureCallPacket Creating a basic custom MySQL2 Class","s":"Examples","u":"/node-mysql2/docs/documentation/typescript-examples","h":"#examples","p":84},{"i":111,"t":"MySQL client for Node.js with focus on performance. Supports prepared statements, non-utf8 encodings, binary log protocol, compression, ssl much more.","s":"MySQL2","u":"/node-mysql2/docs","h":"","p":110},{"i":113,"t":"MySQL2 is free from native bindings and can be installed on Linux, Mac OS or Windows without any issues. JavaScript TypeScript npm install --save mysql2 npm install --save mysql2 npm install --save-dev @types/node For TypeScript documentation and examples, see here.","s":"Installation","u":"/node-mysql2/docs","h":"#installation","p":110},{"i":115,"t":"To explore more queries examples, please visit the example sections Simple Queries and Prepared Statements. Promise Callback // Get the client import mysql from 'mysql2/promise'; // Create the connection to database const connection = await mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', }); // A simple SELECT query try { const [results, fields] = await connection.query( 'SELECT * FROM `table` WHERE `name` = \"Page\" AND `age` > 45' ); console.log(results); // results contains rows returned by server console.log(fields); // fields contains extra meta data about results, if available } catch (err) { console.log(err); } // Using placeholders try { const [results] = await connection.query( 'SELECT * FROM `table` WHERE `name` = ? AND `age` > ?', ['Page', 45] ); console.log(results); } catch (err) { console.log(err); } // Get the client const mysql = require('mysql2'); // Create the connection to database const connection = mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', }); // A simple SELECT query connection.query( 'SELECT * FROM `table` WHERE `name` = \"Page\" AND `age` > 45', function (err, results, fields) { console.log(results); // results contains rows returned by server console.log(fields); // fields contains extra meta data about results, if available } ); // Using placeholders connection.query( 'SELECT * FROM `table` WHERE `name` = ? AND `age` > ?', ['Page', 45], function (err, results) { console.log(results); } );","s":"First Query","u":"/node-mysql2/docs","h":"#first-query","p":110},{"i":117,"t":"With MySQL2 you also get the prepared statements. With prepared statements MySQL doesn't have to prepare plan for same query every time, this results in better performance. If you don't know why they are important, please check these discussions: How prepared statements can protect from SQL Injection attacks MySQL2 provides execute helper which will prepare and query the statement. You can also manually prepare / unprepare statement with prepare / unprepare methods. To explore more Prepared Statements and Placeholders examples, please visit the example section Prepared Statements. Promise Callback import mysql from 'mysql2/promise'; try { // create the connection to database const connection = await mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', }); // execute will internally call prepare and query const [results, fields] = await connection.execute( 'SELECT * FROM `table` WHERE `name` = ? AND `age` > ?', ['Rick C-137', 53] ); console.log(results); // results contains rows returned by server console.log(fields); // fields contains extra meta data about results, if available } catch (err) { console.log(err); } const mysql = require('mysql2'); // create the connection to database const connection = mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', }); // execute will internally call prepare and query connection.execute( 'SELECT * FROM `table` WHERE `name` = ? AND `age` > ?', ['Rick C-137', 53], function (err, results, fields) { console.log(results); // results contains rows returned by server console.log(fields); // fields contains extra meta data about results, if available } ); tip If you execute same statement again, it will be picked from a LRU cache which will save query preparation time and give better performance.","s":"Using Prepared Statements","u":"/node-mysql2/docs","h":"#using-prepared-statements","p":110},{"i":119,"t":"Connection pools help reduce the time spent connecting to the MySQL server by reusing a previous connection, leaving them open instead of closing when you are done with them. This improves the latency of queries as you avoid all of the overhead that comes with establishing a new connection. To explore more Connection Pools examples, please visit the example section createPool. Promise Callback import mysql from 'mysql2/promise'; // Create the connection pool. The pool-specific settings are the defaults const pool = mysql.createPool({ host: 'localhost', user: 'root', database: 'test', waitForConnections: true, connectionLimit: 10, maxIdle: 10, // max idle connections, the default value is the same as `connectionLimit` idleTimeout: 60000, // idle connections timeout, in milliseconds, the default value 60000 queueLimit: 0, enableKeepAlive: true, keepAliveInitialDelay: 0, }); const mysql = require('mysql2'); // Create the connection pool. The pool-specific settings are the defaults const pool = mysql.createPool({ host: 'localhost', user: 'root', database: 'test', waitForConnections: true, connectionLimit: 10, maxIdle: 10, // max idle connections, the default value is the same as `connectionLimit` idleTimeout: 60000, // idle connections timeout, in milliseconds, the default value 60000 queueLimit: 0, enableKeepAlive: true, keepAliveInitialDelay: 0, }); note The pool does not create all connections upfront but creates them on demand until the connection limit is reached. You can use the pool in the same way as connections (using pool.query() and pool.execute()): Promise Callback try { // For pool initialization, see above const [rows, fields] = await pool.query('SELECT `field` FROM `table`'); // Connection is automatically released when query resolves } catch (err) { console.log(err); } // For pool initialization, see above pool.query('SELECT `field` FROM `table`', function (err, rows, fields) { // Connection is automatically released when query resolves }); Alternatively, there is also the possibility of manually acquiring a connection from the pool and returning it later: Promise Callback // For pool initialization, see above const conn = await pool.getConnection(); // Do something with the connection await conn.query(/* ... */); // Don't forget to release the connection when finished! pool.releaseConnection(conn); // For pool initialization, see above pool.getConnection(function (err, conn) { // Do something with the connection conn.query(/* ... */); // Don't forget to release the connection when finished! pool.releaseConnection(conn); }); Additionally, directly release the connection using the connection object: conn.release();","s":"Using Connection Pools","u":"/node-mysql2/docs","h":"#using-connection-pools","p":110},{"i":121,"t":"MySQL2 also support Promise API. Which works very well with ES7 async await. import mysql from 'mysql2/promise'; async function main() { // create the connection const connection = await mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', }); // query database const [rows, fields] = await connection.execute( 'SELECT * FROM `table` WHERE `name` = ? AND `age` > ?', ['Morty', 14] ); } MySQL2 use default Promise object available in scope. But you can choose which Promise implementation you want to use. // get the client import mysql from 'mysql2/promise'; // get the promise implementation, we will use bluebird import bluebird from 'bluebird'; // create the connection, specify bluebird as Promise const connection = await mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', Promise: bluebird, }); // query database const [rows, fields] = await connection.execute( 'SELECT * FROM `table` WHERE `name` = ? AND `age` > ?', ['Morty', 14] ); MySQL2 also exposes a .promise() function on Pools, so you can create a promise/non-promise connections from the same pool. import mysql from 'mysql2'; async function main() { // create the pool const pool = mysql.createPool({ host: 'localhost', user: 'root', database: 'test', }); // now get a Promise wrapped instance of that pool const promisePool = pool.promise(); // query database using promises const [rows, fields] = await promisePool.query('SELECT 1'); } MySQL2 exposes a .promise() function on Connections, to \"upgrade\" an existing non-promise connection to use promise. const mysql = require('mysql2'); // create the connection const conn = mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', }); conn .promise() .query('SELECT 1') .then(([rows, fields]) => { console.log(rows); }) .catch(console.log) .then(() => conn.end());","s":"Using Promise Wrapper","u":"/node-mysql2/docs","h":"#using-promise-wrapper","p":110},{"i":123,"t":"If you have two columns with the same name, you might want to get results as an array rather than an object to prevent them from clashing. This is a deviation from the Node MySQL library. For example: SELECT 1 AS `foo`, 2 AS `foo`. You can enable this setting at either the connection level (applies to all queries), or at the query level (applies only to that specific query). Connection Level Promise Callback const conn = await mysql.createConnection({ host: 'localhost', database: 'test', user: 'root', rowsAsArray: true, }); const conn = mysql.createConnection({ host: 'localhost', database: 'test', user: 'root', rowsAsArray: true, }); Query Level Promise Callback try { const [results, fields] = await conn.query({ sql: 'SELECT 1 AS `foo`, 2 AS `foo`', rowsAsArray: true, }); console.log(results); // in this query, results will be an array of arrays rather than an array of objects console.log(fields); // fields are unchanged } catch (err) { console.log(err); } conn.query( { sql: 'SELECT 1 AS `foo`, 2 AS `foo`', rowsAsArray: true, }, function (err, results, fields) { console.log(results); // in this query, results will be an array of arrays rather than an array of objects console.log(fields); // fields are unchanged } ); Getting Help Need help? Ask your question on Stack Overflow or GitHub. If you've encountered an issue, please file it on GitHub.","s":"Array Results","u":"/node-mysql2/docs","h":"#array-results","p":110},{"i":125,"t":"info For queries please see the Simple Queries and Prepared Statements examples.","s":"createConnection","u":"/node-mysql2/docs/examples/connections/create-connection","h":"","p":124},{"i":127,"t":"createConnection(connectionUri: string) promise.js callback.js import mysql from 'mysql2/promise'; try { const connection = await mysql.createConnection( 'mysql://root:password@localhost:3306/test' ); } catch (err) { console.log(err); } const mysql = require('mysql2'); const connection = mysql.createConnection( 'mysql://root:password@localhost:3306/test' ); connection.addListener('error', (err) => { console.log(err); });","s":"createConnection(connectionUri)","u":"/node-mysql2/docs/examples/connections/create-connection","h":"#createconnectionconnectionuri","p":124},{"i":129,"t":"createConnection(config: ConnectionOptions) promise.js callback.js import mysql from 'mysql2/promise'; try { const connection = await mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', // port: 3306, // password: '', }); } catch (err) { console.log(err); } const mysql = require('mysql2'); const connection = mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', // port: 3306, // password: '', }); connection.addListener('error', (err) => { console.log(err); });","s":"createConnection(config)","u":"/node-mysql2/docs/examples/connections/create-connection","h":"#createconnectionconfig","p":124},{"i":131,"t":"createConnection(config: ConnectionOptions) promise.js callback.js import mysql from 'mysql2/promise'; try { const connection = await mysql.createConnection({ // ... passwordSha1: Buffer.from( '8bb6118f8fd6935ad0876a3be34a717d32708ffd', 'hex' ), }); } catch (err) { console.log(err); } const mysql = require('mysql2'); const connection = mysql.createConnection({ // ... passwordSha1: Buffer.from('8bb6118f8fd6935ad0876a3be34a717d32708ffd', 'hex'), }); connection.addListener('error', (err) => { console.log(err); });","s":"createConnection(config) — SHA1","u":"/node-mysql2/docs/examples/connections/create-connection","h":"#createconnectionconfig--sha1","p":124},{"i":133,"t":"createConnection(config: ConnectionOptions) promise.js callback.js certs/ca-cert.pem import mysql from 'mysql2/promise'; try { const connection = await mysql.createConnection({ // ... ssl: { // key: fs.readFileSync('./certs/client-key.pem'), // cert: fs.readFileSync('./certs/client-cert.pem') ca: fs.readFileSync('./certs/ca-cert.pem'), }, }); } catch (err) { console.log(err); } const mysql = require('mysql2'); const connection = mysql.createConnection({ // ... ssl: { // key: fs.readFileSync('./certs/client-key.pem'), // cert: fs.readFileSync('./certs/client-cert.pem') ca: fs.readFileSync('./certs/ca-cert.pem'), }, }); connection.addListener('error', (err) => { console.log(err); }); See ssl/certs.","s":"createConnection(config) — SSL","u":"/node-mysql2/docs/examples/connections/create-connection","h":"#createconnectionconfig--ssl","p":124},{"i":135,"t":"createConnection(config: ConnectionOptions) You can use Amazon RDS string as value to ssl property to connect to Amazon RDS MySQL over SSL. In that case https://s3.amazonaws.com/rds-downloads/mysql-ssl-ca-cert.pem CA cert is used: promise.js callback.js import mysql from 'mysql2/promise'; try { const connection = await mysql.createConnection({ // ... host: 'db.id.ap-southeast-2.rds.amazonaws.com', ssl: 'Amazon RDS', }); } catch (err) { console.log(err); } Testing try { const [res] = await connection.query('SHOW `status` LIKE \"Ssl_cipher\"'); await connection.end(); console.log(res); } catch (err) { console.log(err); } const mysql = require('mysql2'); const connection = mysql.createConnection({ // ... host: 'db.id.ap-southeast-2.rds.amazonaws.com', ssl: 'Amazon RDS', }); connection.addListener('error', (err) => { console.log(err); }); Testing connectionquery('SHOW `status` LIKE \"Ssl_cipher\"', function (err, res) { connection.end(); if (err instanceof Error) { console.log(err); return; } console.log(res); });","s":"createConnection(config) — RDS SSL","u":"/node-mysql2/docs/examples/connections/create-connection","h":"#createconnectionconfig--rds-ssl","p":124},{"i":137,"t":"Issues #2130 — Update TLS certs for Amazon RDS instances Pull Requests #2119 — fix: make startTls code compatible with Bun #2131 — Update Amazon RDS SSL CA cert","s":"Related Links","u":"/node-mysql2/docs/examples/connections/create-connection","h":"#related-links","p":124},{"i":139,"t":"createConnection(config: ConnectionOptions) A.js B.js const mysql = require('mysql2'); const SocksConnection = require('socksjs'); const socksProxy = new SocksConnection({ port: 3306 }); const connection = mysql.createConnection({ stream: socksProxy, }); connection.addListener('error', (err) => { console.log(err); }); const mysql = require('mysql2'); const SocksConnection = require('socksjs'); const connection = mysql.createConnection({ debug: 1, stream: function () { return new SocksConnection({ port: 3306 }); }, }); connection.addListener('error', (err) => { console.log(err); }); Testing connection.execute('SELECT SLEEP(1.1) AS `www`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); }); connection.execute('SELECT SLEEP(1) AS `qqq`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); }); connection.execute('SELECT SLEEP(1) AS `qqq`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); });","s":"createConnection(config) — Socks","u":"/node-mysql2/docs/examples/connections/create-connection","h":"#createconnectionconfig--socks","p":124},{"i":142,"t":"ConnectionOptions Specification","s":"ConnectionOptions","u":"/node-mysql2/docs/examples/connections/create-connection","h":"#connectionoptions","p":124},{"i":144,"t":"MySQL2 provides execute helper which will prepare and query the statement. You can also manually prepare / unprepare statement with prepare / unprepare methods. See detailed documentaion in Prepared Statements. tip If you execute same statement again, it will be picked form a LRU cache which will save query preparation time and give better performance. Usage examples: INSERT SELECT UPDATE DELETE","s":"Prepared Statements","u":"/node-mysql2/docs/examples/queries/prepared-statements","h":"","p":143},{"i":146,"t":"info For queries please see the Simple Queries and Prepared Statements examples.","s":"createPool","u":"/node-mysql2/docs/examples/connections/create-pool","h":"","p":145},{"i":148,"t":"createPool(connectionUri: string) promise.js callback.js import mysql from 'mysql2/promise'; try { const pool = mysql.createPool('mysql://root:password@localhost:3306/test'); const connection = await pool.getConnection(); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const pool = mysql.createPool('mysql://root:password@localhost:3306/test'); pool.getConnection(function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); warning Don't forget to release the connection when finished by using: pool.releaseConnection(connection) connection.release()","s":"createPool(connectionUri)","u":"/node-mysql2/docs/examples/connections/create-pool","h":"#createpoolconnectionuri","p":145},{"i":150,"t":"createPool(config: PoolOptions) promise.js callback.js import mysql from 'mysql2/promise'; try { const pool = mysql.createPool({ host: 'localhost', user: 'root', database: 'test', // port: 3306, // password: '', }); const connection = await pool.getConnection(); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const pool = mysql.createPool({ host: 'localhost', user: 'root', database: 'test', // port: 3306, // password: '', }); pool.getConnection(function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); warning Don't forget to release the connection when finished by using: pool.releaseConnection(connection) connection.release()","s":"createPool(config)","u":"/node-mysql2/docs/examples/connections/create-pool","h":"#createpoolconfig","p":145},{"i":152,"t":"createPool(config: PoolOptions) promise.js callback.js import mysql from 'mysql2/promise'; try { const pool = mysql.createPool({ // ... passwordSha1: Buffer.from( '8bb6118f8fd6935ad0876a3be34a717d32708ffd', 'hex' ), }); const connection = await pool.getConnection(); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const pool = mysql.createPool({ // ... passwordSha1: Buffer.from('8bb6118f8fd6935ad0876a3be34a717d32708ffd', 'hex'), }); pool.getConnection(function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); warning Don't forget to release the connection when finished by using: pool.releaseConnection(connection) connection.release()","s":"createPool(config) — SHA1","u":"/node-mysql2/docs/examples/connections/create-pool","h":"#createpoolconfig--sha1","p":145},{"i":154,"t":"createPool(config: PoolOptions) promise.js callback.js certs/ca-cert.pem import mysql from 'mysql2/promise'; try { const pool = mysql.createPool({ // ... ssl: { // key: fs.readFileSync('./certs/client-key.pem'), // cert: fs.readFileSync('./certs/client-cert.pem') ca: fs.readFileSync('./certs/ca-cert.pem'), }, }); const connection = await pool.getConnection(); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const pool = mysql.createPool({ // ... ssl: { // key: fs.readFileSync('./certs/client-key.pem'), // cert: fs.readFileSync('./certs/client-cert.pem') ca: fs.readFileSync('./certs/ca-cert.pem'), }, }); pool.getConnection(function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); See ssl/certs. warning Don't forget to release the connection when finished by using: pool.releaseConnection(connection) connection.release()","s":"createPool(config) — SSL","u":"/node-mysql2/docs/examples/connections/create-pool","h":"#createpoolconfig--ssl","p":145},{"i":156,"t":"createPool(config: PoolOptions) You can use Amazon RDS string as value to ssl property to connect to Amazon RDS MySQL over SSL. In that case https://s3.amazonaws.com/rds-downloads/mysql-ssl-ca-cert.pem CA cert is used: promise.js callback.js import mysql from 'mysql2/promise'; try { const pool = mysql.createPool({ // ... host: 'db.id.ap-southeast-2.rds.amazonaws.com', ssl: 'Amazon RDS', }); const connection = await pool.getConnection(); // ... some query connection.release(); } catch (err) { console.log(err); } Testing try { const [res] = await connection.query('SHOW `status` LIKE \"Ssl_cipher\"'); await pool.end(); console.log(res); } catch (err) { console.log(err); } const mysql = require('mysql2'); const pool = mysql.createPool({ // ... host: 'db.id.ap-southeast-2.rds.amazonaws.com', ssl: 'Amazon RDS', }); pool.getConnection(function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); Testing connectionquery('SHOW `status` LIKE \"Ssl_cipher\"', function (err, res) { pool.end(); if (err instanceof Error) { console.log(err); return; } console.log(res); }); warning Don't forget to release the connection when finished by using: pool.releaseConnection(connection) connection.release()","s":"createPool(config) — RDS SSL","u":"/node-mysql2/docs/examples/connections/create-pool","h":"#createpoolconfig--rds-ssl","p":145},{"i":158,"t":"Issues #2130 — Update TLS certs for Amazon RDS instances Pull Requests #2119 — fix: make startTls code compatible with Bun #2131 — Update Amazon RDS SSL CA cert","s":"Related Links","u":"/node-mysql2/docs/examples/connections/create-pool","h":"#related-links","p":145},{"i":160,"t":"createPool(config: PoolOptions) A.js B.js const mysql = require('mysql2'); const SocksConnection = require('socksjs'); const socksProxy = new SocksConnection({ port: 3306 }); const pool = mysql.createPool({ stream: socksProxy, }); const mysql = require('mysql2'); const SocksConnection = require('socksjs'); const pool = mysql.createPool({ debug: 1, stream: function () { return new SocksConnection({ port: 3306 }); }, }); Testing pool.execute('SELECT SLEEP(1.1) AS `www`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); }); pool.execute('SELECT SLEEP(1) AS `qqq`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); }); pool.execute('SELECT SLEEP(1) AS `qqq`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); });","s":"createPool(config) — Socks","u":"/node-mysql2/docs/examples/connections/create-pool","h":"#createpoolconfig--socks","p":145},{"i":163,"t":"PoolOptions extends all options from ConnectionOptions: ConnectionOptions Specification PoolOptions Specification","s":"PoolOptions","u":"/node-mysql2/docs/examples/connections/create-pool","h":"#pooloptions","p":145},{"i":166,"t":"execute(sql: string, values: any[]) promise.js callback.js try { const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (?, ?), (?,?)'; const values = ['Josh', 19, 'Page', 45]; const [result, fields] = await connection.execute(sql, values); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (?, ?), (?,?)'; const values = ['Josh', 19, 'Page', 45]; connection.execute(sql, values, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); }); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(sql, values)","u":"/node-mysql2/docs/examples/queries/prepared-statements/insert","h":"#executesql-values","p":164},{"i":168,"t":"execute(options: QueryOptions) promise.js callback.js try { const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (?, ?), (?,?)'; const values = ['Josh', 19, 'Page', 45]; const [result, fields] = await connection.execute({ sql, values, // ... other options }); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (?, ?), (?,?)'; const values = ['Josh', 19, 'Page', 45]; connection.execute( { sql, values, // ... other options }, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options)","u":"/node-mysql2/docs/examples/queries/prepared-statements/insert","h":"#executeoptions","p":164},{"i":170,"t":"execute(options: QueryOptions, values: any[]) promise.js callback.js try { const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (?, ?), (?,?)'; const values = ['Josh', 19, 'Page', 45]; const [result, fields] = await connection.execute( { sql, // ... other options }, values ); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (?, ?), (?,?)'; const values = ['Josh', 19, 'Page', 45]; connection.execute( { sql, // ... other options }, values, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options, values)","u":"/node-mysql2/docs/examples/queries/prepared-statements/insert","h":"#executeoptions-values","p":164},{"i":173,"t":"ResultSetHeader Specification","s":"ResultSetHeader","u":"/node-mysql2/docs/examples/queries/prepared-statements/insert","h":"#resultsetheader","p":164},{"i":175,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/docs/examples/queries/prepared-statements/insert","h":"#queryoptions","p":164},{"i":178,"t":"execute(sql: string, values: any[]) promise.js callback.js try { const sql = 'SELECT * FROM `users` WHERE `name` = ? AND `age` > ?'; const values = ['Page', 45]; const [rows, fields] = await connection.execute(sql, values); console.log(rows); console.log(fields); } catch (err) { console.log(err); } const sql = 'SELECT * FROM `users` WHERE `name` = ? AND `age` > ?'; const values = ['Page', 45]; connection.execute(sql, values, (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows); console.log(fields); }); rows contains rows returned by server fields contains extra meta data about rows, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(sql, values)","u":"/node-mysql2/docs/examples/queries/prepared-statements/select","h":"#executesql-values","p":176},{"i":180,"t":"execute(options: QueryOptions) promise.js callback.js try { const sql = 'SELECT * FROM `users` WHERE `name` = ? AND `age` > ?'; const values = ['Page', 45]; const [rows, fields] = await connection.execute({ sql, values, // ... other options }); console.log(rows); console.log(fields); } catch (err) { console.log(err); } const sql = 'SELECT * FROM `users` WHERE `name` = ? AND `age` > ?'; const values = ['Page', 45]; connection.execute( { sql, values, // ... other options }, (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows); console.log(fields); } ); rows contains rows returned by server fields contains extra meta data about rows, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options)","u":"/node-mysql2/docs/examples/queries/prepared-statements/select","h":"#executeoptions","p":176},{"i":182,"t":"execute(options: QueryOptions, values: any[]) promise.js callback.js try { const sql = 'SELECT * FROM `users` WHERE `name` = ? AND `age` > ?'; const values = ['Page', 45]; const [rows, fields] = await connection.execute( { sql, // ... other options }, values ); console.log(rows); console.log(fields); } catch (err) { console.log(err); } const sql = 'SELECT * FROM `users` WHERE `name` = ? AND `age` > ?'; const values = ['Page', 45]; connection.execute( { sql, // ... other options }, values, (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows); console.log(fields); } ); rows contains rows returned by server fields contains extra meta data about rows, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options, values)","u":"/node-mysql2/docs/examples/queries/prepared-statements/select","h":"#executeoptions-values","p":176},{"i":185,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/docs/examples/queries/prepared-statements/select","h":"#queryoptions","p":176},{"i":187,"t":"info For Prepared Statements or Placeholders / Parameters examples, please see here. Usage examples: INSERT SELECT UPDATE DELETE","s":"Simple Queries","u":"/node-mysql2/docs/examples/queries/simple-queries","h":"","p":186},{"i":189,"t":"The examples below also work for the execute method.","s":"DELETE","u":"/node-mysql2/docs/examples/queries/simple-queries/delete","h":"","p":188},{"i":191,"t":"query(sql: string) promise.js callback.js try { const sql = 'DELETE FROM `users` WHERE `name` = \"Page\" LIMIT 1'; const [result, fields] = await connection.query(sql); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'DELETE FROM `users` WHERE `name` = \"Page\" LIMIT 1'; connection.query(sql, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); }); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(sql)","u":"/node-mysql2/docs/examples/queries/simple-queries/delete","h":"#querysql","p":188},{"i":193,"t":"query(options: QueryOptions) promise.js callback.js try { const sql = 'DELETE FROM `users` WHERE `name` = \"Page\" LIMIT 1'; const [result, fields] = await connection.query({ sql, // ... other options }); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'DELETE FROM `users` WHERE `name` = \"Page\" LIMIT 1'; connection.query( { sql, // ... other options }, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(options)","u":"/node-mysql2/docs/examples/queries/simple-queries/delete","h":"#queryoptions","p":188},{"i":196,"t":"ResultSetHeader Specification","s":"ResultSetHeader","u":"/node-mysql2/docs/examples/queries/simple-queries/delete","h":"#resultsetheader","p":188},{"i":198,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/docs/examples/queries/simple-queries/delete","h":"#queryoptions-1","p":188},{"i":200,"t":"await.js co.js .babelrc package.json 'use strict'; const mysql = require('mysql2/promise'); async function test() { const c = await mysql.createConnection({ port: 3306, user: 'testuser', namedPlaceholders: true, password: 'testpassword', }); console.log('connected!'); const [rows, fields] = await c.query('show databases'); console.log(rows); try { const [rows, fields] = await c.query('some invalid sql here'); } catch (e) { console.log('caught exception!', e); } console.log(await c.execute('select sleep(0.5)')); console.log('after first sleep'); console.log(await c.execute('select sleep(0.5)')); console.log('after second sleep'); let start = +new Date(); console.log( await Promise.all([ c.execute('select sleep(2.5)'), c.execute('select sleep(2.5)'), ]) ); console.log( 'after 2+3 parallel sleep which is in fact not parallel because commands are queued per connection' ); let end = +new Date(); console.log(end - start); await c.end(); const p = mysql.createPool({ port: 3306, user: 'testuser', namedPlaceholders: true, password: 'testpassword', }); console.log(await p.execute('select sleep(0.5)')); console.log('after first pool sleep'); start = +new Date(); console.log( await Promise.all([ p.execute('select sleep(2.5)'), p.execute('select sleep(2.5)'), ]) ); console.log('after 2+3 parallel pool sleep'); end = +new Date(); console.log(end - start); await p.end(); } test() .then(() => { console.log('done'); }) .catch((err) => { console.log('error!', err); throw err; }); 'use strict'; const mysql = require('mysql2/promise'); const co = require('co'); co(function* () { const c = yield mysql.createConnection({ port: 3306, user: 'root', namedPlaceholders: true, }); const rows = yield c.query('show databases'); console.log(rows); console.log(yield c.execute('select 1+:toAdd as qqq', { toAdd: 10 })); yield c.end(); }) .then(function () { console.log('done'); }) .catch(function (err) { console.log(err); throw err; }); { \"plugins\": [\"transform-async-to-generator\"] } { \"name\": \"promise-co-await\", \"version\": \"1.0.0\", \"description\": \"\", \"main\": \"await.js\", \"scripts\": { \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\" }, \"author\": \"\", \"license\": \"ISC\", \"dependencies\": { \"babel-cli\": \"^6.9.0\" } }","s":"await — co","u":"/node-mysql2/docs/examples/promise-wrapper/co-await","h":"","p":199},{"i":202,"t":"The examples below also work for the execute method.","s":"SELECT","u":"/node-mysql2/docs/examples/queries/simple-queries/select","h":"","p":201},{"i":204,"t":"query(sql: string) promise.js callback.js try { const sql = 'SELECT * FROM `users` WHERE `name` = \"Page\" AND `age` > 45'; const [rows, fields] = await connection.query(sql); console.log(rows); console.log(fields); } catch (err) { console.log(err); } const sql = 'SELECT * FROM `users` WHERE `name` = \"Page\" AND `age` > 45'; connection.query(sql, (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows); console.log(fields); }); rows contains rows returned by server fields contains extra meta data about rows, if available info The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(sql)","u":"/node-mysql2/docs/examples/queries/simple-queries/select","h":"#querysql","p":201},{"i":206,"t":"query(options: QueryOptions) promise.js callback.js try { const sql = 'SELECT * FROM `users` WHERE `name` = \"Page\" AND `age` > 45'; const [rows, fields] = await connection.query({ sql, // ... other options }); console.log(rows); console.log(fields); } catch (err) { console.log(err); } const sql = 'SELECT * FROM `users` WHERE `name` = \"Page\" AND `age` > 45'; connection.query( { sql, // ... other options }, (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows); console.log(fields); } ); rows contains rows returned by server fields contains extra meta data about rows, if available info The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(options)","u":"/node-mysql2/docs/examples/queries/simple-queries/select","h":"#queryoptions","p":201},{"i":208,"t":"query(options: QueryOptions) promise.js callback.js try { const sql = 'SELECT * FROM `users` WHERE `name` = \"Page\" AND `age` > 45'; const [rows, fields] = await connection.query({ sql, rowsAsArray: true, // ... other options }); console.log(rows); console.log(fields); } catch (err) { console.log(err); } const sql = 'SELECT * FROM `users` WHERE `name` = \"Page\" AND `age` > 45'; connection.query( { sql, rowsAsArray: true, // ... other options }, (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows); console.log(fields); } ); rows contains rows returned by server as array fields contains extra meta data about rows, if available info The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(options) — Row as Array","u":"/node-mysql2/docs/examples/queries/simple-queries/select","h":"#queryoptions--row-as-array","p":201},{"i":211,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/docs/examples/queries/simple-queries/select","h":"#queryoptions-1","p":201},{"i":213,"t":"The examples below also work for the execute method.","s":"INSERT","u":"/node-mysql2/docs/examples/queries/simple-queries/insert","h":"","p":212},{"i":215,"t":"query(sql: string) promise.js callback.js try { const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (\"Josh\", 19), (\"Page\", 45)'; const [result, fields] = await connection.query(sql); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (\"Josh\", 19), (\"Page\", 45)'; connection.query(sql, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); }); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(sql)","u":"/node-mysql2/docs/examples/queries/simple-queries/insert","h":"#querysql","p":212},{"i":217,"t":"query(options: QueryOptions) promise.js callback.js try { const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (\"Josh\", 19), (\"Page\", 45)'; const [result, fields] = await connection.query({ sql, // ... other options }); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (\"Josh\", 19), (\"Page\", 45)'; connection.query( { sql, // ... other options }, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(options)","u":"/node-mysql2/docs/examples/queries/simple-queries/insert","h":"#queryoptions","p":212},{"i":220,"t":"ResultSetHeader Specification","s":"ResultSetHeader","u":"/node-mysql2/docs/examples/queries/simple-queries/insert","h":"#resultsetheader","p":212},{"i":222,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/docs/examples/queries/simple-queries/insert","h":"#queryoptions-1","p":212},{"i":225,"t":"execute(sql: string, values: any[]) promise.js callback.js try { const sql = 'DELETE FROM `users` WHERE `name` = ? LIMIT 1'; const values = ['Page']; const [result, fields] = await connection.execute(sql, values); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'DELETE FROM `users` WHERE `name` = ? LIMIT 1'; const values = ['Page']; connection.execute(sql, values, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); }); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(sql, values)","u":"/node-mysql2/docs/examples/queries/prepared-statements/delete","h":"#executesql-values","p":223},{"i":227,"t":"execute(options: QueryOptions) promise.js callback.js try { const sql = 'DELETE FROM `users` WHERE `name` = ? LIMIT 1'; const values = ['Page']; const [result, fields] = await connection.execute({ sql, values, // ... other options }); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'DELETE FROM `users` WHERE `name` = ? LIMIT 1'; const values = ['Page']; connection.execute( { sql, values, // ... other options }, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options)","u":"/node-mysql2/docs/examples/queries/prepared-statements/delete","h":"#executeoptions","p":223},{"i":229,"t":"execute(options: QueryOptions, values: any[]) promise.js callback.js try { const sql = 'DELETE FROM `users` WHERE `name` = ? LIMIT 1'; const values = ['Page']; const [result, fields] = await connection.execute( { sql, // ... other options }, values ); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'DELETE FROM `users` WHERE `name` = ? LIMIT 1'; const values = ['Page']; connection.execute( { sql, // ... other options }, values, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options, values)","u":"/node-mysql2/docs/examples/queries/prepared-statements/delete","h":"#executeoptions-values","p":223},{"i":232,"t":"ResultSetHeader Specification","s":"ResultSetHeader","u":"/node-mysql2/docs/examples/queries/prepared-statements/delete","h":"#resultsetheader","p":223},{"i":234,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/docs/examples/queries/prepared-statements/delete","h":"#queryoptions","p":223},{"i":236,"t":"index.js 'use strict'; const pool = require('mysql2').createPool({ host: 'localhost', user: 'root', database: 'test', password: 'root', }); setInterval(() => { for (let i = 0; i < 5; ++i) { pool.query((err, rows, fields) => { console.log(rows, fields); // Connection is automatically released once query resolves }); } }, 1000); setInterval(() => { for (let i = 0; i < 5; ++i) { pool.getConnection((err, db) => { db.query('select sleep(0.5) as qqq', (err, rows, fields) => { console.log(rows, fields); db.release(); }); }); } }, 1000);","s":"Pool","u":"/node-mysql2/docs/examples/tests/pool","h":"","p":235},{"i":238,"t":"info For queries please see the Simple Queries and Prepared Statements examples.","s":"createPoolCluster","u":"/node-mysql2/docs/examples/connections/createPoolCluster","h":"","p":237},{"i":240,"t":"add(group: string, connectionUri: string) promise.js callback.js import mysql from 'mysql2/promise'; try { const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', 'mysql://root:password@localhost:3306/test'); // poolCluster.add('clusterB', '...'); const connection = await poolCluster.getConnection('clusterA'); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', 'mysql://root:password@localhost:3306/test'); // poolCluster.add('clusterB', '...'); poolCluster.getConnection('clusterA', function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); warning Don't forget to release the connection when finished by using: connection.release()","s":"add(group, connectionUri)","u":"/node-mysql2/docs/examples/connections/createPoolCluster","h":"#addgroup-connectionuri","p":237},{"i":242,"t":"add(group: string, config: PoolOptions) promise.js callback.js import mysql from 'mysql2/promise'; try { const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { host: 'localhost', user: 'root', database: 'test', // port: 3306, // password: '', }); // poolCluster.add('clusterB', '...'); const connection = await poolCluster.getConnection('clusterA'); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { host: 'localhost', user: 'root', database: 'test', // port: 3306, // password: '', }); // poolCluster.add('clusterB', '...'); poolCluster.getConnection('clusterA', function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); warning Don't forget to release the connection when finished by using: connection.release()","s":"add(group, config)","u":"/node-mysql2/docs/examples/connections/createPoolCluster","h":"#addgroup-config","p":237},{"i":244,"t":"add(group: string, config: PoolOptions) promise.js callback.js import mysql from 'mysql2/promise'; try { const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { // ... passwordSha1: Buffer.from( '8bb6118f8fd6935ad0876a3be34a717d32708ffd', 'hex' ), }); // poolCluster.add('clusterB', '...'); const connection = await poolCluster.getConnection('clusterA'); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { // ... passwordSha1: Buffer.from('8bb6118f8fd6935ad0876a3be34a717d32708ffd', 'hex'), }); // poolCluster.add('clusterB', '...'); poolCluster.getConnection('clusterA', function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); warning Don't forget to release the connection when finished by using: connection.release()","s":"add(group, config) — SHA1","u":"/node-mysql2/docs/examples/connections/createPoolCluster","h":"#addgroup-config--sha1","p":237},{"i":246,"t":"add(group: string, config: PoolOptions) promise.js callback.js certs/ca-cert.pem import mysql from 'mysql2/promise'; try { const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { // ... ssl: { // key: fs.readFileSync('./certs/client-key.pem'), // cert: fs.readFileSync('./certs/client-cert.pem') ca: fs.readFileSync('./certs/ca-cert.pem'), }, }); // poolCluster.add('clusterB', '...'); const connection = await poolCluster.getConnection('clusterA'); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { // ... ssl: { // key: fs.readFileSync('./certs/client-key.pem'), // cert: fs.readFileSync('./certs/client-cert.pem') ca: fs.readFileSync('./certs/ca-cert.pem'), }, }); // poolCluster.add('clusterB', '...'); poolCluster.getConnection('clusterA', function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); See ssl/certs. warning Don't forget to release the connection when finished by using: connection.release()","s":"add(group, config) — SSL","u":"/node-mysql2/docs/examples/connections/createPoolCluster","h":"#addgroup-config--ssl","p":237},{"i":248,"t":"add(group: string, config: PoolOptions) You can use Amazon RDS string as value to ssl property to connect to Amazon RDS MySQL over SSL. In that case https://s3.amazonaws.com/rds-downloads/mysql-ssl-ca-cert.pem CA cert is used: promise.js callback.js import mysql from 'mysql2/promise'; try { const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { // ... host: 'db.id.ap-southeast-2.rds.amazonaws.com', ssl: 'Amazon RDS', }); // poolCluster.add('clusterB', '...'); const connection = await poolCluster.getConnection('clusterA'); // ... some query connection.release(); } catch (err) { console.log(err); } Testing try { const [res] = await connection.query('SHOW `status` LIKE \"Ssl_cipher\"'); await poolCluster.end(); console.log(res); } catch (err) { console.log(err); } const mysql = require('mysql2'); const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { // ... host: 'db.id.ap-southeast-2.rds.amazonaws.com', ssl: 'Amazon RDS', }); // poolCluster.add('clusterB', '...'); poolCluster.getConnection('clusterA', function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); Testing connectionquery('SHOW `status` LIKE \"Ssl_cipher\"', function (err, res) { poolCluster.end(); if (err instanceof Error) { console.log(err); return; } console.log(res); }); warning Don't forget to release the connection when finished by using: connection.release()","s":"add(group, config) — RDS SSL","u":"/node-mysql2/docs/examples/connections/createPoolCluster","h":"#addgroup-config--rds-ssl","p":237},{"i":250,"t":"Issues #2130 — Update TLS certs for Amazon RDS instances Pull Requests #2119 — fix: make startTls code compatible with Bun #2131 — Update Amazon RDS SSL CA cert","s":"Related Links","u":"/node-mysql2/docs/examples/connections/createPoolCluster","h":"#related-links","p":237},{"i":252,"t":"add(group: string, config: PoolOptions) A.js B.js const mysql = require('mysql2'); const SocksConnection = require('socksjs'); const socksProxy = new SocksConnection({ port: 3306 }); const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { stream: socksProxy, }); // poolCluster.add('clusterB', '...'); const poolNamespace = poolCluster.of('clusterA'); const mysql = require('mysql2'); const SocksConnection = require('socksjs'); const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { debug: 1, stream: function () { return new SocksConnection({ port: 3306 }); }, }); // poolCluster.add('clusterB', '...'); const poolNamespace = poolCluster.of('clusterA'); Testing poolNamespace.execute('SELECT SLEEP(1.1) AS `www`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); }); poolNamespace.execute('SELECT SLEEP(1) AS `qqq`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); }); poolNamespace.execute('SELECT SLEEP(1) AS `qqq`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); });","s":"add(group, config) — Socks","u":"/node-mysql2/docs/examples/connections/createPoolCluster","h":"#addgroup-config--socks","p":237},{"i":255,"t":"PoolOptions extends all options from ConnectionOptions: ConnectionOptions Specification PoolOptions Specification","s":"PoolOptions","u":"/node-mysql2/docs/examples/connections/createPoolCluster","h":"#pooloptions","p":237},{"i":257,"t":"index.js 'use strict'; const mysql = require('mysql2'); const flags = require('mysql2/lib/constants/client.js'); const auth = require('mysql2/lib/auth_41.js'); function authenticate(params, cb) { console.log(params); const doubleSha = auth.doubleSha1('pass123'); const isValid = auth.verifyToken( params.authPluginData1, params.authPluginData2, params.authToken, doubleSha ); if (isValid) { cb(null); } else { // for list of codes lib/constants/errors.js cb(null, { message: 'wrong password dude', code: 1045 }); } } const server = mysql.createServer(); server.listen(3333); server.on('connection', (conn) => { // we can deny connection here: // conn.writeError({ message: 'secret', code: 123 }); // conn.close(); conn.serverHandshake({ protocolVersion: 10, serverVersion: '5.6.10', // 'node.js rocks', connectionId: 1234, statusFlags: 2, characterSet: 8, // capabilityFlags: 0xffffff, // capabilityFlags: -2113931265, capabilityFlags: 2181036031, authCallback: authenticate, }); conn.on('field_list', (table, fields) => { console.log('FIELD LIST:', table, fields); conn.writeEof(); }); conn.on('query', (query) => { conn.writeColumns([ { catalog: 'def', schema: 'test', table: 'test_table', orgTable: 'test_table', name: 'beta', orgName: 'beta', characterSet: 33, columnLength: 384, columnType: 253, flags: 0, decimals: 0, }, ]); conn.writeTextRow(['test тест テスト փորձարկում পরীক্ষা kiểm tra ']); conn.writeTextRow(['ტესტი પરીક્ષણ מבחן פּרובירן اختبار परीक्षण']); conn.writeEof(); conn.close(); }); });","s":"Server","u":"/node-mysql2/docs/examples/tests/server","h":"","p":256},{"i":259,"t":"index.js 'use strict'; const mysql = require('mysql2'); const ClientFlags = require('mysql2/lib/constants/client.js'); const server = mysql.createServer(); server.listen(3307); server.on('connection', (conn) => { console.log('connection'); conn.serverHandshake({ protocolVersion: 10, serverVersion: 'node.js rocks', connectionId: 1234, statusFlags: 2, characterSet: 8, capabilityFlags: 0xffffff ^ ClientFlags.COMPRESS, }); conn.on('field_list', (table, fields) => { console.log('field list:', table, fields); conn.writeEof(); }); const remote = mysql.createConnection({ user: 'root', database: 'dbname', host: 'server.example.com', password: 'secret', }); conn.on('query', (sql) => { console.log(`proxying query: ${sql}`); remote.query(sql, function (err) { // overloaded args, either (err, result :object) // or (err, rows :array, columns :array) if (Array.isArray(arguments[1])) { // response to a 'select', 'show' or similar const rows = arguments[1], columns = arguments[2]; console.log('rows', rows); console.log('columns', columns); conn.writeTextResult(rows, columns); } else { // response to an 'insert', 'update' or 'delete' const result = arguments[1]; console.log('result', result); conn.writeOk(result); } }); }); conn.on('end', remote.end.bind(remote)); });","s":"MySQL Proxy","u":"/node-mysql2/docs/examples/tests/mysql-proxy","h":"","p":258},{"i":261,"t":"index.ts /** * The types are explicity for learning purpose * By extending the `RowDataPacket`, you can use your Interface in `query` and `execute` */ import mysql, { ConnectionOptions, ProcedureCallPacket, ResultSetHeader, RowDataPacket, } from 'mysql2/promise'; interface User extends RowDataPacket { id: number; name: string; } const isResultSetHeader = (data: unknown): data is ResultSetHeader => { if (!data || typeof data !== 'object') return false; const keys = [ 'fieldCount', 'affectedRows', 'insertId', 'info', 'serverStatus', 'warningStatus', 'changedRows', ]; return keys.every((key) => key in data); }; (async () => { const access: ConnectionOptions = { host: '', user: '', password: '', database: '', }; const conn = await mysql.createConnection(access); /** Deleting the `users` table, if it exists */ await conn.query('DROP TABLE IF EXISTS `users`;'); /** Creating a minimal user table */ await conn.query( 'CREATE TABLE `users` (`id` INT(11) AUTO_INCREMENT, `name` VARCHAR(50), PRIMARY KEY (`id`));' ); /** Inserting some users */ const [inserted] = await conn.execute( 'INSERT INTO `users`(`name`) VALUES(?), (?), (?), (?);', ['Josh', 'John', 'Marie', 'Gween'] ); console.log('Inserted:', inserted.affectedRows); /** Deleting the `getUsers` procedure, if it exists */ await conn.query('DROP PROCEDURE IF EXISTS getUsers'); /** Creating a procedure to get the users */ await conn.query(` CREATE PROCEDURE getUsers() BEGIN SELECT * FROM users ORDER BY name ASC; END `); /** Getting users */ const [procedureResult] = await conn.query>('CALL getUsers()'); procedureResult.forEach((users) => { /** By perform a `SELECT` or `SHOW`, The last item of `procedureResult` always be a `ResultSetHeader` */ if (isResultSetHeader(users)) { console.log('----------------'); console.log('Affected Rows:', users.affectedRows); } else { users.forEach((user) => { console.log('----------------'); console.log('id: ', user.id); console.log('name:', user.name); }); } }); await conn.end(); })(); /** Output * * Inserted: 4 * ---------------- * id: 4 * name: Gween * ---------------- * id: 2 * name: John * ---------------- * id: 1 * name: Josh * ---------------- * id: 3 * name: Marie * ---------------- * Affected Rows: 0 */","s":"Procedure Call Packet","u":"/node-mysql2/docs/examples/typescript/procedure-call/index","h":"","p":260},{"i":263,"t":"The examples below also work for the execute method.","s":"UPDATE","u":"/node-mysql2/docs/examples/queries/simple-queries/update","h":"","p":262},{"i":265,"t":"query(sql: string) promise.js callback.js try { const sql = 'UPDATE `users` SET `age` = 20 WHERE `name` = \"Josh\" LIMIT 1'; const [result, fields] = await connection.query(sql); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'UPDATE `users` SET `age` = 20 WHERE `name` = \"Josh\" LIMIT 1'; connection.query(sql, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); }); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(sql)","u":"/node-mysql2/docs/examples/queries/simple-queries/update","h":"#querysql","p":262},{"i":267,"t":"query(options: QueryOptions) promise.js callback.js try { const sql = 'UPDATE `users` SET `age` = 20 WHERE `name` = \"Josh\" LIMIT 1'; const [result, fields] = await connection.query({ sql, // ... other options }); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'UPDATE `users` SET `age` = 20 WHERE `name` = \"Josh\" LIMIT 1'; connection.query( { sql, // ... other options }, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(options)","u":"/node-mysql2/docs/examples/queries/simple-queries/update","h":"#queryoptions","p":262},{"i":270,"t":"ResultSetHeader Specification","s":"ResultSetHeader","u":"/node-mysql2/docs/examples/queries/simple-queries/update","h":"#resultsetheader","p":262},{"i":272,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/docs/examples/queries/simple-queries/update","h":"#queryoptions-1","p":262},{"i":274,"t":"index.ts /** * The types are explicity for learning purpose * By extending the `RowDataPacket`, you can use your Interface in `query` and `execute` */ import mysql, { ConnectionOptions, ResultSetHeader, RowDataPacket, } from 'mysql2/promise'; interface User extends RowDataPacket { id: number; name: string; } (async () => { const access: ConnectionOptions = { host: '', user: '', password: '', database: '', }; const conn = await mysql.createConnection(access); /** Deleting the `users` table, if it exists */ await conn.query('DROP TABLE IF EXISTS `users`;'); /** Creating a minimal user table */ await conn.query( 'CREATE TABLE `users` (`id` INT(11) AUTO_INCREMENT, `name` VARCHAR(50), PRIMARY KEY (`id`));' ); /** Inserting some users */ const [inserted] = await conn.execute( 'INSERT INTO `users`(`name`) VALUES(?), (?), (?), (?);', ['Josh', 'John', 'Marie', 'Gween'] ); console.log('Inserted:', inserted.affectedRows); /** Getting users */ const [users] = await conn.query( 'SELECT * FROM `users` ORDER BY `name` ASC;' ); users.forEach((user) => { console.log('-----------'); console.log('id: ', user.id); console.log('name:', user.name); }); await conn.end(); })(); /** Output * * Inserted: 4 * ----------- * id: 4 * name: Gween * ----------- * id: 2 * name: John * ----------- * id: 1 * name: Josh * ----------- * id: 3 * name: Marie */","s":"Row Data Packet","u":"/node-mysql2/docs/examples/typescript/row-data/index","h":"","p":273},{"i":277,"t":"execute(sql: string, values: any[]) promise.js callback.js try { const sql = 'UPDATE `users` SET `age` = ? WHERE `name` = ? LIMIT 1'; const values = [20, 'Josh']; const [result, fields] = await connection.execute(sql, values); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'UPDATE `users` SET `age` = ? WHERE `name` = ? LIMIT 1'; const values = [20, 'Josh']; connection.execute(sql, values, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); }); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(sql, values)","u":"/node-mysql2/docs/examples/queries/prepared-statements/update","h":"#executesql-values","p":275},{"i":279,"t":"execute(options: QueryOptions) promise.js callback.js try { const sql = 'UPDATE `users` SET `age` = ? WHERE `name` = ? LIMIT 1'; const values = [20, 'Josh']; const [result, fields] = await connection.execute({ sql, values, // ... other options }); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'UPDATE `users` SET `age` = ? WHERE `name` = ? LIMIT 1'; const values = [20, 'Josh']; connection.execute( { sql, values, // ... other options }, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options)","u":"/node-mysql2/docs/examples/queries/prepared-statements/update","h":"#executeoptions","p":275},{"i":281,"t":"execute(options: QueryOptions, values: any[]) promise.js callback.js try { const sql = 'UPDATE `users` SET `age` = ? WHERE `name` = ? LIMIT 1'; const values = [20, 'Josh']; const [result, fields] = await connection.execute( { sql, // ... other options }, values ); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'UPDATE `users` SET `age` = ? WHERE `name` = ? LIMIT 1'; const values = [20, 'Josh']; connection.execute( { sql, // ... other options }, values, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options, values)","u":"/node-mysql2/docs/examples/queries/prepared-statements/update","h":"#executeoptions-values","p":275},{"i":284,"t":"ResultSetHeader Specification","s":"ResultSetHeader","u":"/node-mysql2/docs/examples/queries/prepared-statements/update","h":"#resultsetheader","p":275},{"i":286,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/docs/examples/queries/prepared-statements/update","h":"#queryoptions","p":275},{"i":288,"t":"index.ts /** * The types are explicity for learning purpose * By extending the `RowDataPacket`, you can use your Interface in `query` and `execute` */ import mysql, { ConnectionOptions, ResultSetHeader, RowDataPacket, } from 'mysql2/promise'; interface User extends RowDataPacket { id: number; name: string; } (async () => { const access: ConnectionOptions = { host: '', user: '', password: '', database: '', multipleStatements: true, }; const conn = await mysql.createConnection(access); /** Deleting the `users` table, if it exists */ await conn.query('DROP TABLE IF EXISTS `users`;'); /** Creating a minimal user table */ await conn.query( 'CREATE TABLE `users` (`id` INT(11) AUTO_INCREMENT, `name` VARCHAR(50), PRIMARY KEY (`id`));' ); /** Inserting some users */ const [inserted] = await conn.execute( 'INSERT INTO `users`(`name`) VALUES(?), (?), (?), (?);', ['Josh', 'John', 'Marie', 'Gween'] ); console.log('Inserted:', inserted.affectedRows); /** Getting users */ const [rows] = await conn.query( [ 'SELECT * FROM `users` ORDER BY `name` ASC LIMIT 2;', 'SELECT * FROM `users` ORDER BY `name` ASC LIMIT 2 OFFSET 2;', ].join(' ') ); rows.forEach((users) => { users.forEach((user) => { console.log('-----------'); console.log('id: ', user.id); console.log('name:', user.name); }); }); await conn.end(); })(); /** Output * * Inserted: 4 * ----------- * id: 4 * name: Gween * ----------- * id: 2 * name: John * ----------- * id: 1 * name: Josh * ----------- * id: 3 * name: Marie */","s":"Row Data Packet (Multi Statements)","u":"/node-mysql2/docs/examples/typescript/row-data/multi-statements","h":"","p":287},{"i":290,"t":"index.ts /** * The types are explicity for learning purpose * By extending the `RowDataPacket`, you can use your Interface in `query` and `execute` */ import mysql, { ConnectionOptions, ResultSetHeader, RowDataPacket, } from 'mysql2/promise'; interface User extends RowDataPacket { /** id */ 0: number; /** name */ 1: string; } (async () => { const access: ConnectionOptions = { host: '', user: '', password: '', database: '', rowsAsArray: true, }; const conn = await mysql.createConnection(access); /** Deleting the `users` table, if it exists */ await conn.query('DROP TABLE IF EXISTS `users`;'); /** Creating a minimal user table */ await conn.query( 'CREATE TABLE `users` (`id` INT(11) AUTO_INCREMENT, `name` VARCHAR(50), PRIMARY KEY (`id`));' ); /** Inserting some users */ const [inserted] = await conn.execute( 'INSERT INTO `users`(`name`) VALUES(?), (?), (?), (?);', ['Josh', 'John', 'Marie', 'Gween'] ); console.log('Inserted:', inserted.affectedRows); /** Getting users */ const [users] = await conn.query( 'SELECT * FROM `users` ORDER BY `name` ASC;' ); users.forEach((user) => { console.log('-----------'); console.log('id: ', user[0]); console.log('name:', user[1]); }); await conn.end(); })(); /** Output * * Inserted: 4 * ----------- * id: 4 * name: Gween * ----------- * id: 2 * name: John * ----------- * id: 1 * name: Josh * ----------- * id: 3 * name: Marie */","s":"Row Data Packet (Row as Array)","u":"/node-mysql2/docs/examples/typescript/row-data/row-as-array","h":"","p":289},{"i":292,"t":"MySQL2 project is a continuation of MySQL-Native. Protocol parser code was rewritten from scratch and api changed to match popular Node MySQL. MySQL2 team is working together with Node MySQL team to factor out shared code and move it under mysqljs organization. MySQL2 is mostly API compatible with Node MySQL and supports majority of features. MySQL2 also offers these additional features: Faster / Better Performance Prepared Statements MySQL Binary Log Protocol MySQL Server Extended support for Encoding and Collation Promise Wrapper Compression SSL and Authentication Switch Custom Streams Pooling","s":"History and Why MySQL2","u":"/node-mysql2/docs/history-and-why-mysq2","h":"","p":291},{"i":294,"t":"This section provides answers to commonly asked questions about MySQL2. tip To explore the FAQs, please use the sidebar navigation on desktop or access the menu on mobile devices.","s":"Frequently Asked Questions","u":"/node-mysql2/docs/faq","h":"","p":293},{"i":296,"t":"The Stability Badges are indications of a section's stability. The stability indices are as follows: 0Deprecated The feature might generate warnings and does not assure backward compatibility. Experimental: These features are not bound by semantic versioning. They may undergo non-backward compatible changes or be removed in future releases. Their use in production is discouraged. Use caution with Experimental features, especially in libraries. Users might not expect changes from these unstable features. To reduce surprises, consider using a command-line flag for Experimental features. Experimental features are classified into stages: 1Experimental Experimental features at this stage are currently in development and prone to considerable changes. 1.1Early Development Experimental features at this stage are approaching minimum viability. 1.2Release Candidate Experimental features are close to reaching stability. Major changes are not expected, but they could still occur based on user feedback. Testing and feedback are important to ascertain the readiness of these features for stable classification. 2Stable Compatibility with the MySQL ecosystem is a high priority. 3Legacy This feature, while not likely to be removed and still subject to semantic versioning, is not under active maintenance and other options are available. Features are classified as legacy instead of deprecated when they cause no harm and have widespread use in the MySQL ecosystem. It's unlikely that bugs in legacy features will be addressed.","s":"Stability Badges","u":"/node-mysql2/docs/stability-badges","h":"","p":295},{"i":298,"t":"index.ts /** * The types are explicity for learning purpose * By extending the `RowDataPacket`, you can use your Interface in `query` and `execute` */ import mysql, { ConnectionOptions, ProcedureCallPacket, ResultSetHeader, RowDataPacket, } from 'mysql2/promise'; interface User extends RowDataPacket { /** id */ 0: number; /** name */ 1: string; } const isResultSetHeader = (data: unknown): data is ResultSetHeader => { if (!data || typeof data !== 'object') return false; const keys = [ 'fieldCount', 'affectedRows', 'insertId', 'info', 'serverStatus', 'warningStatus', 'changedRows', ]; return keys.every((key) => key in data); }; (async () => { const access: ConnectionOptions = { host: '', user: '', password: '', database: '', rowsAsArray: true, }; const conn = await mysql.createConnection(access); /** Deleting the `users` table, if it exists */ await conn.query('DROP TABLE IF EXISTS `users`;'); /** Creating a minimal user table */ await conn.query( 'CREATE TABLE `users` (`id` INT(11) AUTO_INCREMENT, `name` VARCHAR(50), PRIMARY KEY (`id`));' ); /** Inserting some users */ const [inserted] = await conn.execute( 'INSERT INTO `users`(`name`) VALUES(?), (?), (?), (?);', ['Josh', 'John', 'Marie', 'Gween'] ); console.log('Inserted:', inserted.affectedRows); /** Deleting the `getUsers` procedure, if it exists */ await conn.query('DROP PROCEDURE IF EXISTS getUsers'); /** Creating a procedure to get the users */ await conn.query(` CREATE PROCEDURE getUsers() BEGIN SELECT * FROM users ORDER BY name ASC; END `); /** Getting users */ const [procedureResult] = await conn.query>('CALL getUsers()'); procedureResult.forEach((users) => { /** By perform a `SELECT` or `SHOW`, The last item of `procedureResult` always be a `ResultSetHeader` */ if (isResultSetHeader(users)) { console.log('----------------'); console.log('Affected Rows:', users.affectedRows); } else { users.forEach((user) => { console.log('----------------'); console.log('id: ', user[0]); console.log('name:', user[1]); }); } }); await conn.end(); })(); /** Output * * Inserted: 4 * ---------------- * id: 4 * name: Gween * ---------------- * id: 2 * name: John * ---------------- * id: 1 * name: Josh * ---------------- * id: 3 * name: Marie * ---------------- * Affected Rows: 0 */","s":"Procedure Call Packet (Row as Array)","u":"/node-mysql2/docs/examples/typescript/procedure-call/row-as-array","h":"","p":297},{"i":300,"t":"This section details error handling techniques in MySQL2. It covers essential error management strategies for methods such as createConnection, createPool, createPoolCluster, execute and query.","s":"How to handle errors?","u":"/node-mysql2/docs/faq/how-to-handle-errors","h":"","p":299},{"i":302,"t":"createConnection 2Stable This solution has been tested and confirmed as the correct answer. Handling connection errors by adding an error event listener: const mysql = require('mysql2'); connection = mysql.createConnection({ host: '', user: '', database: '', }); connection.addListener('error', (err) => { if (err instanceof Error) { console.log(`createConnection error:`, err); } }); createPool 2Stable This solution has been tested. Handling connection errors through callback's err parameter: const mysql = require('mysql2'); const pool = mysql.createPool({ host: '', user: '', database: '', }); pool.getConnection((err, connection) => { if (err instanceof Error) { console.log('pool.getConnection error:', err); return; } }); createPoolCluster 2Stable This solution has been tested. Handling connection errors through callback's err parameter: const mysql = require('mysql2'); const poolCluster = mysql.createPoolCluster(); poolCluster.add('NodeI', { host: '', user: '', database: '', }); poolCluster.getConnection('NodeI', (err, connection) => { if (err instanceof Error) { console.log('poolCluster.getConnection error:', err); return; } }); execute 2Stable This solution has been tested. Handling execute errors through callback's err parameter: connection.execute('SELEC 1 + 1', (err, rows) => { if (err instanceof Error) { console.log('execute error:', err); return; } console.log(rows); }); It will work for both createConnection, createPool and createPoolCluster connections. query 2Stable This solution has been tested. Handling query errors through callback's err parameter: connection.query('SELEC 1 + 1', (err, rows) => { if (err instanceof Error) { console.log('query error:', err); return; } console.log(rows); }); It will work for both createConnection, createPool and createPoolCluster connections.","s":"Using callbacks","u":"/node-mysql2/docs/faq/how-to-handle-errors","h":"#using-callbacks","p":299},{"i":304,"t":"createConnection 2Stable This solution has been tested and confirmed as the correct answer. Handling connection errors through try-catch block: import mysql from 'mysql2/promise'; try { const connection = await mysql.createConnection({ host: '', user: '', database: '', }); } catch (err) { if (err instanceof Error) { console.log(err); } } createPool 2Stable This solution has been tested. Handling connection errors through try-catch block: import mysql from 'mysql2/promise'; const pool = mysql.createPool({ host: '', user: '', database: '', }); try { const connection = await pool.getConnection(); } catch (err) { if (err instanceof Error) { console.log(err); } } createPoolCluster 2Stable This solution has been tested. Handling connection errors through try-catch block: import mysql from 'mysql2/promise'; const poolCluster = mysql.createPoolCluster(); poolCluster.add('NodeI', { host: '', user: '', database: '', }); try { await poolCluster.getConnection('NodeI'); } catch (err) { if (err instanceof Error) { console.log('createConnection error:', err); } } execute 2Stable This solution has been tested. Handling execute errors through try-catch block: try { const [rows] = await connection.execute('SELEC 1 + 1'); console.log(rows); } catch (err) { if (err instanceof Error) { console.log('execute error:', err); } } It will work for both createConnection, createPool and createPoolCluster connections. query 2Stable This solution has been tested. Handling query errors through try-catch block: try { const [rows] = await connection.query('SELEC 1 + 1'); console.log(rows); } catch (err) { if (err instanceof Error) { console.log('query error:', err); } } It will work for both createConnection, createPool and createPoolCluster connections.","s":"Using promises","u":"/node-mysql2/docs/faq/how-to-handle-errors","h":"#using-promises","p":299},{"i":306,"t":"Discussions #1998 #2282","s":"Related Links","u":"/node-mysql2/docs/faq/how-to-handle-errors","h":"#related-links","p":299},{"i":308,"t":"index.ts /** * The types are explicity for learning purpose * By extending the `RowDataPacket`, you can use your Interface in `query` and `execute` */ import mysql, { ConnectionOptions, ResultSetHeader, RowDataPacket, } from 'mysql2/promise'; interface User extends RowDataPacket { /** id */ 0: number; /** name */ 1: string; } (async () => { const access: ConnectionOptions = { host: '', user: '', password: '', database: '', multipleStatements: true, rowsAsArray: true, }; const conn = await mysql.createConnection(access); /** Deleting the `users` table, if it exists */ await conn.query('DROP TABLE IF EXISTS `users`;'); /** Creating a minimal user table */ await conn.query( 'CREATE TABLE `users` (`id` INT(11) AUTO_INCREMENT, `name` VARCHAR(50), PRIMARY KEY (`id`));' ); /** Inserting some users */ const [inserted] = await conn.execute( 'INSERT INTO `users`(`name`) VALUES(?), (?), (?), (?);', ['Josh', 'John', 'Marie', 'Gween'] ); console.log('Inserted:', inserted.affectedRows); /** Getting users */ const [rows] = await conn.query( [ 'SELECT * FROM `users` ORDER BY `name` ASC LIMIT 2;', 'SELECT * FROM `users` ORDER BY `name` ASC LIMIT 2 OFFSET 2;', ].join(' ') ); rows.forEach((users) => { users.forEach((user) => { console.log('-----------'); console.log('id: ', user[0]); console.log('name:', user[1]); }); }); await conn.end(); })(); /** Output * * Inserted: 4 * ----------- * id: 4 * name: Gween * ----------- * id: 2 * name: John * ----------- * id: 1 * name: Josh * ----------- * id: 3 * name: Marie */","s":"Row Data Packet (Multi Statements and Row as Array)","u":"/node-mysql2/docs/examples/typescript/row-data/row-as-array-multi-statements","h":"","p":307},{"i":310,"t":"index.ts db.ts /** * The types are explicity for learning purpose */ import { PoolOptions } from 'mysql2/promise'; import { MySQL } from './db.js'; interface User extends RowDataPacket { id: number; name: string; } const access: PoolOptions = { host: '', user: '', password: '', database: '', }; (async () => { const mysql = new MySQL(access); /** Deleting the `users` table, if it exists */ await mysql.queryResult('DROP TABLE IF EXISTS `users`;'); /** Creating a minimal user table */ await mysql.queryResult( 'CREATE TABLE `users` (`id` INT(11) AUTO_INCREMENT, `name` VARCHAR(50), PRIMARY KEY (`id`));' ); /** Inserting some users */ const [inserted] = await mysql.executeResult( 'INSERT INTO `users`(`name`) VALUES(?), (?), (?), (?);', ['Josh', 'John', 'Marie', 'Gween'] ); console.log('Inserted:', inserted.affectedRows); /** Getting users */ const [users] = await mysql.queryRows( 'SELECT * FROM `users` ORDER BY `name` ASC;' ); users.forEach((user: User) => { console.log('-----------'); console.log('id: ', user.id); console.log('name:', user.name); }); await mysql.connection.end(); })(); /** Output * * Inserted: 4 * ----------- * id: 4 * name: Gween * ----------- * id: 2 * name: John * ----------- * id: 1 * name: Josh * ----------- * id: 3 * name: Marie */ /** * The types are explicity for learning purpose */ import { createPool, PoolOptions, Pool, ResultSetHeader, RowDataPacket, } from 'mysql2/promise'; export class MySQL { private conn: Pool; private credentials: PoolOptions; constructor(credentials: PoolOptions) { this.credentials = credentials; this.conn = createPool(this.credentials); } /** A random method to simulate a step before to get the class methods */ private ensureConnection() { if (!this?.conn) this.conn = createPool(this.credentials); } /** For `SELECT` and `SHOW` */ get queryRows() { this.ensureConnection(); return this.conn.query.bind(this.conn); } /** For `SELECT` and `SHOW` with `rowAsArray` as `true` */ get queryRowsAsArray() { this.ensureConnection(); return this.conn.query.bind(this.conn); } /** For `INSERT`, `UPDATE`, etc. */ get queryResult() { this.ensureConnection(); return this.conn.query.bind(this.conn); } /** For multiple `INSERT`, `UPDATE`, etc. with `multipleStatements` as `true` */ get queryResults() { this.ensureConnection(); return this.conn.query.bind(this.conn); } /** For `SELECT` and `SHOW` */ get executeRows() { this.ensureConnection(); return this.conn.execute.bind(this.conn); } /** For `SELECT` and `SHOW` with `rowAsArray` as `true` */ get executeRowsAsArray() { this.ensureConnection(); return this.conn.execute.bind(this.conn); } /** For `INSERT`, `UPDATE`, etc. */ get executeResult() { this.ensureConnection(); return this.conn.execute.bind(this.conn); } /** For multiple `INSERT`, `UPDATE`, etc. with `multipleStatements` as `true` */ get executeResults() { this.ensureConnection(); return this.conn.execute.bind(this.conn); } /** Expose the Pool Connection */ get connection() { return this.conn; } }","s":"Basic Custom Class","u":"/node-mysql2/docs/examples/typescript/basic-custom-class","h":"","p":309}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/2",[0,4.512,1,3.687,2,5.936,3,5.936,4,1.437,5,4.837,6,5.936,7,1.871,8,3.687,9,5.936,10,2.61,11,5.936,12,4.837,13,5.936,14,3.687,15,3.087,16,5.274,17,4.295,18,4.837,19,5.936,20,5.936,21,1.492,22,0.537,23,4.512,24,3.849,25,4.251,26,3.687,27,5.274,28,3.187,29,5.936]],["t/4",[30,5.779,31,6.3,32,6.3,33,2.83,34,3.041,35,4.599,36,7.092,37,3.2,38,7.092,39,5.079]],["t/6",[4,1.495,14,4.826,24,3.457,26,3.312,33,2.127,34,2.286,40,4.737,41,4.345,42,4.345,43,6.902,44,4.345,45,1.786,46,1.558,47,1.903,48,5.332,49,2.773,50,4.737,51,1.862,52,4.737,53,5.332,54,2.032,55,4.737,56,5.332,57,4.737,58,4.345,59,5.332,60,4.737,61,5.332,62,4.737,63,2.539,64,4.737,65,5.332,66,1.75,67,5.332,68,6.194,69,4.345,70,3.312,71,5.332,72,3.819,73,4.737,74,5.332]],["t/8",[0,1.662,17,1.257,21,1.058,22,0.834,24,1.418,28,2.456,45,0.733,46,1.307,54,2.534,69,2.928,75,2.187,76,2.187,77,1.542,78,1.782,79,3.476,80,2.187,81,4.316,82,1.204,83,4.064,84,2.73,85,1.96,86,1.813,87,0.853,88,3.727,89,2.94,90,1.179,91,2.187,92,2.573,93,5.658,94,4.191,95,1.943,96,3.727,97,2.187,98,2.187,99,2.372,100,1.943,101,2.187,102,4.574,103,4.026,104,6.647,105,1.662,106,1.358,107,3.192,108,1.943,109,2.187,110,2.187,111,2.187,112,0.583,113,1.214,114,1.782,115,1.633,116,2.187,117,0.748,118,2.187,119,4.574,120,2.187,121,0.877,122,1.468,123,1.401,124,0.849,125,3.192,126,2.39,127,1.132,128,1.155,129,3.192,130,2.187,131,2.187,132,4.506,133,3.593,134,3.192,135,4.064,136,2.928,137,1.782,138,1.782,139,3.593,140,3.593,141,3.593,142,1.662,143,4.574,144,3.593,145,1.418,146,1.566,147,1.566,148,2.187,149,2.731,150,5.297,151,1.782,152,2.187,153,2.187,154,2.187,155,1.943,156,2.187,157,1.782,158,2.187,159,1.782,160,0.471,161,1.174,162,1.782,163,2.187,164,2.187,165,0.938,166,2.187,167,1.782,168,1.257,169,3.593,170,1.662,171,1.943,172,1.662,173,1.358,174,1.358,175,1.662,176,2.187,177,2.187,178,1.943,179,2.33,180,1.486,181,2.187,182,1.566,183,1.943,184,1.943,185,1.943]],["t/10",[21,0.743,22,0.85,28,1.998,46,1.752,54,2.989,77,1.083,79,2.828,81,5.232,83,3.306,84,2.221,85,1.247,88,3.033,90,1.221,92,5.056,93,4.429,94,3.892,96,3.033,99,1.939,106,3.375,112,0.603,121,0.558,122,1.52,123,1.451,124,1.284,125,3.306,126,2.897,128,1.197,129,3.306,167,3.033,170,2.828,179,2.413,182,3.892,183,3.306,184,3.306,186,3.721,187,5.704,188,3.721,189,3.033,190,3.721,191,3.721,192,1.451,193,3.306,194,1.877,195,1.52,196,6.42,197,6.42,198,3.033,199,3.721,200,3.721,201,3.721,202,3.721,203,5.435,204,3.721,205,7.842,206,3.721,207,3.721,208,3.721,209,3.721,210,3.721]],["t/12",[1,3.398,4,1.659,10,2.406,14,4.886,15,2.845,23,4.158,24,3.548,28,2.937,33,2.829,34,2.346,43,4.86,63,2.605,68,4.86,69,4.458,70,3.398,77,1.593,79,4.158,92,3.918,106,3.398,113,3.037,168,3.146,174,3.398,211,5.471,212,4.458,213,5.471,214,4.458,215,4.86,216,3.918,217,3.918,218,3.918,219,5.389,220,2.605,221,2.535,222,4.458,223,3.719,224,4.158,225,4.458]],["t/14",[33,2.981,34,3.204,35,4.845,117,2.555]],["t/16",[22,0.664,25,5.256,35,3.743,44,4.704,46,1.29,47,2.619,49,3.817,62,5.128,84,3.445,85,2.458,95,5.128,149,4.387,165,2.475,174,3.585,226,7.339,227,5.772,228,4.074,229,5.772,230,3.924,231,5.772,232,5.128,233,3.743,234,1.586,235,5.772,236,5.772,237,5.128,238,5.772,239,5.772,240,5.128,241,5.772]],["t/18",[1,4.681,4,1.659,14,5.11,27,5.35,28,4.417,41,4.907,77,1.753,220,2.868,221,2.79,242,6.021,243,4.576,244,5.35,245,4.093,246,4.907,247,6.142,248,6.021,249,6.021,250,7.537,251,7.537,252,6.021]],["t/20",[4,1.342,14,4.331,117,2.385,253,6.974,254,4.995,255,6.716,256,8.773,257,1.844,258,6.196]],["t/23",[1,2,4,0.62,8,3.66,22,0.869,28,1.729,45,2.203,46,0.72,77,0.938,84,1.922,85,1.079,86,1.625,87,1.256,90,2.158,108,2.861,112,0.791,160,1.415,165,1.381,179,3.165,180,4.006,194,1.625,195,1.994,218,2.307,220,1.534,221,1.492,232,2.861,259,4.997,260,2.625,261,3.221,262,5.893,263,3.221,264,2.625,265,1.922,266,4.336,267,3.031,268,2.189,269,3.221,270,3.977,271,7.956,272,4.881,273,8.146,274,2.506,275,1.381,276,2.319,277,2.398,278,1.421,279,3.221,280,4.336,281,0.939,282,2.861]],["t/25",[7,1.819,22,0.853,45,2.844,51,2.564,85,1.934,121,0.865,160,1.242,165,2.475,267,4.558,277,2.105,283,5.772,284,4.387,285,3.743,286,5.772,287,5.128,288,2.333,289,5.128,290,4.387,291,5.772]],["t/27",[4,0.608,7,1.835,8,2.988,21,0.961,22,0.84,39,2.263,41,2.575,46,1.301,54,1.833,77,0.92,85,1.951,86,2.427,99,2.323,100,5.785,106,1.963,112,0.512,115,1.248,121,1.05,123,1.232,124,0.747,127,2.208,128,1.016,132,2.263,136,3.92,138,2.575,161,1.696,173,1.963,174,1.963,182,2.263,195,1.291,281,1.121,282,2.807,288,1.322,292,7.027,293,4.81,294,5.61,295,3.777,296,7.381,297,3.16,298,1.886,299,6.557,300,3.16,301,6.511,302,2.807,303,1.696,304,2.263,305,3.476,306,5.825,307,2.774,308,4.81,309,2.871,310,4.274,311,3.16,312,3.16,313,3.16,314,3.16,315,2.402,316,3.16,317,1.104,318,3.16,319,3.16,320,2.807,321,2.807,322,3.16,323,3.16,324,3.16]],["t/29",[4,1.046,10,2.823,21,1.5,22,0.832,51,1.3,54,2.447,85,1.247,106,2.311,112,1.041,117,1.273,121,1.244,123,1.451,124,1.284,126,2.897,127,2.023,128,1.747,146,2.665,157,3.033,159,3.033,161,3.447,182,2.665,217,2.665,230,2.529,280,3.306,284,2.828,295,4.869,317,1.898,325,3.306,326,3.721,327,3.721,328,3.721,329,3.721,330,3.721,331,2.413,332,3.721,333,3.721,334,3.721,335,3.721,336,2.14,337,3.721,338,5.435,339,3.033,340,3.721,341,4.828,342,4.13,343,2.828,344,1.998,345,3.306,346,5.435,347,2.119,348,3.721,349,3.125,350,2.311,351,2.14,352,3.721,353,1.387,354,1.357,355,3.306,356,3.721,357,2.828,358,3.306,359,3.721,360,1.357]],["t/32",[22,0.626,57,6.144,77,2.014,265,4.128,349,3.976,361,6.916,362,3.205,363,4.953,364,6.916,365,5.256,366,6.916,367,6.916,368,6.916]],["t/34",[21,1.714,161,4.011,369,7.471]],["t/36",[1,3.059,22,0.676,28,3.551,39,3.527,45,1.65,51,2.311,77,1.434,132,3.527,135,5.877,136,6.087,145,3.193,224,3.743,265,2.939,267,3.059,276,2.171,281,0.948,288,2.052,305,2.939,365,3.743,370,4.924,371,4.013,372,4.013,373,4.013,374,5.39,375,4.013,376,4.013,377,4.924,378,7.094,379,4.924,380,3.527,381,4.924,382,3.347,383,6.615,384,3.347,385,4.375,386,4.924,387,6.615,388,4.924,389,7.469,390,4.375,391,4.924,392,4.924,393,4.924,394,4.924]],["t/38",[8,3.023,17,2.798,21,0.972,28,2.613,34,2.087,42,3.966,46,1.775,47,2.836,49,2.531,77,1.911,96,5.348,106,3.023,147,3.486,178,4.324,288,1.337,365,4.988,378,7.371,380,5.692,385,5.83,395,6.563,396,5.348,397,4.867,398,4.867,399,4.324,400,4.867,401,4.867,402,4.867,403,4.867,404,4.867,405,4.867,406,4.867,407,4.867,408,5.942,409,3.308,410,4.867,411,3.486,412,4.867,413,4.867,414,4.867,415,4.867,416,4.867]],["t/40",[18,5.829,24,4.638,106,4.442,113,3.97,222,5.829,417,7.152,418,4.269,419,7.152,420,5.829]],["t/42",[4,1.239,8,2.938,10,2.83,21,0.945,22,0.866,46,1.057,113,2.625,115,1.227,121,1.097,137,3.854,180,4.375,265,2.823,281,0.91,284,4.892,288,1.3,345,5.718,353,2.399,421,4.202,422,4.73,423,4.73,424,3.854,425,4.73,426,3.387,427,6.437,428,5.718,429,4.202,430,4.73,431,4.73,432,4.73,433,4.73,434,4.73,435,4.61,436,4.202,437,4.73,438,4.73,439,1.16,440,4.202]],["t/44",[4,1.268,10,2.153,22,0.847,52,4.349,54,2.511,121,1.246,122,2,123,1.909,127,2.076,128,2.118,194,2.47,275,2.825,276,1.607,278,1.425,288,1.345,336,2.815,344,2.628,424,5.369,441,3.788,442,4.895,443,1.857,444,4.349,445,3.041,446,4.895,447,4.349,448,4.349,449,5.853,450,4.349,451,5.853,452,4.895,453,4.895,454,4.895,455,4.349]],["t/46",[4,1.067,22,0.842,114,6.451,117,1.896,121,1.254,124,1.31,128,1.782,165,2.377,260,4.517,276,1.819,290,4.213,317,1.936,331,3.595,443,1.238,456,6.353,457,4.925,458,4.925,459,5.543,460,2.883,461,4.925,462,2.569,463,4.925,464,4.925,465,4.925,466,3.595,467,4.925,468,4.925,469,5.543]],["t/48",[112,1.16,194,3.608,470,6.817,471,7.152,472,5.829,473,7.152,474,7.152,475,5.436]],["t/50",[230,4.946,245,4.946,258,6.465,476,7.277,477,5.53,478,7.277,479,7.277]],["t/52",[14,3.572,22,0.364,33,2.678,34,2.466,39,5.244,63,1.917,64,3.576,77,1.675,85,1.927,117,1.377,161,2.161,174,2.5,193,3.576,243,4.372,254,5.244,255,5.469,289,3.576,292,5.962,294,3.059,299,3.576,362,1.865,460,2.991,470,6.564,472,3.28,475,3.059,477,4.372,480,5.752,481,5.752,482,4.025,483,4.025,484,5.752,485,5.752,486,4.025,487,4.025,488,5.752,489,4.025,490,5.752,491,4.025,492,4.025,493,4.025,494,5.11,495,3.576,496,4.025,497,3.576,498,2.61,499,4.025,500,4.025,501,3.576,502,4.025,503,4.025,504,3.576,505,2.61,506,3.576,507,5.752,508,4.025,509,4.025,510,4.025,511,4.025,512,4.025,513,4.025,514,3.059,515,4.025,516,4.025,517,4.025,518,4.025,519,3.576,520,3.576,521,3.28]],["t/54",[112,0.962,219,4.512,228,3.295,243,4.512,294,4.512,362,2.751,472,4.837,504,5.274,514,4.512,522,2.314,523,5.854,524,5.936,525,5.274,526,7.262,527,5.274,528,5.274,529,6.087,530,5.936,531,5.936,532,6.636,533,5.274,534,5.936,535,5.936,536,5.274,537,5.936,538,3.687,539,5.936]],["t/56",[22,0.805,49,2.922,85,1.882,117,1.921,173,5.221,234,1.544,307,2.675,390,4.991,498,5.867,523,5.166,529,4.578,540,6.389,541,5.618,542,4.578,543,5.618,544,5.618,545,5.618,546,4.991,547,5.878,548,3.489,549,4.578,550,5.618]],["t/58",[22,0.77,63,2.768,85,1.947,117,1.988,194,2.932,223,3.951,234,1.597,274,1.726,275,2.493,315,4.418,360,2.12,523,4.163,529,4.737,547,6.597,548,3.61,549,4.737,551,7.563,552,5.164,553,5.813,554,5.813,555,7.371,556,5.813,557,3.023,558,5.813,559,5.813,560,4.399]],["t/60",[17,3.487,22,0.747,26,3.767,112,0.983,117,2.074,234,1.666,310,5.388,514,5.754,523,5.422,526,6.726,532,6.726,536,5.388,548,3.767,549,4.943,561,7.904,562,6.065,563,6.065,564,4.122,565,2.737,566,4.943]],["t/62",[22,0.805,117,2.254,234,1.811,567,8.564,568,6.59,569,6.59,570,6.59,571,6.59,572,6.59,573,6.59,574,6.59,575,6.59,576,6.59,577,6.59]],["t/64",[35,4.815,50,7.06,70,4.076,72,3.486,115,1.263,127,1.534,214,6.476,228,2.702,254,6.122,255,6.966,278,1.417,362,2.255,380,3.486,421,5.83,470,3.966,514,3.699,523,3.486,578,6.563,579,6.563,580,4.867,581,4.867,582,7.947,583,7.947,584,4.324,585,4.867,586,4.867,587,6.563,588,6.563,589,6.563,590,4.324,591,4.867,592,4.324,593,4.867]],["t/67",[0,3.515,22,0.871,51,2.848,58,3.769,103,3.515,112,0.75,147,3.313,160,0.996,168,2.659,174,2.873,189,3.769,216,3.313,220,3.019,221,3.352,270,3.769,274,2.31,276,2.08,277,2.312,305,2.76,409,3.144,435,3.313,594,4.109,595,4.625,596,4.625,597,4.625,598,5.838,599,4.625,600,4.109,601,2.483,602,3.515,603,4.109,604,4.625]],["t/69",[1,2.512,21,1.344,22,0.856,42,3.296,49,2.103,51,2.016,88,3.296,112,1.19,127,1.819,145,2.623,160,1.242,161,2.171,174,3.585,194,2.04,220,2.749,221,3.739,230,2.749,233,2.623,267,3.585,268,2.749,275,2.475,276,1.327,315,3.074,355,3.593,409,3.923,505,3.743,598,2.897,603,5.128,605,3.593,606,3.593,607,3.074,608,5.772,609,4.045,610,4.045,611,5.484,612,5.772,613,4.045,614,4.045,615,4.045,616,4.045,617,3.593,618,4.045,619,4.045,620,4.045,621,4.045,622,2.103,623,4.045,624,2.414,625,4.045,626,4.045,627,4.045,628,3.593,629,2.512]],["t/71",[22,0.606,85,2.243,112,1.086,171,5.948,212,5.456,221,3.727,408,4.795,409,4.551,598,6.175,607,5.088,630,6.695,631,6.695,632,6.695,633,6.695]],["t/73",[4,1.074,8,3.466,22,0.828,45,1.869,49,2.902,51,1.949,54,2.127,87,2.8,107,4.958,115,1.448,165,2.393,237,6.38,247,4.547,274,1.657,278,1.625,399,4.958,521,4.547,557,2.902,634,5.58,635,4.958,636,6.38,637,5.58,638,5.58,639,4.241,640,5.58,641,4.958,642,5.58,643,7.182,644,7.182,645,5.58]],["t/75",[22,0.859,33,1.722,82,1.446,160,1.501,194,4.011,195,1.763,220,3.32,221,2.8,233,2.798,274,2.361,276,2.704,277,2.542,278,1.256,281,0.83,288,2.264,439,1.71,466,4.898,600,3.834,601,3.743,636,6.194,646,3.517,647,4.924,648,7.553,649,7.553]],["t/77",[34,3.148,63,3.496,117,2.511,220,3.496,221,3.401,505,4.76]],["t/79",[34,2.99,112,1.131,117,2.385,303,3.744,548,4.331,650,4.995,651,6.196,652,6.196,653,6.196,654,6.196,655,6.196,656,6.196]],["t/81",[4,1.754,7,1.832,21,1.473,28,3.957,77,2.357,112,1.195,341,7.191,527,5.164,635,5.164,657,5.813,658,5.813,659,5.813,660,5.813,661,5.813,662,7.371,663,5.813,664,5.813,665,7.371,666,5.813,667,5.813,668,5.813]],["t/83",[4,1.283,7,1.57,22,0.839,25,3.569,112,0.808,121,1.126,126,2.248,132,3.569,147,3.569,274,1.98,288,1.369,309,2.974,317,1.741,347,2.599,349,2.865,426,3.569,448,5.923,557,2.591,566,4.061,669,3.787,670,3.569,671,4.983,672,4.983,673,4.983,674,4.983,675,4.983,676,4.427,677,7.514,678,3.231,679,4.061,680,4.983,681,4.983,682,4.983,683,4.983,684,4.983,685,4.983,686,4.983,687,4.983,688,4.983,689,4.983,690,4.983]],["t/86",[33,3.048,66,2.02,112,0.998,182,4.408,185,5.467,245,4.183,254,5.472,295,3.991,325,5.467,396,5.015,477,5.807,691,5.807,692,5.467,693,6.788,694,6.154,695,6.154,696,6.154,697,6.226,698,6.154,699,4.677,700,4.408,701,6.154]],["t/88",[4,1.672,22,0.691,33,3.315,85,2.559,86,3.854,165,2.639,234,2.455,639,4.677,702,5.467,703,5.467,704,7.64,705,7.64,706,2.726]],["t/90",[4,1.258,22,0.836,33,2.609,121,1.189,122,2.671,124,1.545,127,2.499,128,2.102,234,1.797,303,3.51,707,3.884,708,4.24]],["t/92",[4,1.258,22,0.836,33,2.609,121,1.189,122,2.671,124,1.545,127,2.499,128,2.102,234,1.797,303,3.51,709,4,710,6.538]],["t/94",[22,0.872,35,3.29,117,1.735,127,2.547,170,3.856,228,3.746,230,3.448,233,3.29,274,2.399,275,2.894,276,2.761,281,0.976,428,4.507,444,4.507,711,3.634,712,4.587,713,4.191,714,3.623,715,2.126,716,3.634]],["t/97",[4,0.991,22,0.881,33,2.055,46,0.773,85,1.159,112,0.561,117,1.183,121,0.772,122,2.104,123,2.008,124,1.217,127,2.738,128,1.656,165,2.209,234,1.415,267,2.149,274,2.024,275,2.923,276,2.726,277,2.244,285,3.34,307,2.453,462,3.158,560,2.065,678,3.34,712,4.633,714,2.765,717,3.46,718,5.151,719,3.46,720,3.46,721,2.065]],["t/99",[4,0.937,7,1.534,22,0.874,33,1.942,85,1.63,112,0.789,121,0.984,122,1.988,123,1.898,124,1.15,127,2.694,128,1.565,165,2.814,179,3.156,234,1.337,274,1.949,275,3.184,276,2.154,277,2.393,281,0.937,462,2.255,560,2.905,712,3.308,714,2.613,721,2.905,722,4.256,723,4.867]],["t/101",[4,0.843,7,1.381,22,0.846,33,1.749,34,2.619,51,2.134,66,1.438,85,1.468,86,2.211,112,0.99,121,0.916,122,1.79,123,1.709,124,1.036,127,1.925,128,1.409,142,4.642,172,4.642,173,2.722,234,1.204,268,4.152,274,1.814,275,1.88,382,4.152,384,2.979,498,2.842,540,3.331,557,4.159,560,2.616,602,4.642,700,3.139,712,2.979,715,2.215,724,3.572,725,3.894,726,4.642,727,2.992,728,4.375,729,1.978,730,2.147,731,2.031,732,3.894,733,4.383,734,1.834,735,3.139,736,3.139,737,3.139]],["t/103",[4,0.802,7,1.313,22,0.858,33,1.662,51,2.059,66,1.934,86,2.973,112,0.675,121,0.883,122,1.701,123,1.624,124,0.984,127,1.857,128,1.339,165,2.527,173,2.587,179,2.701,234,1.144,274,1.75,275,2.933,331,2.701,382,4.006,384,4.006,498,2.701,540,3.166,557,4.587,560,2.486,700,2.983,712,2.831,715,2.343,722,3.822,724,3.394,728,4.221,729,1.88,730,2.041,731,1.93,732,3.701,734,1.743,735,4.221,736,4.221,737,4.221,738,3.701,739,4.165]],["t/105",[4,0.689,7,1.128,22,0.849,33,1.428,34,1.534,46,1.18,51,2.192,63,1.704,66,1.174,86,3.166,103,4.77,112,0.856,117,1.224,121,0.792,122,1.462,123,1.395,124,0.845,127,1.664,128,1.151,151,2.916,165,1.534,168,3.036,173,2.222,179,2.32,212,2.916,234,0.983,274,1.568,275,2.691,277,1.305,281,1.016,304,2.563,362,2.447,382,2.432,384,2.432,408,2.563,498,2.32,540,2.72,548,2.222,557,3.843,560,2.136,678,2.32,700,2.563,712,2.432,714,1.921,715,2.437,716,4.495,722,2.32,724,2.916,728,2.563,729,1.615,730,1.753,734,1.497,735,2.563,736,2.563,737,2.563,738,3.179,740,6.302,741,3.578,742,3.578,743,3.578,744,2.136,745,6.276,746,2.916,747,2.916,748,3.578,749,3.578,750,5.28]],["t/107",[34,3.016,112,1.14,142,5.345,172,5.345,268,4.78,602,5.345,715,2.216,725,6.248,726,5.345,727,3.445,751,6.248]],["t/109",[12,4.345,17,3.065,33,2.782,35,5.038,112,1.449,117,1.824,339,4.345,362,2.471,418,5.235,697,4.345,714,4.709,715,2.197,716,4.994,722,4.521,752,5.332,753,5.332,754,5.332,755,4.869,756,6.902,757,5.332]],["t/111",[1,4.125,4,1.278,15,3.454,23,5.048,28,3.566,168,3.819,218,4.757,220,3.163,221,3.078,223,4.515,224,5.048,225,5.413,245,4.515,426,4.757,758,6.642,759,6.642,760,5.901,761,6.642]],["t/113",[5,4.907,33,3.283,63,2.868,70,3.74,117,2.06,240,5.35,243,4.576,247,4.907,254,5.892,477,6.553,497,5.35,501,5.35,505,3.905,691,6.253,692,5.35,693,5.35,697,6.142,762,6.021,763,6.021,764,6.021,765,6.021]],["t/115",[4,0.85,21,1.227,22,0.867,28,2.372,34,1.213,46,0.987,51,2.665,54,1.684,77,1.286,90,2.015,99,1.576,112,0.716,113,1.57,117,1.511,121,0.999,123,1.722,124,1.044,127,1.392,128,1.975,145,1.835,160,1.322,192,2.394,220,1.347,221,1.311,223,1.923,234,0.777,257,1.168,259,3.357,276,1.45,277,2.574,281,1.182,288,1.687,305,3.665,307,2.925,317,0.988,347,1.722,351,2.54,360,1.611,362,2.047,439,1.083,443,1.214,460,2.297,522,1.722,564,1.923,565,2.771,650,2.026,706,1.01,711,3.892,734,2.57,766,2.305,767,2.701,768,3.297,769,1.722,770,1.762,771,1.191]],["t/117",[0,3.23,4,1.013,7,0.849,21,1.194,22,0.843,33,1.695,34,1.822,35,1.746,46,0.949,51,2.528,54,1.026,77,1.237,82,0.902,90,1.394,99,1.516,103,3.23,113,1.495,117,1.453,121,0.896,123,1.657,124,1.004,127,1.339,128,1.922,145,1.746,160,0.915,168,2.443,180,2.888,192,2.33,195,1.1,198,2.194,216,3.043,220,3.905,221,3.476,223,1.83,233,1.746,234,1.168,257,0.712,259,2.047,265,2.536,276,1.394,277,1.55,278,1.74,281,1.252,288,1.642,290,3.23,307,2.024,317,0.941,347,1.657,351,2.443,360,1.55,362,1.969,439,0.66,443,0.949,460,2.21,522,1.657,548,1.672,564,1.83,598,1.928,601,2.281,605,2.392,607,2.047,622,1.4,646,2.194,647,3.463,650,1.928,691,2.047,706,0.961,734,1.778,766,2.194,767,1.869,769,1.657,770,1.695,771,0.726,772,2.693,773,2.693,774,2.392,775,2.693,776,2.693,777,2.693,778,4.249,779,4.249,780,4.249,781,2.392,782,2.392]],["t/119",[4,0.879,10,3.568,21,1.739,22,0.826,31,1.938,32,3.185,34,0.935,45,1.772,46,0.487,54,0.831,58,1.777,60,1.938,63,2.518,77,0.635,86,1.809,87,0.85,112,0.74,113,2.534,117,1.226,121,0.876,122,1.465,124,0.847,127,1.13,128,1.153,145,2.961,160,0.983,161,1.171,165,2.268,167,4.31,170,1.658,174,1.355,180,1.482,223,1.482,233,1.414,234,0.599,257,0.577,265,2.725,268,1.482,276,1.177,281,0.879,288,1.453,307,1.708,317,0.762,331,3.429,344,1.925,347,1.398,351,2.062,354,0.795,362,2.451,408,4.5,409,1.482,436,1.938,439,0.535,440,4.698,443,1.02,451,3.185,460,1.865,495,1.938,557,2.75,564,1.482,606,1.938,622,1.865,650,1.562,703,1.938,706,0.778,727,2.863,746,2.922,766,1.777,771,0.588,783,1.938,784,1.938,785,2.181,786,2.181,787,2.181,788,2.181,789,2.181,790,2.181,791,2.181,792,1.577,793,3.586,794,5.288,795,3.586,796,3.586,797,5.288,798,3.586,799,5.288,800,3.586,801,3.586,802,3.586,803,3.586,804,3.586,805,2.181,806,2.181,807,2.181,808,1.134,809,1.938,810,2.181,811,2.181,812,3.185,813,3.185,814,2.181,815,2.181,816,2.181,817,1.414,818,1.99,819,1.99,820,3.586,821,1.482,822,2.181,823,2.181]],["t/121",[4,1.12,10,2.796,16,2.282,21,1.474,22,0.853,24,1.666,28,1.379,30,2.093,33,2.537,54,2.219,87,1.002,90,1.343,112,1.031,113,4.626,121,1.14,122,1.672,123,1.99,124,1.375,127,1.834,128,2.285,218,1.84,234,1.599,265,1.533,274,1.215,276,1.675,277,1.493,281,0.982,287,2.282,288,1.599,307,1.949,317,0.897,344,1.379,347,2.27,351,3.347,358,3.637,360,0.937,362,2.946,363,1.84,408,1.84,420,3.336,426,1.84,429,2.282,441,2.934,443,1.513,445,1.596,460,3.027,462,1.19,601,2.198,624,1.533,628,2.282,679,2.093,706,1.461,744,1.533,767,1.8,824,2.569,825,2.569,826,2.569,827,3.637,828,4.094,829,4.094,830,2.569,831,6.358,832,2.569,833,2.569,834,2.569,835,2.569,836,2.569,837,2.569,838,2.569]],["t/123",[4,0.634,7,1.565,14,2.048,21,0.992,22,0.822,30,2.686,34,1.414,51,2.493,54,1.256,55,4.413,70,2.048,78,2.686,86,1.663,87,2.33,90,1.082,113,2.757,117,1.128,121,0.896,122,2.029,123,1.937,124,1.174,127,1.565,128,1.597,145,3.221,160,1.069,165,2.853,214,4.048,230,2.241,246,2.686,257,0.872,265,1.967,267,4.836,274,1.775,275,2.563,277,2.18,281,1.444,284,5.702,285,4.314,288,1.828,294,2.506,298,1.967,315,5.057,347,1.937,351,2.856,439,0.809,443,1.11,460,2.583,533,2.929,590,2.929,611,2.686,702,2.929,734,2.078,746,4.048,769,1.937,771,0.889,783,4.413,792,1.45,839,3.297,840,3.297,841,4.967,842,2.929,843,3.297,844,3.297,845,3.297,846,3.297]],["t/125",[34,3.067,63,3.406,66,2.347,117,2.446,220,3.406,221,3.314,281,1.61,711,5.122]],["t/127",[4,1.406,21,1.46,22,0.857,47,2.046,121,1.206,123,2.849,160,1.573,234,1.575,257,1.516,317,2.003,439,1.792,443,1.281,706,2.046,771,1.545,847,5.733,848,1.736,849,1.736,850,6.492,851,3.718]],["t/129",[4,1.283,21,1.332,22,0.862,121,1.126,123,2.599,124,1.575,126,3.009,127,2.101,128,2.144,160,1.435,234,1.369,257,1.318,317,1.741,347,2.599,349,3.833,350,4.141,351,3.833,439,1.635,443,1.113,460,3.467,706,1.778,707,2.441,771,1.343,848,1.509,849,1.509,851,3.231,852,3.569]],["t/131",[4,1.347,21,1.399,22,0.866,121,1.168,123,2.73,160,1.507,234,1.474,257,1.419,317,1.874,357,5.321,439,1.717,443,1.199,706,1.915,707,2.629,771,1.446,848,1.625,849,1.625,851,3.479,852,3.843,853,4.373,854,4.373,855,5.706,856,4.373]],["t/133",[4,1.224,15,3.309,21,1.271,22,0.869,63,2.215,89,3.532,121,1.087,123,2.481,160,1.37,234,1.278,257,1.23,317,1.625,439,1.561,443,1.039,706,1.66,707,2.278,771,1.254,848,1.408,849,1.408,851,3.016,852,3.331,857,3.79,858,5.552,859,6.356,860,5.186,861,3.798,862,3.798,863,5.186,864,3.79]],["t/135",[4,1.248,15,3.933,21,1.296,22,0.854,45,1.269,46,0.846,47,1.352,54,1.444,112,0.893,115,0.983,121,1.067,123,2.147,127,1.735,146,2.713,160,1.628,217,2.713,234,1.041,257,1.456,317,1.323,347,2.147,435,3.943,439,1.746,443,1.449,706,1.352,707,1.856,771,1.484,848,1.147,849,1.147,851,2.457,852,2.713,858,2.575,861,2.261,862,3.286,865,4.839,866,4.839,867,3.087,868,3.087,869,3.087,870,4.487,871,4.487,872,4.487,873,3.087,874,4.487,875,4.487,876,5.506,877,4.487,878,3.087,879,1.125]],["t/137",[15,3.224,17,3.565,22,0.754,26,3.851,70,3.851,72,4.44,94,4.44,105,4.712,363,4.44,699,4.712,730,3.76,861,4.581,862,3.7,865,5.217,866,5.217,880,5.052,881,5.052,882,5.052,883,5.052,884,5.052,885,5.052]],["t/139",[4,1.036,21,1.075,22,0.868,46,1.567,54,1.4,115,1.653,121,1.209,123,2.098,127,1.157,160,1.78,161,2.89,270,5.192,274,1.09,276,2.091,288,2.145,295,3.49,317,1.88,342,5.332,343,4.091,349,3.095,350,3.343,439,1.832,462,2.952,466,3.49,707,1.799,851,3.49,852,2.63,879,1.892,886,2.993,887,2.993,888,4.386,889,2.993,890,2.993,891,2.993,892,4.386]],["t/142",[707,3.727,792,3.345]],["t/144",[22,0.647,33,2.212,37,2.501,63,2.64,82,1.857,117,1.896,168,3.187,180,3.768,195,2.264,198,4.517,216,3.97,220,4.123,221,3.876,233,3.595,265,3.308,277,2.021,278,2.082,281,1.376,548,3.443,598,3.97,607,4.213,646,4.517,647,5.827,691,4.213,729,2.501,730,2.716,731,2.569,781,4.925,782,4.925,893,5.543,894,5.543,895,4.925]],["t/146",[34,3.067,63,3.406,66,2.347,117,2.446,220,3.406,221,3.314,281,1.61,711,5.122]],["t/148",[4,1.278,10,2.92,21,1.497,22,0.856,46,1.107,47,1.768,112,0.803,115,1.285,121,1.2,160,1.612,234,1.361,257,1.31,281,1.278,317,1.73,439,1.629,443,1.107,622,2.576,706,1.768,727,2.427,771,1.335,817,3.212,818,2.75,819,2.75,821,3.367,848,1.5,849,1.5,879,1.471,896,4.953,897,6.641,898,4.307,899,2.75,900,3.548]],["t/150",[4,1.158,10,2.647,21,1.389,22,0.863,46,0.959,112,0.696,115,1.114,121,1.13,124,1.422,126,2.717,127,1.897,128,1.936,160,1.497,234,1.18,257,1.136,281,1.158,317,1.5,344,3.232,347,2.347,349,3.461,350,3.739,351,3.461,439,1.477,443,0.959,460,3.131,622,2.233,706,1.532,709,2.166,727,2.103,771,1.157,817,2.784,818,2.383,819,2.383,821,2.918,848,1.3,849,1.3,879,1.275,898,3.997,899,2.383,900,3.075,901,3.075]],["t/152",[4,1.211,10,2.767,21,1.437,22,0.866,46,1.022,112,0.742,115,1.187,121,1.161,160,1.548,234,1.257,257,1.21,281,1.211,317,1.598,344,3.378,357,4.782,439,1.543,443,1.022,622,2.379,706,1.632,709,2.308,727,2.241,771,1.233,817,2.966,818,2.539,819,2.539,821,3.109,848,1.385,849,1.385,853,3.728,854,3.728,855,5.127,856,3.728,879,1.358,898,4.135,899,2.539,900,3.276,901,3.276]],["t/154",[4,1.111,10,2.538,15,3.002,21,1.344,22,0.868,46,0.904,63,1.926,89,3.204,112,0.656,115,1.05,121,1.1,160,1.448,234,1.111,257,1.07,281,1.111,317,1.413,344,3.099,439,1.416,443,0.904,622,2.103,706,1.443,709,2.04,727,1.981,771,1.09,817,2.623,818,2.245,819,2.245,821,2.749,848,1.225,849,1.225,857,3.296,858,5.274,859,5.98,860,4.703,861,3.445,862,3.445,863,4.703,864,3.296,879,1.201,898,3.869,899,2.245,900,2.897,901,2.897]],["t/156",[4,1.167,10,2.224,15,3.75,21,1.345,22,0.856,45,1.131,46,1.13,47,1.205,54,1.287,112,0.983,115,1.312,121,1.081,127,1.594,146,2.418,160,1.629,217,2.418,234,0.928,257,1.338,281,0.973,317,1.179,344,2.715,347,1.972,435,3.622,439,1.652,443,1.355,455,4.493,622,1.756,706,1.205,709,1.703,727,1.654,771,1.363,817,2.189,818,1.874,819,1.874,821,2.295,848,1.022,849,1.022,858,2.295,861,2.015,862,3.018,865,4.577,866,4.577,867,2.751,868,2.751,869,2.751,870,4.121,871,4.121,872,4.121,873,2.751,874,4.121,875,4.121,877,4.121,878,2.751,879,1.502,898,3.486,899,1.874,900,2.418,901,2.418]],["t/158",[15,3.224,17,3.565,22,0.754,26,3.851,70,3.851,72,4.44,94,4.44,105,4.712,363,4.44,699,4.712,730,3.76,861,4.581,862,3.7,865,5.217,866,5.217,880,5.052,881,5.052,882,5.052,883,5.052,884,5.052,885,5.052]],["t/160",[4,1.077,10,2.462,22,0.863,46,1.608,54,1.477,115,1.705,121,1.229,127,1.221,160,1.712,161,3.005,274,1.151,276,2.156,288,2.185,295,3.63,317,1.955,342,5.469,343,4.255,344,3.005,349,3.219,350,3.477,439,1.612,462,3.045,466,3.63,709,1.955,879,1.951,886,3.159,887,3.159,888,4.562,889,3.159,890,3.159,891,3.159,892,4.562,901,2.776,902,6.571]],["t/163",[85,2.417,707,4.118,709,4.241,755,4.004,792,3.697]],["t/166",[7,1.812,21,0.804,22,0.847,37,1.816,45,2.778,46,0.899,47,1.436,51,2.344,66,1.321,77,1.172,82,1.348,87,1.569,99,1.436,112,0.653,115,1.045,121,1.161,160,1.445,192,2.242,195,1.644,257,1.065,278,1.675,281,0.775,288,1.844,353,1.5,354,1.468,360,1.468,439,1.411,443,0.899,522,1.569,565,2.595,715,1.268,729,2.595,734,2.407,767,2.529,768,3.088,769,2.242,770,1.606,771,1.085,848,1.219,849,1.219,879,1.195,903,3.059,904,3.088,905,2.665,906,4.119,907,4.372,908,2.818,909,1.684,910,1.606,911,1.569]],["t/168",[7,2.253,21,0.764,22,0.861,37,1.725,45,2.652,46,0.854,51,2.277,66,1.255,77,1.113,82,1.281,85,1.857,87,1.491,99,1.364,112,0.62,115,0.992,121,1.138,160,1.403,192,2.161,195,1.562,257,1.011,278,1.614,281,0.736,288,1.791,353,1.425,354,1.394,360,1.394,439,1.359,443,0.854,522,1.491,565,2.501,601,2.976,715,1.205,729,2.501,734,2.319,767,2.437,768,2.976,769,2.161,770,1.525,771,1.031,848,1.158,849,1.158,879,1.135,904,2.976,905,2.568,906,3.97,908,2.715,909,1.6,910,1.525,911,1.491,912,2.375,913,1.6]],["t/170",[7,2.239,21,0.753,22,0.863,37,1.702,45,2.724,46,0.843,51,2.26,66,1.238,77,1.098,82,1.263,85,1.838,87,1.47,99,1.346,112,0.611,115,0.979,121,1.132,160,1.392,192,2.14,195,1.541,257,0.998,278,1.598,281,0.726,288,1.778,353,1.406,354,1.375,360,1.375,439,1.346,443,0.843,522,1.47,565,2.476,601,2.946,715,1.188,729,2.476,734,2.296,767,2.413,768,2.946,769,2.14,770,1.505,771,1.017,848,1.142,849,1.142,879,1.12,904,2.946,905,2.543,906,3.93,908,2.688,909,1.578,910,1.505,911,1.47,912,2.343,913,1.578]],["t/173",[715,2.397,792,3.345]],["t/175",[792,3.345,913,3.183]],["t/178",[7,1.838,21,0.82,22,0.859,45,2.614,46,1.303,47,1.465,66,1.347,77,1.195,82,1.375,90,1.914,99,1.465,112,0.665,115,1.065,121,1.17,124,1.378,160,1.46,192,2.274,257,1.085,276,2.561,277,2.127,278,1.195,281,0.79,288,1.864,353,1.53,354,1.497,360,1.497,439,1.43,443,0.917,462,2.702,522,1.6,565,2.632,767,2.564,768,3.131,769,2.274,770,1.637,771,1.106,848,1.243,849,1.243,879,1.219,903,3.119,907,4.432,909,1.717,910,1.637,911,1.6]],["t/180",[7,2.273,21,0.778,22,0.868,45,2.416,46,1.255,66,1.278,77,1.134,82,1.305,85,1.882,90,1.843,99,1.39,112,0.631,115,1.011,121,1.146,124,1.327,160,1.418,192,2.19,257,1.03,276,2.509,277,2.048,278,1.134,281,0.749,288,1.81,353,1.452,354,1.42,360,1.42,439,1.378,443,0.87,462,2.603,522,1.518,565,2.535,601,3.015,767,2.47,768,3.015,769,2.19,770,1.554,771,1.05,848,1.179,849,1.179,879,1.156,909,1.629,910,1.554,911,1.518,912,2.419,913,1.629]],["t/182",[7,2.258,21,0.767,22,0.869,45,2.547,46,1.242,66,1.26,77,1.118,82,1.287,85,1.863,90,1.825,99,1.371,112,0.623,115,0.997,121,1.14,124,1.314,160,1.407,192,2.168,257,1.016,276,2.495,277,2.028,278,1.118,281,0.739,288,1.796,353,1.432,354,1.401,360,1.401,439,1.364,443,0.858,462,2.577,522,1.497,565,2.509,601,2.985,767,2.445,768,2.985,769,2.168,770,1.532,771,1.035,848,1.163,849,1.163,879,1.14,909,1.607,910,1.532,911,1.497,912,2.385,913,1.607]],["t/185",[792,3.345,913,3.183]],["t/187",[8,4.192,22,0.61,34,2.894,63,3.214,66,2.215,117,2.764,220,3.214,221,3.127,259,5.129,277,2.461,505,4.376,729,3.045,730,3.306,731,3.127,895,5.996]],["t/189",[82,2.481,117,2.533,278,2.156,624,4.42,914,5.628]],["t/191",[7,1.925,21,0.876,22,0.834,37,1.978,46,0.979,47,1.564,51,2.456,66,1.438,77,1.276,82,1.468,87,1.709,90,2.004,99,1.564,112,0.711,115,1.138,121,1.054,124,1.443,160,1.513,192,2.381,195,1.79,257,1.159,274,1.814,278,1.276,281,1.175,288,1.932,353,1.634,354,1.598,360,1.598,411,3.139,439,1.498,443,0.979,522,1.709,565,2.756,715,1.381,731,2.83,734,2.556,769,2.381,770,1.749,771,1.182,808,3.177,848,1.327,849,1.327,879,1.301,908,2.992,909,1.834,910,1.749,911,1.709,915,4.642]],["t/193",[7,2.333,21,0.824,22,0.855,37,1.861,46,0.921,51,2.376,66,1.353,77,1.201,82,1.382,85,1.96,87,1.608,90,1.92,99,1.472,112,0.669,115,1.07,121,1.02,124,1.383,160,1.464,192,2.282,195,1.685,257,1.091,274,1.738,278,1.201,281,1.126,288,1.869,305,3.493,353,1.537,354,1.504,360,1.504,439,1.435,443,0.921,522,1.608,565,2.641,715,1.3,731,2.712,734,2.449,769,2.282,770,1.646,771,1.112,808,3.044,848,1.249,849,1.249,879,1.225,908,2.867,909,1.726,910,1.646,911,1.608,913,1.726,916,2.954]],["t/196",[715,2.397,792,3.345]],["t/198",[792,3.345,913,3.183]],["t/200",[4,0.724,7,0.729,10,1.655,21,0.462,22,0.858,39,3.924,54,0.882,90,0.759,93,1.885,112,0.61,113,1.284,114,3.876,115,0.6,121,1.1,123,1.467,124,1.124,126,1.698,127,1.726,128,1.21,137,1.885,138,3.066,147,2.695,160,1.179,161,2.941,165,2.039,173,1.437,257,0.612,260,3.876,274,0.687,276,1.561,288,1.034,290,2.86,304,2.695,320,2.055,331,1.5,336,2.734,344,1.242,349,2.734,350,2.954,380,1.657,424,3.066,439,0.567,441,2.163,443,1.586,447,4.225,449,2.055,450,3.343,456,3.343,457,2.055,458,2.055,460,1.203,461,3.343,462,1.744,463,2.055,464,5.356,465,2.055,466,1.5,467,2.055,468,3.343,475,1.758,505,1.5,506,2.055,520,2.055,521,1.885,525,2.055,528,2.055,546,2.055,641,4.867,670,2.695,679,1.885,771,0.624,827,2.055,917,3.763,918,2.313,919,2.313,920,3.763,921,3.763,922,2.055,923,2.313,924,3.763,925,2.313,926,2.313,927,4.756,928,4.225,929,5.479,930,6.028,931,5.479,932,3.763,933,2.313,934,2.313,935,2.313,936,3.763,937,2.313,938,4.756,939,2.313,940,3.763,941,2.313,942,2.313,943,2.313,944,2.313,945,2.313,946,2.313,947,2.313,948,2.313,949,2.313,950,2.313,951,2.313]],["t/202",[82,2.481,117,2.533,278,2.156,624,4.42,914,5.628]],["t/204",[7,1.925,21,0.876,22,0.85,46,1.365,47,1.564,66,1.438,77,1.276,82,1.468,90,2.004,99,1.564,112,0.711,115,1.138,121,1.054,124,1.443,160,1.513,192,2.381,257,1.159,276,2.624,277,2.227,281,1.175,288,1.932,353,1.634,354,1.598,360,1.598,411,3.139,439,1.498,443,0.979,462,2.83,522,1.709,565,2.756,767,2.686,768,3.279,769,2.381,770,1.749,771,1.182,848,1.327,849,1.327,879,1.301,909,1.834,910,1.749,911,1.709,915,4.642]],["t/206",[7,2.333,21,0.824,22,0.863,46,1.307,66,1.353,77,1.201,82,1.382,85,1.96,90,1.92,99,1.472,112,0.669,115,1.07,121,1.02,124,1.383,160,1.464,192,2.282,257,1.091,276,2.565,277,2.134,281,1.126,288,1.869,305,3.493,353,1.537,354,1.504,360,1.504,439,1.435,443,0.921,462,2.712,522,1.608,565,2.641,767,2.573,768,3.142,769,2.282,770,1.646,771,1.112,848,1.249,849,1.249,879,1.225,909,1.726,910,1.646,911,1.608,913,1.726,916,2.954]],["t/208",[7,2.307,21,0.804,22,0.861,46,1.285,66,1.321,77,1.172,82,1.348,85,1.927,90,1.887,99,1.436,112,0.653,115,1.045,121,1.006,124,1.359,160,1.445,165,2.466,192,2.242,257,1.065,267,2.5,276,2.542,277,2.097,281,1.107,285,3.73,288,1.844,305,3.433,353,1.5,354,1.468,360,1.468,439,1.411,443,0.899,462,2.665,522,1.569,565,2.595,767,2.529,768,3.088,769,2.242,770,1.606,771,1.085,848,1.219,849,1.219,879,1.195,909,1.684,910,1.606,911,1.569,913,1.684,916,2.883]],["t/211",[792,3.345,913,3.183]],["t/213",[82,2.481,117,2.533,278,2.156,624,4.42,914,5.628]],["t/215",[7,1.911,21,0.867,22,0.821,37,1.957,45,2.031,46,0.969,47,1.548,51,2.442,66,1.424,77,1.263,82,1.453,87,1.691,99,1.548,112,0.703,115,1.126,121,1.048,160,1.505,192,2.364,195,1.772,257,1.147,278,1.263,281,1.167,288,1.921,353,1.617,354,1.582,360,1.582,411,3.107,439,1.487,443,0.969,522,1.691,565,2.736,715,1.367,729,2.736,734,2.537,767,2.667,768,3.256,769,2.364,770,1.731,771,1.169,848,1.314,849,1.314,879,1.288,904,3.256,905,2.81,906,4.343,908,2.971,909,1.815,910,1.731,911,1.691,915,4.609]],["t/217",[7,2.323,21,0.816,22,0.849,37,1.843,45,1.947,46,0.912,51,2.363,66,1.34,77,1.189,82,1.368,85,1.947,87,1.592,99,1.457,112,0.662,115,1.06,121,1.014,160,1.456,192,2.266,195,1.668,257,1.08,278,1.189,281,1.118,288,1.859,305,3.468,353,1.522,354,1.489,360,1.489,439,1.425,443,0.912,522,1.592,565,2.622,715,1.287,729,2.622,734,2.432,767,2.556,768,3.12,769,2.266,770,1.629,771,1.101,848,1.237,849,1.237,879,1.213,904,3.12,905,2.693,906,4.162,908,2.847,909,1.709,910,1.629,911,1.592,913,1.709,916,2.925]],["t/220",[715,2.397,792,3.345]],["t/222",[792,3.345,913,3.183]],["t/225",[7,1.851,21,0.828,22,0.844,37,1.87,45,2.624,46,0.926,47,1.479,51,2.383,66,1.36,77,1.207,82,1.388,87,1.616,90,1.927,99,1.479,112,0.672,115,1.076,121,1.174,124,1.387,160,1.468,192,2.29,195,1.693,257,1.096,274,1.744,278,1.71,281,0.798,288,1.874,353,1.545,354,1.511,360,1.511,439,1.44,443,0.926,522,1.616,565,2.65,715,1.306,731,2.721,734,2.457,769,2.29,770,1.654,771,1.117,808,3.054,848,1.255,849,1.255,879,1.231,903,3.15,907,4.463,908,2.877,909,1.734,910,1.654,911,1.616]],["t/227",[7,2.282,21,0.785,22,0.859,37,1.774,45,2.426,46,0.878,51,2.313,66,1.29,77,1.144,82,1.317,85,1.894,87,1.533,90,1.856,99,1.403,112,0.637,115,1.02,121,1.15,124,1.336,160,1.426,192,2.205,195,1.606,257,1.04,274,1.679,278,1.646,281,0.756,288,1.82,353,1.465,354,1.433,360,1.433,439,1.387,443,0.878,522,1.533,565,2.552,601,3.036,715,1.239,731,2.62,734,2.366,769,2.205,770,1.568,771,1.06,808,2.941,848,1.19,849,1.19,879,1.167,908,2.77,909,1.645,910,1.568,911,1.533,912,2.441,913,1.645]],["t/229",[7,2.268,21,0.774,22,0.862,37,1.749,45,2.557,46,0.866,51,2.295,66,1.272,77,1.129,82,1.298,85,1.875,87,1.511,90,1.837,99,1.383,112,0.628,115,1.006,121,1.144,124,1.323,160,1.414,192,2.183,195,1.583,257,1.025,274,1.662,278,1.63,281,0.746,288,1.805,353,1.445,354,1.413,360,1.413,439,1.373,443,0.866,522,1.511,565,2.526,601,3.005,715,1.221,731,2.594,734,2.342,769,2.183,770,1.547,771,1.045,808,2.911,848,1.174,849,1.174,879,1.151,908,2.742,909,1.622,910,1.547,911,1.511,912,2.408,913,1.622]],["t/232",[715,2.397,792,3.345]],["t/234",[792,3.345,913,3.183]],["t/236",[10,2.068,21,0.94,22,0.873,112,0.763,121,0.705,124,1.111,126,2.122,127,1.482,128,1.512,160,1.012,276,2.104,281,0.905,288,2.153,347,1.834,351,2.704,460,3.335,462,2.971,466,3.05,557,3.335,594,5.697,669,3.575,670,3.368,727,2.304,812,4.178,813,4.178,928,4.178,952,4.703,953,6.412,954,4.703,955,4.703,956,6.412,957,4.178,958,4.703,959,4.703,960,4.703]],["t/238",[34,3.067,63,3.406,66,2.347,117,2.446,220,3.406,221,3.314,281,1.61,711,5.122]],["t/240",[4,1.22,21,1.445,22,0.86,46,1.033,47,2.262,54,1.763,112,0.75,115,1.2,121,1.166,160,1.557,234,1.271,257,1.223,281,1.22,317,1.616,439,1.555,443,1.033,622,2.405,706,1.65,727,2.266,771,1.247,818,2.567,819,2.567,848,1.401,849,1.401,850,5.632,879,1.373,898,4.159,899,2.567,961,3.144,962,4.625,963,3.937,964,3.937,965,4.309,966,4.309,967,4.54]],["t/242",[4,1.111,21,1.344,22,0.868,46,0.904,47,1.443,54,1.542,84,2.414,112,0.656,115,1.05,121,1.1,124,1.364,126,2.604,127,1.819,128,1.856,160,1.448,234,1.111,257,1.07,281,1.111,317,1.413,347,2.25,349,3.318,350,3.585,351,3.318,439,1.416,443,0.904,460,3.002,622,2.103,706,1.443,709,2.04,727,1.981,771,1.09,818,2.245,819,2.245,848,1.225,849,1.225,879,1.201,898,3.869,899,2.245,961,2.749,963,3.585,964,3.585,965,3.923,966,3.923,967,4.134]],["t/244",[4,1.158,21,1.389,22,0.871,46,0.959,47,1.532,54,1.636,84,2.562,112,0.696,115,1.114,121,1.13,160,1.497,234,1.18,257,1.136,281,1.158,317,1.5,357,4.576,439,1.477,443,0.959,622,2.233,706,1.532,709,2.166,727,2.103,771,1.157,818,2.383,819,2.383,848,1.3,849,1.3,853,3.499,854,3.499,855,4.906,856,3.499,879,1.275,898,3.997,899,2.383,961,2.918,963,3.739,964,3.739,965,4.092,966,4.092,967,4.312]],["t/246",[4,1.067,15,2.882,21,1.302,22,0.871,46,0.854,47,1.364,54,1.457,63,1.821,84,2.282,89,3.077,112,0.62,115,0.992,121,1.072,160,1.403,234,1.05,257,1.011,281,1.067,317,1.335,439,1.359,443,0.854,622,1.988,706,1.364,709,1.929,727,1.873,771,1.031,818,2.122,819,2.122,848,1.158,849,1.158,857,3.116,858,5.159,859,5.827,860,4.517,861,3.308,862,3.308,863,4.517,864,3.116,879,1.135,898,3.749,899,2.122,961,2.599,963,3.442,964,3.442,965,3.767,966,3.767,967,3.97]],["t/248",[4,1.134,15,3.675,21,1.314,22,0.861,45,1.079,46,1.09,47,1.742,54,1.86,84,1.922,112,0.955,115,1.267,121,1.059,127,1.538,146,2.307,160,1.6,217,2.307,234,0.885,257,1.291,281,0.939,317,1.125,347,1.903,435,3.495,439,1.613,443,1.317,622,1.675,706,1.149,709,1.625,727,1.578,771,1.316,818,1.788,819,1.788,848,0.975,849,0.975,858,2.189,861,1.922,862,2.913,865,4.469,866,4.469,867,2.625,868,2.625,869,2.625,870,3.977,871,3.977,872,3.977,873,2.625,874,3.977,875,3.977,877,3.977,878,2.625,879,1.449,898,3.388,899,1.788,961,2.189,963,3.031,964,3.031,965,3.317,966,3.317,967,3.495,968,4.881]],["t/250",[15,3.224,17,3.565,22,0.754,26,3.851,70,3.851,72,4.44,94,4.44,105,4.712,363,4.44,699,4.712,730,3.76,861,4.581,862,3.7,865,5.217,866,5.217,880,5.052,881,5.052,882,5.052,883,5.052,884,5.052,885,5.052]],["t/252",[4,1.01,22,0.868,46,1.542,47,1.266,54,1.352,84,2.117,115,1.621,121,1.254,127,1.118,160,1.659,161,2.817,274,1.053,276,2.049,288,2.118,295,3.403,317,1.833,342,5.244,343,3.988,349,3.017,350,3.259,439,1.532,462,2.894,466,3.403,709,1.79,879,1.854,886,2.891,887,2.891,888,4.276,889,2.891,890,2.891,891,2.891,892,4.276,961,2.412,963,3.259,964,3.259,965,3.567,966,3.567,969,5.247,970,5.247,971,6.244]],["t/255",[85,2.417,707,4.118,709,4.241,755,4.004,792,3.697]],["t/257",[4,0.603,17,3.334,21,0.627,22,0.869,25,3.426,44,2.556,54,1.195,77,0.913,81,2.556,90,1.029,92,2.246,112,0.508,121,1.103,122,1.281,126,1.415,127,0.988,157,2.556,159,3.898,245,2.132,275,1.345,281,0.603,288,1.314,307,2.761,317,1.096,331,2.034,371,2.556,372,2.556,373,2.556,374,2.556,375,3.898,376,4.725,505,2.034,542,3.898,547,3.898,557,2.487,617,2.786,669,2.384,670,2.246,676,2.786,972,2.786,973,3.136,974,3.136,975,3.136,976,4.783,977,3.136,978,4.783,979,3.136,980,3.136,981,3.136,982,3.136,983,3.136,984,3.136,985,3.136,986,3.136,987,2.786,988,3.136,989,2.786,990,3.136,991,3.136,992,2.786,993,4.783,994,2.786,995,3.136,996,2.786,997,2.786,998,2.786,999,2.786,1000,3.136,1001,3.136,1002,3.136,1003,2.786,1004,2.786,1005,4.249,1006,2.786,1007,3.136,1008,3.136,1009,3.136,1010,4.783,1011,3.136,1012,4.783,1013,3.136,1014,3.136,1015,3.136,1016,3.136,1017,3.136,1018,3.136,1019,3.136,1020,3.136,1021,3.136,1022,3.136]],["t/259",[4,0.692,7,1.669,22,0.858,51,2.198,54,1.37,77,1.046,87,1.401,112,0.583,121,1.161,122,1.468,123,1.401,124,0.849,126,1.622,128,1.155,132,3.794,160,1.354,189,2.928,245,2.443,267,3.29,275,1.541,276,2.065,277,1.31,281,0.692,288,1.455,307,2.523,317,1.255,331,2.33,347,1.401,371,2.928,372,2.928,373,2.928,374,2.928,375,2.928,376,2.928,460,1.869,542,2.928,611,5.658,669,2.731,670,2.574,678,2.33,729,1.622,730,1.76,731,1.665,922,3.193,972,3.193,987,3.193,989,3.193,992,3.193,994,3.193,996,3.193,997,3.193,998,3.193,999,3.193,1003,3.193,1004,3.193,1005,3.193,1006,3.193,1023,3.594,1024,3.594,1025,3.594,1026,3.594,1027,3.594,1028,3.594,1029,3.594,1030,3.594,1031,3.594,1032,3.594,1033,3.594,1034,5.297,1035,3.594,1036,3.594,1037,3.594,1038,3.594,1039,3.594,1040,3.594,1041,3.594,1042,3.594]],["t/261",[4,0.434,22,0.875,45,0.756,46,0.824,47,0.806,49,1.174,66,0.741,87,0.88,89,2.596,90,2.212,99,2.124,112,0.366,121,0.957,122,0.922,124,1.768,126,1.019,128,0.726,149,1.716,162,1.84,168,1.298,194,1.139,228,1.253,234,0.62,274,0.67,275,0.968,276,1.21,277,1.345,278,0.657,281,0.434,298,1.347,303,1.212,304,1.617,307,2.571,309,4.022,336,2.121,347,0.88,362,2.502,382,1.534,384,1.534,418,2.201,441,1.298,443,1.571,445,1.402,538,1.402,557,1.174,629,1.402,639,1.716,678,1.464,706,0.806,707,1.807,708,1.464,713,1.402,714,2.51,715,1.473,716,1.617,721,2.201,728,1.617,729,2.436,731,1.709,735,1.617,736,1.617,737,1.617,740,4.4,744,3.222,747,1.84,755,2.047,904,1.212,905,1.709,1043,1.464,1044,1.464,1045,1.464,1046,2.005,1047,2.005,1048,2.005,1049,2.507,1050,1.464,1051,2.507,1052,1.464,1053,1.464,1054,1.464,1055,1.464,1056,1.534,1057,2.392,1058,2.392,1059,2.392,1060,1.464,1061,1.464,1062,4.797,1063,1.464,1064,3.277,1065,2.005,1066,2.005,1067,2.005,1068,2.005,1069,2.005,1070,2.005,1071,2.005,1072,1.464,1073,1.464,1074,1.716,1075,1.464,1076,1.716,1077,2.005]],["t/263",[82,2.481,117,2.533,278,2.156,624,4.42,914,5.628]],["t/265",[7,1.87,21,0.84,22,0.838,37,1.898,46,0.94,47,1.501,51,2.402,66,1.381,77,1.225,82,1.409,86,2.994,87,1.64,90,1.948,99,1.501,112,0.682,115,1.092,121,1.031,124,1.402,160,1.48,192,2.314,195,1.719,257,1.113,274,1.762,278,1.225,281,1.142,288,1.889,353,1.568,354,1.534,360,1.534,411,3.013,439,1.456,443,0.94,522,1.64,715,1.326,730,2.908,734,2.483,767,2.61,769,2.314,770,1.679,771,1.134,808,3.087,848,1.274,849,1.274,879,1.249,905,2.75,908,2.908,909,1.76,910,1.679,911,1.64,915,4.511,1078,4.251]],["t/267",[7,2.292,21,0.793,22,0.856,37,1.791,46,0.886,51,2.326,66,1.302,77,1.155,82,1.329,85,1.907,86,2.872,87,1.547,90,1.868,99,1.416,112,0.643,115,1.03,121,0.998,124,1.345,160,1.433,192,2.22,195,1.621,257,1.049,274,1.69,278,1.155,281,1.096,288,1.829,305,3.398,353,1.479,354,1.447,360,1.447,439,1.396,443,0.886,522,1.547,715,1.25,730,2.789,734,2.382,767,2.503,769,2.22,770,1.583,771,1.07,808,2.961,848,1.202,849,1.202,879,1.178,905,2.638,908,2.789,909,1.66,910,1.583,911,1.547,913,1.66,916,2.842,1078,4.077]],["t/270",[715,2.397,792,3.345]],["t/272",[792,3.345,913,3.183]],["t/274",[4,0.571,22,0.875,45,0.995,47,1.06,49,1.544,89,1.648,90,2.463,112,0.481,121,0.945,122,1.213,124,1.92,126,1.34,128,0.955,194,1.498,228,1.648,234,0.816,274,0.882,275,1.273,277,1.083,278,0.865,281,0.571,298,1.772,303,1.594,307,3.002,309,4.48,336,1.707,347,1.158,362,2.125,418,2.737,441,1.707,443,1.609,445,1.844,538,1.844,629,1.844,706,1.06,707,2.247,708,1.926,713,1.844,714,3.009,715,0.936,721,2.737,729,2.844,731,1.376,744,2.737,755,2.546,904,1.594,905,2.125,1043,1.926,1044,1.926,1045,1.926,1049,2.018,1050,1.926,1051,2.018,1052,1.926,1053,1.926,1054,1.926,1055,1.926,1056,2.018,1057,2.974,1058,2.974,1059,2.974,1060,1.926,1061,1.926,1063,1.926,1072,1.926,1073,1.926,1074,2.257,1075,1.926,1076,2.257,1079,2.257]],["t/277",[7,1.788,21,0.789,22,0.851,37,1.782,45,2.575,46,0.882,47,1.409,51,2.32,66,1.296,77,1.15,82,1.323,86,2.862,87,1.54,90,1.862,99,1.409,112,0.64,115,1.025,121,1.153,124,1.341,160,1.429,192,2.212,195,1.613,257,1.045,274,1.685,278,1.652,281,0.76,288,1.825,353,1.472,354,1.44,360,1.44,439,1.392,443,0.882,522,1.54,715,1.244,730,2.78,734,2.374,767,2.495,769,2.212,770,1.576,771,1.065,808,2.951,848,1.196,849,1.196,879,1.173,903,3.002,905,2.629,907,4.312,908,2.78,909,1.652,910,1.576,911,1.54,1078,4.064]],["t/279",[7,2.234,21,0.75,22,0.863,37,1.694,45,2.375,46,0.839,51,2.254,66,1.232,77,1.093,82,1.258,85,1.832,86,2.759,87,1.464,90,1.795,99,1.34,112,0.609,115,0.974,121,1.13,124,1.292,160,1.389,192,2.133,195,1.534,257,0.993,274,1.624,278,1.593,281,0.722,288,1.773,353,1.399,354,1.369,360,1.369,439,1.342,443,0.839,522,1.464,601,2.937,715,1.183,730,2.68,734,2.289,767,2.405,769,2.133,770,1.498,771,1.012,808,2.845,848,1.137,849,1.137,879,1.115,905,2.535,908,2.68,909,1.571,910,1.498,911,1.464,912,2.332,913,1.571,1078,3.918]],["t/281",[7,2.22,21,0.74,22,0.865,37,1.672,45,2.511,46,0.828,51,2.237,66,1.216,77,1.079,82,1.241,85,1.815,86,2.733,87,1.444,90,1.778,99,1.322,112,0.601,115,0.961,121,1.124,124,1.28,160,1.378,192,2.112,195,1.513,257,0.98,274,1.608,278,1.577,281,0.713,288,1.759,353,1.381,354,1.351,360,1.351,439,1.329,443,0.828,522,1.444,601,2.908,715,1.167,730,2.654,734,2.267,767,2.382,769,2.112,770,1.478,771,0.999,808,2.817,848,1.122,849,1.122,879,1.1,905,2.51,908,2.654,909,1.55,910,1.478,911,1.444,912,2.301,913,1.55,1078,3.88]],["t/284",[715,2.397,792,3.345]],["t/286",[792,3.345,913,3.183]],["t/288",[4,0.532,22,0.875,45,0.926,47,0.986,49,1.437,89,1.534,90,2.484,112,0.448,121,0.909,122,1.129,124,1.882,126,1.247,128,0.889,165,1.185,194,1.394,228,1.534,234,0.759,274,0.821,275,2.6,276,0.907,277,1.582,278,0.805,281,0.532,298,1.649,303,1.484,307,2.888,309,4.363,336,1.589,347,1.078,362,2.01,418,2.589,441,1.589,443,1.562,445,1.717,538,1.717,629,2.694,706,0.986,707,2.125,708,1.792,713,1.717,714,2.874,715,0.871,721,2.589,722,1.792,729,2.736,731,1.281,744,2.589,755,2.408,808,2.256,904,1.484,905,2.01,1043,1.792,1044,1.792,1045,1.792,1049,1.879,1050,1.792,1051,1.879,1052,1.792,1053,1.792,1054,1.792,1055,1.792,1056,1.879,1057,2.813,1058,2.813,1059,2.813,1060,1.792,1061,1.792,1063,2.813,1072,1.792,1073,1.792,1074,2.101,1075,1.792,1076,2.101,1079,2.101,1080,2.455,1081,2.455,1082,2.455]],["t/290",[4,0.556,22,0.876,45,0.967,47,1.03,49,1.502,89,1.603,90,2.438,112,0.468,121,0.931,122,1.18,124,1.906,126,1.303,128,0.928,165,1.238,194,1.457,228,1.603,234,0.793,274,1.333,275,1.238,277,1.053,278,0.841,281,0.556,285,1.872,298,1.723,303,1.55,307,2.957,309,4.435,336,1.66,347,1.126,362,2.08,418,2.679,441,1.66,443,1.591,445,1.794,538,1.794,557,1.502,629,1.794,706,1.03,707,2.199,708,1.872,713,1.794,714,2.956,715,0.91,721,2.679,729,2.802,731,1.338,744,2.679,755,2.491,904,1.55,905,2.08,1043,1.872,1044,1.872,1045,1.872,1049,1.963,1050,1.872,1051,1.963,1052,1.872,1053,1.872,1054,1.872,1055,1.872,1056,1.963,1057,2.91,1058,2.91,1059,2.91,1060,1.872,1061,1.872,1063,1.872,1072,1.872,1073,1.872,1075,1.872,1079,2.195,1083,2.353,1084,2.353]],["t/292",[1,3.998,4,1.631,5,3.854,10,2.08,14,4.545,15,2.46,17,3.701,22,0.428,23,3.595,24,4.174,26,2.938,33,3.134,40,4.202,77,1.377,79,3.595,92,3.387,106,2.938,113,2.625,134,4.202,155,4.202,168,2.719,187,4.202,215,4.202,216,3.387,218,4.61,219,4.892,220,2.252,221,2.192,222,3.854,224,3.595,225,3.854,244,4.202,264,3.854,295,3.067,339,3.854,498,3.067,624,2.823,726,3.595,755,2.625,760,4.202,1085,4.73,1086,4.73,1087,4.73,1088,4.73,1089,6.437,1090,4.73,1091,4.73,1092,4.73,1093,4.73,1094,4.73,1095,4.73,1096,4.73,1097,4.73]],["t/294",[33,2.629,34,2.826,78,5.37,112,1.068,195,2.692,303,3.538,548,4.093,561,5.854,564,4.479,650,4.72,651,5.854,652,5.854,653,5.854,654,5.854,655,5.854,656,5.854,842,5.854,1098,5.37,1099,6.59]],["t/296",[4,1.003,18,2.867,25,2.52,26,3.859,73,3.126,85,1.179,112,1.114,124,1.232,127,1.109,142,2.674,151,2.867,172,2.674,173,3.239,219,6.696,234,0.967,246,2.867,264,2.867,266,4.633,268,2.391,302,4.633,321,4.633,360,1.283,380,2.52,409,2.391,426,2.52,475,2.674,494,4.633,498,4.456,519,3.126,551,6.105,552,3.126,560,2.1,584,3.126,602,3.963,726,2.674,727,1.723,751,3.126,784,3.126,809,3.126,899,1.953,1100,3.518,1101,3.518,1102,5.215,1103,7.955,1104,3.518,1105,5.215,1106,3.518,1107,3.518,1108,3.518,1109,3.518,1110,3.518,1111,3.518,1112,3.518,1113,3.518,1114,5.215,1115,6.214,1116,3.518,1117,3.518,1118,3.518,1119,3.518,1120,3.518,1121,3.518,1122,3.518,1123,3.518,1124,3.518,1125,3.518,1126,5.215,1127,3.518,1128,3.518,1129,3.518,1130,3.518,1131,5.215,1132,3.518,1133,3.518,1134,3.518,1135,3.518,1136,3.518,1137,5.215,1138,3.518,1139,3.518,1140,3.518,1141,3.518,1142,3.518,1143,3.518,1144,3.518]],["t/298",[4,0.425,22,0.876,45,0.74,46,0.81,47,0.789,49,1.149,66,0.725,87,0.862,89,2.558,90,2.191,99,2.1,112,0.358,121,0.948,122,0.903,124,1.755,126,0.997,128,0.711,149,1.679,162,1.801,165,0.948,168,1.27,194,1.115,228,1.227,234,0.607,274,1.076,275,0.948,276,1.189,277,1.322,278,0.643,281,0.425,285,1.433,298,1.319,303,1.186,304,1.583,307,2.539,309,3.985,336,2.084,347,0.862,362,2.47,382,1.502,384,1.502,418,2.163,441,1.27,443,1.557,445,1.372,538,1.372,557,1.885,629,1.372,639,1.679,678,1.433,706,0.789,707,1.775,708,1.433,713,1.372,714,2.474,715,1.452,716,1.583,721,2.163,728,1.583,729,2.405,731,1.679,735,1.583,736,1.583,737,1.583,740,4.344,744,3.181,747,1.801,755,2.012,904,1.186,905,1.679,1043,1.433,1044,1.433,1045,1.433,1046,1.963,1047,1.963,1048,1.963,1049,2.463,1050,1.433,1051,2.463,1052,1.433,1053,1.433,1054,1.433,1055,1.433,1056,1.502,1057,2.35,1058,2.35,1059,2.35,1060,1.433,1061,1.433,1062,4.736,1063,1.433,1064,3.22,1065,1.963,1066,1.963,1067,1.963,1068,1.963,1069,1.963,1070,1.963,1071,1.963,1072,1.433,1073,1.433,1075,1.433,1077,1.963,1083,1.801,1084,1.801]],["t/300",[33,2.65,37,2.997,82,2.225,115,2.077,175,5.048,278,1.934,281,1.278,353,2.476,354,2.422,564,4.515,911,2.59,1145,6.642,1146,6.642,1147,6.642,1148,6.642,1149,6.642,1150,6.642]],["t/302",[4,1.028,8,3.759,10,1.211,21,1.511,22,0.861,46,1.352,115,2.242,121,0.986,123,1.074,124,1.262,127,2.073,128,1.718,160,1.889,175,4.999,274,1.797,276,1.42,278,1.26,281,0.832,317,1.866,344,1.479,347,2.083,353,1.991,354,1.948,365,2.094,396,2.245,462,2.005,560,3.926,624,2.582,851,1.786,879,1.953,910,2.415,911,2.083,957,2.447,963,1.711,964,1.711,1098,2.245,1151,5.844,1152,2.447,1153,2.447,1154,2.755,1155,2.755,1156,6.053,1157,2.755,1158,2.447,1159,2.447,1160,2.755,1161,2.447,1162,2.447,1163,3.843,1164,2.447,1165,2.447]],["t/304",[4,0.996,10,1.154,21,1.432,22,0.863,115,2.146,121,1.025,123,1.024,124,1.223,127,2.025,128,1.665,160,1.78,175,4.884,234,1.422,257,2.075,274,1.75,276,1.367,278,1.213,281,0.801,344,1.409,347,2.018,353,1.93,354,1.888,439,1.022,443,1.436,462,1.93,560,3.835,566,5.237,624,2.486,706,1.847,771,2.115,817,1.702,879,1.908,910,2.564,911,2.018,963,1.631,964,1.631,1098,2.139,1151,5.709,1152,2.332,1153,2.332,1158,2.332,1159,2.332,1161,2.332,1162,2.332,1163,3.7,1164,2.332,1165,2.332,1166,2.625]],["t/306",[774,6.697,1167,7.538,1168,7.538]],["t/308",[4,0.518,22,0.876,45,0.902,47,0.961,49,1.4,89,1.495,90,2.462,112,0.437,121,0.896,122,1.1,124,1.868,126,1.215,128,0.866,165,1.822,194,1.358,228,1.495,234,0.74,274,1.262,275,2.563,276,0.884,277,1.55,278,0.784,281,0.518,285,1.746,298,1.607,303,1.446,307,2.846,309,4.32,336,1.548,347,1.05,362,1.969,418,2.536,441,1.548,443,1.545,445,1.672,538,1.672,557,1.4,629,2.639,706,0.961,707,2.082,708,1.746,713,1.672,714,2.826,715,0.849,721,2.536,722,1.746,729,2.697,731,1.248,744,2.536,755,2.359,808,2.21,904,1.446,905,1.969,1043,1.746,1044,1.746,1045,1.746,1049,1.83,1050,1.746,1051,1.83,1052,1.746,1053,1.746,1054,1.746,1055,1.746,1056,1.83,1057,2.755,1058,2.755,1059,2.755,1060,1.746,1061,1.746,1063,2.755,1072,1.746,1073,1.746,1075,1.746,1079,2.047,1080,2.392,1081,2.392,1082,2.392,1083,2.194,1084,2.194]],["t/310",[4,0.801,10,1.831,12,2.624,21,0.643,22,0.877,45,0.642,46,1.528,47,0.684,49,0.997,82,1.079,89,1.064,90,2.056,121,0.732,122,0.783,124,1.716,126,0.865,128,0.616,161,1.029,165,2.093,179,2.088,194,0.967,228,1.788,234,1.144,274,0.569,275,0.822,277,1.984,298,1.144,303,1.029,307,2.324,309,3.738,336,1.102,347,0.747,354,0.699,362,1.492,418,1.144,420,1.562,441,1.102,443,1.216,538,2,592,1.703,629,1.19,678,3.165,700,3.495,706,1.149,709,2.745,713,1.19,714,1.729,715,0.604,721,1.922,722,2.088,729,2.967,730,2.391,731,0.888,744,1.922,755,1.064,756,2.861,904,1.029,905,1.492,1043,1.243,1044,2.088,1045,2.088,1050,1.243,1052,1.243,1053,1.243,1054,1.243,1055,1.243,1057,2.088,1058,2.088,1059,2.088,1060,1.243,1061,1.243,1063,1.243,1072,1.243,1073,1.243,1074,1.457,1075,1.243,1076,1.457,1169,1.917,1170,1.917,1171,1.917,1172,1.917,1173,1.917,1174,1.917,1175,1.917,1176,1.917,1177,1.917,1178,4.165,1179,3.22,1180,1.917,1181,1.917,1182,4.165,1183,3.22,1184,1.917,1185,1.917,1186,1.917,1187,1.917,1188,1.917,1189,1.917,1190,6.575,1191,3.22,1192,1.917,1193,3.22,1194,3.22,1195,1.917,1196,3.22,1197,1.917,1198,3.22,1199,3.22]]],"invertedIndex":[["",{"_index":22,"t":{"2":{"position":[[216,1]]},"8":{"position":[[837,1],[941,1],[968,2],[980,2],[983,1],[1014,1],[1051,2],[1054,1],[1071,1],[1109,2],[1173,2],[1189,2],[1192,1],[1194,2],[1259,3],[1263,2],[1266,2],[1269,2],[1272,3],[1687,1],[1806,2],[1832,2],[1839,1],[1856,3],[1876,1],[1898,2],[1901,1],[1918,1],[1946,2],[1993,2],[2085,3],[2089,1],[2096,1],[2108,1],[2175,2],[2188,1],[2205,1],[2207,2],[2210,3]]},"10":{"position":[[523,1],[674,1],[676,2],[689,3],[727,2],[740,2],[743,1],[780,1],[836,2],[839,2],[867,2],[880,2],[883,1],[920,1],[976,2],[979,2],[1007,2],[1020,2],[1023,1],[1060,1],[1116,2],[1119,2],[1122,2],[1125,3]]},"16":{"position":[[254,1],[278,1]]},"23":{"position":[[162,1],[462,1],[500,1],[512,1],[525,2],[540,2],[543,1],[545,2],[578,1],[580,1],[582,1],[621,2],[639,1],[641,1],[648,1],[650,1],[652,3],[686,1],[698,1],[705,2],[720,2],[723,1],[725,2],[735,1],[737,1],[739,1],[767,3],[799,1],[811,1],[818,2],[833,2],[836,1],[838,2],[856,1],[865,3],[869,2],[973,1],[975,1],[977,1],[1006,2],[1009,1],[1011,2],[1029,1],[1038,3]]},"25":{"position":[[14,1],[16,1],[68,2],[112,2],[115,1],[117,2],[170,2],[241,2],[244,4],[249,2],[252,3]]},"27":{"position":[[453,2],[562,1],[590,2],[593,2],[619,1],[693,1],[727,1],[776,1],[798,2],[801,2],[816,2],[898,1],[927,1],[965,1],[1052,2],[1055,1],[1057,2],[1096,1],[1149,1],[1238,3],[1242,3],[1246,2],[1249,1],[1285,2],[1288,3],[1379,2]]},"29":{"position":[[10,1],[40,1],[73,1],[111,1],[226,2],[255,3],[592,1],[635,1],[668,1],[759,1],[777,1],[800,1],[834,2],[837,1],[869,1],[871,2],[895,2],[898,3]]},"32":{"position":[[69,1]]},"36":{"position":[[107,2],[255,2],[497,1]]},"42":{"position":[[0,2],[18,2],[33,1],[62,2],[136,2],[191,2],[194,2],[210,2],[271,2],[312,1],[356,2],[483,2],[486,1],[498,1],[563,2],[581,2],[584,1],[617,2],[633,2],[636,1],[656,2],[714,3]]},"44":{"position":[[26,1],[40,1],[80,1],[128,3],[153,1],[182,3],[222,1],[250,1],[264,1],[304,1],[340,3],[344,2],[480,3],[534,1]]},"46":{"position":[[12,1],[42,1],[72,2],[75,1],[85,1],[164,3],[179,1],[287,1],[299,4],[319,3]]},"52":{"position":[[632,1]]},"56":{"position":[[122,1],[132,1],[191,1],[246,2],[249,2],[252,2]]},"58":{"position":[[49,1],[61,1],[123,2],[170,2]]},"60":{"position":[[7,1],[13,1],[68,1]]},"62":{"position":[[7,1],[27,1],[216,2],[385,2]]},"67":{"position":[[60,1],[62,1],[64,1],[66,1],[100,2],[103,1],[105,2],[114,1],[116,1],[129,1],[131,1],[133,2],[157,1],[159,1],[161,1],[163,1],[243,3],[247,2],[287,1],[289,1],[291,1],[293,1],[359,1],[361,1],[363,1],[365,1]]},"69":{"position":[[165,1],[167,1],[169,1],[199,2],[202,1],[204,2],[266,3],[295,2],[395,1],[407,2],[423,2],[489,2],[492,1],[494,2],[498,1],[500,1],[502,1],[513,1],[515,1],[517,3],[521,2],[573,2],[683,3]]},"71":{"position":[[22,1]]},"73":{"position":[[63,1],[81,1],[96,1],[114,1],[155,1],[187,1],[230,1],[250,1]]},"75":{"position":[[105,1],[140,1],[201,1],[211,1],[256,2],[259,1],[333,1],[343,1],[388,2],[391,1],[466,1],[476,1],[528,1],[538,1],[583,2],[586,1],[620,1],[622,2],[625,1],[627,2],[630,1],[632,2]]},"83":{"position":[[35,1],[71,1],[113,1],[157,2],[217,2],[350,2],[355,1],[377,3],[430,2],[433,1],[461,2],[464,2]]},"88":{"position":[[233,1],[266,1]]},"90":{"position":[[14,1],[34,1],[83,1],[85,1],[119,2],[133,1]]},"92":{"position":[[14,1],[28,1],[71,1],[73,1],[107,2],[121,1]]},"94":{"position":[[37,1],[67,2],[70,1],[72,3],[76,1],[85,1],[87,1],[97,1],[99,1],[101,2],[104,3],[131,1],[161,2],[164,1],[166,3],[170,1],[179,1],[181,1],[191,1],[193,1],[195,2],[198,3]]},"97":{"position":[[68,1],[84,1],[112,1],[171,3],[175,2],[223,1],[253,2],[256,1],[277,3],[281,1],[290,1],[292,1],[302,1],[304,1],[306,2],[309,3],[313,2],[390,2],[393,1],[414,3],[418,1],[427,1],[429,1],[454,1],[456,1],[458,2],[461,3],[513,1],[529,1],[557,1],[635,3],[639,2],[688,1],[703,1],[731,2],[734,1],[755,3],[759,1],[768,1],[770,1],[777,1],[779,1],[781,2],[784,1],[786,2],[789,2],[866,2],[869,1],[890,3],[894,1],[903,1],[905,1],[914,1],[916,1],[918,2],[921,3]]},"99":{"position":[[85,1],[101,1],[129,1],[214,3],[228,1],[230,1],[241,1],[263,1],[276,2],[327,2],[330,1],[351,3],[355,1],[364,1],[366,1],[368,1],[378,1],[380,2],[383,1],[385,1],[395,1],[397,1],[399,1],[401,2],[404,3]]},"101":{"position":[[322,1],[340,1],[368,1],[427,3],[441,1],[443,1],[452,1],[457,2],[508,2],[511,1],[534,3],[538,1],[565,1],[618,3],[672,1],[674,2],[677,3]]},"103":{"position":[[173,1],[191,1],[219,1],[304,3],[318,1],[320,1],[329,1],[341,1],[346,2],[400,2],[403,1],[427,3],[431,1],[443,1],[461,1],[514,3],[569,2],[588,1],[641,3],[695,1],[697,1],[699,2],[702,3]]},"105":{"position":[[280,1],[319,1],[347,1],[406,3],[410,3],[430,2],[485,3],[505,2],[565,1],[577,1],[586,3],[590,3],[614,2],[627,1],[720,2],[723,1],[746,3],[750,1],[777,1],[830,3],[884,1],[886,2],[889,3],[1065,3],[1106,2]]},"115":{"position":[[125,2],[179,2],[233,1],[317,3],[321,2],[350,1],[376,1],[410,1],[438,1],[457,1],[463,2],[488,2],[553,2],[616,1],[630,1],[650,1],[652,2],[678,1],[696,1],[730,1],[758,1],[760,1],[772,1],[774,3],[791,2],[816,1],[830,1],[850,1],[852,2],[882,1],[903,2],[957,1],[1035,3],[1039,2],[1090,1],[1118,1],[1137,1],[1176,1],[1200,2],[1265,2],[1328,1],[1330,2],[1333,2],[1381,1],[1409,1],[1411,1],[1423,1],[1425,3],[1467,1],[1491,1],[1493,2]]},"117":{"position":[[415,1],[450,1],[645,1],[647,2],[701,1],[785,3],[789,2],[863,1],[899,1],[927,1],[929,1],[941,1],[943,3],[966,2],[991,2],[1056,2],[1119,1],[1133,1],[1153,1],[1167,1],[1188,2],[1242,1],[1320,3],[1324,2],[1402,1],[1430,1],[1432,1],[1444,1],[1446,3],[1502,1],[1526,2],[1591,2],[1654,1],[1656,2]]},"119":{"position":[[433,2],[519,1],[651,2],[747,2],[881,3],[897,1],[918,2],[1004,1],[1136,2],[1232,2],[1366,3],[1604,1],[1606,2],[1665,1],[1716,2],[1776,1],[1790,1],[1810,1],[1812,2],[1921,1],[1923,2],[1983,3],[2122,2],[2171,1],[2201,2],[2257,3],[2261,4],[2266,2],[2353,2],[2431,1],[2433,2],[2483,3],[2487,4],[2492,2],[2579,3]]},"121":{"position":[[135,1],[137,2],[179,1],[263,3],[267,2],[306,1],[342,1],[370,1],[372,1],[384,1],[386,3],[404,2],[407,1],[528,2],[582,2],[671,2],[742,1],[845,3],[849,2],[888,1],[924,1],[952,1],[954,1],[966,1],[968,3],[986,2],[1163,1],[1165,2],[1195,1],[1267,3],[1271,2],[1340,1],[1358,2],[1412,1],[1451,1],[1582,1],[1603,2],[1639,1],[1717,3],[1779,2],[1782,1],[1803,2],[1835,2]]},"123":{"position":[[424,1],[527,3],[542,1],[639,3],[677,1],[703,1],[781,3],[807,2],[913,2],[937,1],[951,1],[971,1],[985,1],[1044,2],[1079,1],[1103,2],[1209,2],[1233,1],[1235,2]]},"127":{"position":[[103,1],[122,1],[198,2],[201,1],[215,1],[235,1],[249,1],[287,1],[357,2],[398,2],[401,1],[421,3]]},"129":{"position":[[107,1],[126,1],[210,2],[225,2],[238,3],[242,3],[246,1],[260,1],[280,1],[294,1],[332,1],[410,2],[425,2],[438,3],[442,3],[484,2],[487,1],[507,3]]},"131":{"position":[[107,1],[126,1],[159,2],[162,3],[243,2],[246,3],[250,1],[264,1],[284,1],[298,1],[336,1],[363,2],[366,3],[448,3],[490,2],[493,1],[513,3]]},"133":{"position":[[125,1],[144,1],[177,2],[180,3],[189,1],[191,2],[242,2],[338,2],[341,3],[345,1],[359,1],[379,1],[393,1],[431,1],[458,2],[461,3],[470,1],[472,2],[523,2],[619,2],[622,3],[664,2],[667,1],[687,3]]},"135":{"position":[[294,1],[313,1],[346,2],[349,3],[420,3],[424,1],[438,1],[458,1],[472,1],[486,1],[589,1],[603,1],[623,1],[637,1],[675,1],[702,2],[705,3],[776,3],[818,2],[821,1],[841,3],[924,1],[970,1],[998,1],[1018,3]]},"137":{"position":[[13,1],[77,1],[129,1]]},"139":{"position":[[66,1],[109,1],[148,1],[183,3],[204,1],[251,3],[293,2],[296,1],[316,3],[332,1],[375,1],[414,1],[468,2],[471,1],[513,3],[517,2],[520,3],[562,2],[565,1],[585,3],[666,2],[669,1],[697,1],[725,1],[754,3],[825,2],[828,1],[856,1],[884,1],[913,3],[984,2],[987,1],[1015,1],[1043,1],[1072,3]]},"144":{"position":[[105,1],[140,1]]},"148":{"position":[[97,1],[110,1],[192,1],[222,2],[225,3],[262,1],[276,1],[296,1],[310,1],[342,1],[453,1],[481,1],[509,1],[511,2],[514,3],[551,3]]},"150":{"position":[[95,1],[108,1],[180,2],[195,2],[208,3],[212,3],[233,1],[263,2],[266,3],[303,1],[317,1],[337,1],[351,1],[383,1],[455,2],[470,2],[483,3],[487,3],[537,1],[565,1],[593,1],[595,2],[598,3],[635,3]]},"152":{"position":[[95,1],[108,1],[129,2],[132,3],[213,2],[216,3],[237,1],[267,2],[270,3],[307,1],[321,1],[341,1],[355,1],[387,1],[408,2],[411,3],[493,3],[543,1],[571,1],[599,1],[601,2],[604,3],[641,3]]},"154":{"position":[[113,1],[126,1],[147,2],[150,3],[159,1],[161,2],[212,2],[308,2],[311,3],[332,1],[362,2],[365,3],[402,1],[416,1],[436,1],[450,1],[482,1],[503,2],[506,3],[515,1],[517,2],[568,2],[664,2],[667,3],[717,1],[745,1],[773,1],[775,2],[778,3],[815,3]]},"156":{"position":[[282,1],[295,1],[316,2],[319,3],[390,3],[411,1],[441,2],[444,3],[481,1],[495,1],[515,1],[529,1],[543,1],[640,1],[654,1],[674,1],[688,1],[720,1],[741,2],[744,3],[815,3],[865,1],[893,1],[921,1],[923,2],[926,3],[963,3],[1046,1],[1086,1],[1114,1],[1134,3]]},"158":{"position":[[13,1],[77,1],[129,1]]},"160":{"position":[[54,1],[97,1],[136,1],[171,3],[186,1],[227,3],[243,1],[286,1],[319,1],[367,2],[370,1],[412,3],[416,2],[419,3],[494,2],[497,1],[525,1],[553,1],[582,3],[647,2],[650,1],[678,1],[706,1],[735,3],[800,2],[803,1],[831,1],[859,1],[888,3]]},"166":{"position":[[63,1],[75,1],[120,3],[124,3],[128,7],[149,1],[200,1],[283,1],[297,1],[317,1],[329,1],[374,3],[378,3],[382,7],[403,1],[485,2],[488,1],[516,1],[544,1],[588,3]]},"168":{"position":[[58,1],[70,1],[115,3],[119,3],[123,7],[144,1],[195,1],[237,2],[240,3],[258,3],[304,1],[318,1],[338,1],[350,1],[395,3],[399,3],[403,7],[424,1],[472,1],[487,2],[490,3],[508,2],[533,2],[536,1],[564,1],[592,1],[636,1],[638,2]]},"170":{"position":[[73,1],[85,1],[130,3],[134,3],[138,7],[159,1],[210,1],[238,1],[245,2],[248,3],[266,2],[276,2],[321,1],[335,1],[355,1],[367,1],[412,3],[416,3],[420,7],[441,1],[489,1],[496,2],[499,3],[517,2],[550,2],[553,1],[581,1],[609,1],[653,1],[655,2]]},"178":{"position":[[63,1],[75,1],[85,1],[113,1],[115,1],[127,1],[129,3],[146,1],[183,1],[264,1],[278,1],[298,1],[310,1],[320,1],[348,1],[350,1],[362,1],[364,3],[381,1],[449,2],[452,1],[480,1],[508,1],[550,3]]},"180":{"position":[[58,1],[70,1],[80,1],[108,1],[110,1],[122,1],[124,3],[141,1],[178,1],[220,2],[223,3],[241,3],[285,1],[299,1],[319,1],[331,1],[341,1],[369,1],[371,1],[383,1],[385,3],[402,1],[438,1],[453,2],[456,3],[474,2],[497,2],[500,1],[528,1],[556,1],[598,1],[600,2]]},"182":{"position":[[73,1],[85,1],[95,1],[123,1],[125,1],[137,1],[139,3],[156,1],[193,1],[221,1],[228,2],[231,3],[249,2],[259,2],[302,1],[316,1],[336,1],[348,1],[358,1],[386,1],[388,1],[400,1],[402,3],[419,1],[455,1],[462,2],[465,3],[483,2],[514,2],[517,1],[545,1],[573,1],[615,1],[617,2]]},"187":{"position":[[45,1]]},"191":{"position":[[46,1],[58,1],[94,1],[136,1],[209,1],[223,1],[243,1],[255,1],[291,1],[354,2],[357,1],[385,1],[413,1],[457,3]]},"193":{"position":[[56,1],[68,1],[104,1],[146,1],[178,2],[181,3],[199,3],[245,1],[259,1],[279,1],[291,1],[327,1],[364,1],[371,2],[374,3],[392,2],[417,2],[420,1],[448,1],[476,1],[520,1],[522,2]]},"200":{"position":[[63,1],[114,1],[124,1],[238,3],[290,1],[348,1],[371,1],[413,1],[425,1],[464,1],[647,1],[759,2],[762,2],[878,2],[889,1],[953,1],[1055,3],[1155,1],[1267,2],[1270,2],[1323,1],[1379,1],[1397,2],[1400,1],[1423,2],[1439,2],[1442,1],[1483,3],[1513,1],[1551,1],[1581,2],[1584,1],[1594,1],[1678,3],[1693,1],[1801,1],[1813,4],[1833,2],[1851,2],[1854,1],[1877,2],[1902,1],[1933,3],[1937,1],[1983,1],[1985,1],[2050,3],[2085,1],[2130,2],[2141,2],[2154,3],[2192,1],[2216,1],[2218,1]]},"204":{"position":[[46,1],[58,1],[68,1],[96,1],[115,1],[143,1],[214,1],[228,1],[248,1],[260,1],[270,1],[298,1],[317,1],[366,2],[369,1],[397,1],[425,1],[467,3]]},"206":{"position":[[56,1],[68,1],[78,1],[106,1],[125,1],[153,1],[185,2],[188,3],[206,3],[250,1],[264,1],[284,1],[296,1],[306,1],[334,1],[353,1],[378,1],[385,2],[388,3],[406,2],[429,2],[432,1],[460,1],[488,1],[530,1],[532,2]]},"208":{"position":[[56,1],[68,1],[78,1],[106,1],[125,1],[153,1],[204,2],[207,3],[225,3],[269,1],[283,1],[303,1],[315,1],[325,1],[353,1],[372,1],[397,1],[423,2],[426,3],[444,2],[467,2],[470,1],[498,1],[526,1],[568,1],[570,2]]},"215":{"position":[[46,1],[58,1],[155,1],[228,1],[242,1],[262,1],[274,1],[392,2],[395,1],[423,1],[451,1],[495,3]]},"217":{"position":[[56,1],[68,1],[165,1],[197,2],[200,3],[218,3],[264,1],[278,1],[298,1],[310,1],[402,1],[409,2],[412,3],[430,2],[455,2],[458,1],[486,1],[514,1],[558,1],[560,2]]},"225":{"position":[[63,1],[75,1],[111,1],[113,1],[138,1],[173,1],[256,1],[270,1],[290,1],[302,1],[338,1],[340,1],[365,1],[431,2],[434,1],[462,1],[490,1],[534,3]]},"227":{"position":[[58,1],[70,1],[106,1],[108,1],[133,1],[168,1],[210,2],[213,3],[231,3],[277,1],[291,1],[311,1],[323,1],[359,1],[361,1],[386,1],[418,1],[433,2],[436,3],[454,2],[479,2],[482,1],[510,1],[538,1],[582,1],[584,2]]},"229":{"position":[[73,1],[85,1],[121,1],[123,1],[148,1],[183,1],[211,1],[218,2],[221,3],[239,2],[249,2],[294,1],[308,1],[328,1],[340,1],[376,1],[378,1],[403,1],[435,1],[442,2],[445,3],[463,2],[496,2],[499,1],[527,1],[555,1],[599,1],[601,2]]},"236":{"position":[[34,1],[136,3],[155,2],[158,1],[171,1],[178,1],[188,1],[221,2],[224,1],[253,2],[313,3],[317,1],[319,2],[344,2],[347,1],[360,1],[367,1],[377,1],[408,2],[411,1],[470,2],[473,1],[516,3],[520,3],[524,1],[526,2]]},"240":{"position":[[105,1],[125,1],[228,2],[259,7],[284,1],[331,2],[334,3],[371,1],[385,1],[405,1],[419,1],[458,1],[561,2],[592,7],[665,1],[693,1],[721,1],[723,2],[726,3],[763,3]]},"242":{"position":[[103,1],[123,1],[180,1],[233,2],[248,2],[261,3],[265,3],[269,2],[300,7],[325,1],[372,2],[375,3],[412,1],[426,1],[446,1],[460,1],[499,1],[556,1],[609,2],[624,2],[637,3],[641,3],[645,2],[676,7],[749,1],[777,1],[805,1],[807,2],[810,3],[847,3]]},"244":{"position":[[103,1],[123,1],[180,1],[182,2],[185,3],[266,2],[269,3],[273,2],[304,7],[329,1],[376,2],[379,3],[416,1],[430,1],[450,1],[464,1],[503,1],[560,1],[562,2],[565,3],[647,3],[651,2],[682,7],[755,1],[783,1],[811,1],[813,2],[816,3],[853,3]]},"246":{"position":[[121,1],[141,1],[198,1],[200,2],[203,3],[212,1],[214,2],[265,2],[361,2],[364,3],[368,2],[399,7],[424,1],[471,2],[474,3],[511,1],[525,1],[545,1],[559,1],[598,1],[655,1],[657,2],[660,3],[669,1],[671,2],[722,2],[818,2],[821,3],[825,2],[856,7],[929,1],[957,1],[985,1],[987,2],[990,3],[1027,3]]},"248":{"position":[[290,1],[310,1],[367,1],[369,2],[372,3],[443,3],[447,2],[478,7],[503,1],[550,2],[553,3],[590,1],[604,1],[624,1],[638,1],[652,1],[756,1],[770,1],[790,1],[804,1],[843,1],[900,1],[902,2],[905,3],[976,3],[980,2],[1011,7],[1084,1],[1112,1],[1140,1],[1142,2],[1145,3],[1182,3],[1265,1],[1312,1],[1340,1],[1360,3]]},"250":{"position":[[13,1],[77,1],[129,1]]},"252":{"position":[[62,1],[105,1],[144,1],[179,3],[201,1],[258,1],[280,3],[284,2],[315,7],[343,1],[385,1],[428,1],[468,1],[525,1],[554,2],[557,1],[599,3],[603,2],[606,3],[610,2],[641,7],[669,1],[779,2],[782,1],[810,1],[838,1],[867,3],[941,2],[944,1],[972,1],[1000,1],[1029,3],[1103,2],[1106,1],[1134,1],[1162,1],[1191,3]]},"257":{"position":[[35,1],[68,1],[124,1],[194,1],[233,1],[277,1],[373,2],[389,1],[401,1],[408,1],[410,2],[464,1],[509,3],[513,1],[515,1],[530,1],[606,2],[609,1],[611,2],[643,2],[693,3],[697,2],[783,2],[856,2],[886,2],[976,3],[1018,2],[1021,1],[1083,3],[1112,2],[1115,1],[1137,1],[1324,2],[1327,3],[1356,4],[1361,3],[1365,10],[1376,7],[1393,4],[1424,7],[1432,4],[1437,8],[1446,6],[1453,11],[1496,3],[1500,3]]},"259":{"position":[[35,1],[74,1],[132,1],[208,2],[211,1],[395,1],[419,3],[461,2],[464,1],[526,3],[543,1],[652,3],[679,2],[682,1],[756,1],[758,2],[807,2],[881,1],[883,2],[939,1],[963,1],[1076,1],[1083,1],[1085,2],[1147,1],[1216,1],[1218,3],[1222,3],[1267,3]]},"261":{"position":[[9,3],[13,1],[60,1],[148,2],[165,1],[239,1],[301,1],[329,1],[355,1],[398,2],[401,1],[413,2],[428,3],[467,1],[469,1],[569,2],[596,2],[613,2],[623,2],[626,2],[629,1],[663,1],[665,1],[673,3],[683,3],[697,3],[711,3],[715,2],[729,1],[769,3],[814,2],[885,3],[919,2],[1051,2],[1054,3],[1079,2],[1099,1],[1178,4],[1183,4],[1188,6],[1230,2],[1282,3],[1334,2],[1409,3],[1451,2],[1531,1],[1567,3],[1571,3],[1589,2],[1616,1],[1716,2],[1719,1],[1721,3],[1823,2],[1856,1],[1887,3],[1942,1],[1949,1],[1972,2],[1975,1],[2006,3],[2027,2],[2073,3],[2077,1],[2079,3],[2101,5],[2107,3],[2118,1],[2120,1],[2134,1],[2153,1],[2161,1],[2175,1],[2194,1],[2202,1],[2215,1],[2234,1],[2242,1],[2255,1],[2274,1],[2282,1],[2296,1],[2315,1],[2334,2]]},"265":{"position":[[46,1],[58,1],[86,1],[104,1],[146,1],[219,1],[233,1],[253,1],[265,1],[293,1],[311,1],[374,2],[377,1],[405,1],[433,1],[477,3]]},"267":{"position":[[56,1],[68,1],[96,1],[114,1],[156,1],[188,2],[191,3],[209,3],[255,1],[269,1],[289,1],[301,1],[329,1],[347,1],[384,1],[391,2],[394,3],[412,2],[437,2],[440,1],[468,1],[496,1],[540,1],[542,2]]},"274":{"position":[[9,3],[13,1],[60,1],[148,2],[165,1],[218,1],[280,1],[308,1],[317,2],[320,2],[323,1],[357,1],[359,1],[367,3],[377,3],[391,3],[405,3],[409,2],[423,1],[463,3],[508,2],[579,3],[613,2],[745,2],[748,3],[773,2],[793,1],[872,4],[877,4],[882,6],[924,2],[976,3],[994,2],[1011,1],[1047,1],[1084,2],[1108,2],[1111,1],[1137,3],[1158,2],[1204,3],[1226,5],[1232,3],[1243,1],[1245,1],[1259,1],[1273,1],[1281,1],[1295,1],[1309,1],[1317,1],[1330,1],[1344,1],[1352,1],[1365,1],[1379,1],[1387,1],[1401,2]]},"277":{"position":[[63,1],[75,1],[103,1],[105,1],[120,1],[122,1],[147,1],[186,1],[269,1],[283,1],[303,1],[315,1],[343,1],[345,1],[360,1],[362,1],[387,1],[457,2],[460,1],[488,1],[516,1],[560,3]]},"279":{"position":[[58,1],[70,1],[98,1],[100,1],[115,1],[117,1],[142,1],[181,1],[223,2],[226,3],[244,3],[290,1],[304,1],[324,1],[336,1],[364,1],[366,1],[381,1],[383,1],[408,1],[444,1],[459,2],[462,3],[480,2],[505,2],[508,1],[536,1],[564,1],[608,1],[610,2]]},"281":{"position":[[73,1],[85,1],[113,1],[115,1],[130,1],[132,1],[157,1],[196,1],[224,1],[231,2],[234,3],[252,2],[262,2],[307,1],[321,1],[341,1],[353,1],[381,1],[383,1],[398,1],[400,1],[425,1],[461,1],[468,2],[471,3],[489,2],[522,2],[525,1],[553,1],[581,1],[625,1],[627,2]]},"288":{"position":[[9,3],[13,1],[60,1],[148,2],[165,1],[218,1],[280,1],[308,1],[317,2],[320,2],[323,1],[357,1],[359,1],[367,3],[377,3],[391,3],[405,3],[435,2],[449,1],[489,3],[534,2],[605,3],[639,2],[771,2],[774,3],[799,2],[819,1],[898,4],[903,4],[908,6],[950,2],[1002,3],[1020,2],[1036,1],[1066,1],[1076,1],[1130,1],[1194,2],[1197,2],[1221,2],[1224,1],[1247,2],[1250,1],[1276,3],[1297,2],[1343,3],[1347,3],[1369,5],[1375,3],[1386,1],[1388,1],[1402,1],[1416,1],[1424,1],[1438,1],[1452,1],[1460,1],[1473,1],[1487,1],[1495,1],[1508,1],[1522,1],[1530,1],[1544,2]]},"290":{"position":[[9,3],[13,1],[60,1],[148,2],[165,1],[218,1],[280,1],[282,3],[289,2],[303,3],[312,2],[326,1],[335,2],[338,2],[341,1],[375,1],[377,1],[385,3],[395,3],[409,3],[423,3],[446,2],[460,1],[500,3],[545,2],[616,3],[650,2],[782,2],[785,3],[810,2],[830,1],[909,4],[914,4],[919,6],[961,2],[1013,3],[1031,2],[1048,1],[1084,1],[1121,2],[1145,2],[1148,1],[1174,3],[1195,2],[1239,3],[1261,5],[1267,3],[1278,1],[1280,1],[1294,1],[1308,1],[1316,1],[1330,1],[1344,1],[1352,1],[1365,1],[1379,1],[1387,1],[1400,1],[1414,1],[1422,1],[1436,2]]},"292":{"position":[[398,1]]},"298":{"position":[[9,3],[13,1],[60,1],[148,2],[165,1],[239,1],[301,1],[303,3],[310,2],[324,3],[333,2],[347,1],[373,1],[416,2],[419,1],[431,2],[446,3],[485,1],[487,1],[587,2],[614,2],[631,2],[641,2],[644,2],[647,1],[681,1],[683,1],[691,3],[701,3],[715,3],[729,3],[752,2],[766,1],[806,3],[851,2],[922,3],[956,2],[1088,2],[1091,3],[1116,2],[1136,1],[1215,4],[1220,4],[1225,6],[1267,2],[1319,3],[1371,2],[1446,3],[1488,2],[1568,1],[1604,3],[1608,3],[1626,2],[1653,1],[1753,2],[1756,1],[1758,3],[1860,2],[1893,1],[1924,3],[1979,1],[1986,1],[2009,2],[2012,1],[2043,3],[2064,2],[2108,3],[2112,1],[2114,3],[2136,5],[2142,3],[2153,1],[2155,1],[2169,1],[2188,1],[2196,1],[2210,1],[2229,1],[2237,1],[2250,1],[2269,1],[2277,1],[2290,1],[2309,1],[2317,1],[2331,1],[2350,1],[2369,2]]},"302":{"position":[[166,1],[198,1],[231,3],[241,3],[255,3],[259,3],[301,2],[304,1],[332,1],[379,1],[381,3],[508,1],[540,1],[567,3],[577,3],[591,3],[595,3],[636,2],[639,1],[667,1],[724,1],[726,3],[860,1],[899,1],[953,1],[961,3],[971,3],[985,3],[989,3],[1046,2],[1049,1],[1077,1],[1141,1],[1143,3],[1280,1],[1298,2],[1301,1],[1329,1],[1375,1],[1396,3],[1613,1],[1631,2],[1634,1],[1662,1],[1706,1],[1727,3]]},"304":{"position":[[184,1],[203,1],[242,3],[252,3],[266,3],[270,3],[274,1],[288,1],[316,1],[336,1],[338,1],[489,1],[516,3],[526,3],[540,3],[544,3],[552,1],[571,1],[601,1],[615,1],[643,1],[663,1],[665,1],[830,1],[884,1],[892,3],[902,3],[916,3],[920,3],[928,1],[972,1],[986,1],[1014,1],[1061,1],[1063,1],[1165,1],[1180,1],[1216,1],[1242,1],[1256,1],[1284,1],[1322,1],[1324,1],[1508,1],[1523,1],[1557,1],[1583,1],[1597,1],[1625,1],[1661,1],[1663,1]]},"308":{"position":[[9,3],[13,1],[60,1],[148,2],[165,1],[218,1],[280,1],[282,3],[289,2],[303,3],[312,2],[326,1],[335,2],[338,2],[341,1],[375,1],[377,1],[385,3],[395,3],[409,3],[423,3],[472,2],[486,1],[526,3],[571,2],[642,3],[676,2],[808,2],[811,3],[836,2],[856,1],[935,4],[940,4],[945,6],[987,2],[1039,3],[1057,2],[1073,1],[1103,1],[1113,1],[1167,1],[1231,2],[1234,2],[1258,2],[1261,1],[1284,2],[1287,1],[1313,3],[1334,2],[1378,3],[1382,3],[1404,5],[1410,3],[1421,1],[1423,1],[1437,1],[1451,1],[1459,1],[1473,1],[1487,1],[1495,1],[1508,1],[1522,1],[1530,1],[1543,1],[1557,1],[1565,1],[1579,2]]},"310":{"position":[[15,3],[19,1],[66,2],[76,1],[90,1],[122,1],[130,1],[185,1],[213,1],[241,1],[243,1],[251,3],[261,3],[275,3],[289,3],[293,2],[303,2],[306,2],[309,1],[323,1],[344,3],[389,2],[450,3],[484,2],[606,2],[609,3],[634,2],[654,1],[723,4],[728,4],[733,6],[775,2],[827,3],[845,2],[862,1],[895,1],[932,2],[962,2],[965,1],[991,3],[1012,2],[1058,3],[1092,5],[1098,3],[1109,1],[1111,1],[1125,1],[1139,1],[1147,1],[1161,1],[1175,1],[1183,1],[1196,1],[1210,1],[1218,1],[1231,1],[1245,1],[1253,1],[1267,2],[1270,3],[1274,1],[1321,2],[1331,1],[1396,1],[1440,1],[1534,1],[1553,1],[1578,1],[1610,1],[1612,3],[1683,2],[1713,1],[1742,1],[1774,1],[1776,3],[1804,2],[1823,1],[1907,1],[1909,3],[1965,2],[1991,1],[2077,1],[2079,3],[2112,2],[2133,1],[2217,1],[2219,3],[2297,2],[2319,1],[2405,1],[2407,3],[2435,2],[2456,1],[2542,1],[2544,3],[2600,2],[2628,1],[2716,1],[2718,3],[2751,2],[2774,1],[2860,1],[2862,3],[2940,2],[2964,1],[3052,1],[3054,3],[3085,2],[3105,1],[3125,1],[3127,1]]}}}],["0",{"_index":557,"t":{"58":{"position":[[256,2]]},"73":{"position":[[121,2]]},"83":{"position":[[291,2]]},"101":{"position":[[579,2],[596,2],[609,2],[654,2],[670,1]]},"103":{"position":[[475,2],[492,2],[505,2],[551,2],[567,1],[602,2],[619,2],[632,2],[677,2],[693,1]]},"105":{"position":[[791,2],[808,2],[821,2],[866,2],[882,1]]},"119":{"position":[[829,2],[878,2],[1314,2],[1363,2]]},"236":{"position":[[173,2],[362,2]]},"257":{"position":[[1308,2],[1321,2]]},"261":{"position":[[2332,1]]},"290":{"position":[[292,2]]},"298":{"position":[[313,2],[2367,1]]},"308":{"position":[[292,2]]}}}],["0deprec",{"_index":751,"t":{"107":{"position":[[0,11]]},"296":{"position":[[101,11]]}}}],["0xffffff",{"_index":999,"t":{"257":{"position":[[876,9]]},"259":{"position":[[386,8]]}}}],["1",{"_index":274,"t":{"23":{"position":[[517,2],[703,1],[760,3],[764,2],[816,1],[854,1],[858,1],[986,3],[990,3],[1027,1],[1031,1]]},"58":{"position":[[259,2]]},"67":{"position":[[58,1],[155,1],[285,1],[357,1]]},"73":{"position":[[135,1]]},"75":{"position":[[189,3],[222,3],[321,3],[454,3],[516,3]]},"83":{"position":[[347,2],[353,1]]},"94":{"position":[[35,1],[39,1],[129,1],[133,1]]},"97":{"position":[[221,1],[225,1],[686,1],[690,1]]},"99":{"position":[[239,1],[243,1]]},"101":{"position":[[449,2],[454,2]]},"103":{"position":[[326,2],[331,2]]},"105":{"position":[[562,2],[567,2]]},"121":{"position":[[1446,4],[1752,3]]},"123":{"position":[[208,1],[737,1],[1000,1]]},"139":{"position":[[448,2]]},"160":{"position":[[347,2]]},"191":{"position":[[109,3],[306,3]]},"193":{"position":[[119,3],[342,3]]},"200":{"position":[[2138,2]]},"225":{"position":[[121,3],[348,3]]},"227":{"position":[[116,3],[369,3]]},"229":{"position":[[131,3],[386,3]]},"252":{"position":[[534,2]]},"261":{"position":[[2240,1]]},"265":{"position":[[119,3],[326,3]]},"267":{"position":[[129,3],[362,3]]},"274":{"position":[[1350,1]]},"277":{"position":[[130,3],[370,3]]},"279":{"position":[[125,3],[391,3]]},"281":{"position":[[140,3],[408,3]]},"288":{"position":[[1493,1]]},"290":{"position":[[315,2],[1385,1]]},"298":{"position":[[336,2],[2275,1]]},"302":{"position":[[1278,1],[1282,3],[1611,1],[1615,3]]},"304":{"position":[[1214,1],[1218,4],[1555,1],[1559,4]]},"308":{"position":[[315,2],[1528,1]]},"310":{"position":[[1216,1]]}}}],["1+1",{"_index":334,"t":{"29":{"position":[[284,3]]}}}],["1+:toadd",{"_index":465,"t":{"46":{"position":[[269,8]]},"200":{"position":[[1783,8]]}}}],["1,2",{"_index":279,"t":{"23":{"position":[[608,5]]}}}],["1.0.0",{"_index":546,"t":{"56":{"position":[[202,8]]},"200":{"position":[[2026,8]]}}}],["1.1",{"_index":558,"t":{"58":{"position":[[262,4]]}}}],["1.1earli",{"_index":1119,"t":{"296":{"position":[[756,8]]}}}],["1.2",{"_index":559,"t":{"58":{"position":[[267,4]]}}}],["1.2releas",{"_index":1123,"t":{"296":{"position":[[848,10]]}}}],["10",{"_index":331,"t":{"29":{"position":[[237,2]]},"46":{"position":[[296,2]]},"103":{"position":[[532,3]]},"119":{"position":[[634,3],[647,3],[1119,3],[1132,3]]},"200":{"position":[[1810,2]]},"257":{"position":[[754,3]]},"259":{"position":[[280,3]]}}}],["1000",{"_index":956,"t":{"236":{"position":[[322,6],[529,6]]}}}],["1045",{"_index":986,"t":{"257":{"position":[[504,4]]}}}],["1080",{"_index":352,"t":{"29":{"position":[[864,4]]}}}],["12",{"_index":596,"t":{"67":{"position":[[126,2]]}}}],["120",{"_index":685,"t":{"83":{"position":[[335,4]]}}}],["123",{"_index":676,"t":{"83":{"position":[[152,4]]},"257":{"position":[[689,3]]}}}],["1234",{"_index":997,"t":{"257":{"position":[[817,5]]},"259":{"position":[[330,5]]}}}],["137",{"_index":779,"t":{"117":{"position":[[956,5],[1459,5]]}}}],["14",{"_index":829,"t":{"121":{"position":[[400,3],[982,3]]}}}],["16000",{"_index":633,"t":{"71":{"position":[[86,5]]}}}],["18.x",{"_index":478,"t":{"50":{"position":[[60,5]]}}}],["19",{"_index":906,"t":{"166":{"position":[[160,3],[414,3]]},"168":{"position":[[155,3],[435,3]]},"170":{"position":[[170,3],[452,3]]},"215":{"position":[[112,4],[328,4]]},"217":{"position":[[122,4],[364,4]]}}}],["1998",{"_index":1167,"t":{"306":{"position":[[12,5]]}}}],["1experiment",{"_index":584,"t":{"64":{"position":[[144,13]]},"296":{"position":[[642,13]]}}}],["2",{"_index":275,"t":{"23":{"position":[[523,1]]},"44":{"position":[[195,3],[199,4]]},"58":{"position":[[272,1]]},"69":{"position":[[293,1],[464,3]]},"94":{"position":[[95,1],[189,1]]},"97":{"position":[[300,1],[701,1],[705,1],[772,2]]},"99":{"position":[[261,1],[265,1],[376,1]]},"101":{"position":[[636,2]]},"103":{"position":[[338,2],[343,2],[659,2]]},"105":{"position":[[574,2],[579,2],[848,2]]},"123":{"position":[[220,1],[749,1],[1012,1]]},"257":{"position":[[836,2]]},"259":{"position":[[349,2]]},"261":{"position":[[2200,1]]},"274":{"position":[[1315,1]]},"288":{"position":[[1117,4],[1171,1],[1180,4],[1458,1]]},"290":{"position":[[1350,1]]},"298":{"position":[[2235,1]]},"308":{"position":[[1154,4],[1208,1],[1217,4],[1493,1]]},"310":{"position":[[1181,1]]}}}],["2+3",{"_index":932,"t":{"200":{"position":[[785,3],[1292,3]]}}}],["2.0",{"_index":300,"t":{"27":{"position":[[238,3]]}}}],["2.rds.amazonaws.com",{"_index":872,"t":{"135":{"position":[[379,21],[735,21]]},"156":{"position":[[349,21],[774,21]]},"248":{"position":[[402,21],[935,21]]}}}],["20",{"_index":1078,"t":{"265":{"position":[[88,2],[295,2]]},"267":{"position":[[98,2],[331,2]]},"277":{"position":[[149,4],[389,4]]},"279":{"position":[[144,4],[410,4]]},"281":{"position":[[159,4],[427,4]]}}}],["2113931265",{"_index":1000,"t":{"257":{"position":[[907,11]]}}}],["2119",{"_index":882,"t":{"137":{"position":[[71,5]]},"158":{"position":[[71,5]]},"250":{"position":[[71,5]]}}}],["2130",{"_index":880,"t":{"137":{"position":[[7,5]]},"158":{"position":[[7,5]]},"250":{"position":[[7,5]]}}}],["2131",{"_index":885,"t":{"137":{"position":[[123,5]]},"158":{"position":[[123,5]]},"250":{"position":[[123,5]]}}}],["2181036031",{"_index":1001,"t":{"257":{"position":[[936,11]]}}}],["2282",{"_index":1168,"t":{"306":{"position":[[18,5]]}}}],["253",{"_index":1018,"t":{"257":{"position":[[1296,4]]}}}],["2stabl",{"_index":560,"t":{"58":{"position":[[289,7],[297,7]]},"97":{"position":[[0,7]]},"99":{"position":[[0,7]]},"101":{"position":[[0,7]]},"103":{"position":[[0,7]]},"105":{"position":[[0,7]]},"296":{"position":[[1114,7]]},"302":{"position":[[17,7],[396,7],[748,7],[1155,7],[1492,7]]},"304":{"position":[[17,7],[351,7],[685,7],[1073,7],[1418,7]]}}}],["3",{"_index":194,"t":{"10":{"position":[[292,3]]},"23":{"position":[[646,1]]},"44":{"position":[[388,1]]},"48":{"position":[[39,2]]},"58":{"position":[[278,2]]},"69":{"position":[[511,1]]},"75":{"position":[[232,3],[354,3],[364,3],[549,3],[559,3]]},"261":{"position":[[2280,1]]},"274":{"position":[[1385,1]]},"288":{"position":[[1528,1]]},"290":{"position":[[1420,1]]},"298":{"position":[[2315,1]]},"308":{"position":[[1563,1]]},"310":{"position":[[1251,1]]}}}],["33",{"_index":1014,"t":{"257":{"position":[[1261,3]]}}}],["3306",{"_index":350,"t":{"29":{"position":[[829,4]]},"129":{"position":[[219,5],[419,5]]},"139":{"position":[[178,4],[508,4]]},"150":{"position":[[189,5],[464,5]]},"160":{"position":[[166,4],[407,4]]},"200":{"position":[[163,5],[980,5],[1633,5]]},"242":{"position":[[242,5],[618,5]]},"252":{"position":[[174,4],[594,4]]}}}],["384",{"_index":1016,"t":{"257":{"position":[[1279,4]]}}}],["3legaci",{"_index":1133,"t":{"296":{"position":[[1181,7]]}}}],["4",{"_index":721,"t":{"97":{"position":[[775,1]]},"99":{"position":[[393,1]]},"261":{"position":[[2132,1],[2159,1]]},"274":{"position":[[1257,1],[1279,1]]},"288":{"position":[[1400,1],[1422,1]]},"290":{"position":[[1292,1],[1314,1]]},"298":{"position":[[2167,1],[2194,1]]},"308":{"position":[[1435,1],[1457,1]]},"310":{"position":[[1123,1],[1145,1]]}}}],["4.5.2",{"_index":701,"t":{"86":{"position":[[224,8]]}}}],["45",{"_index":768,"t":{"115":{"position":[[459,3],[787,3],[1139,4],[1438,4]]},"166":{"position":[[172,4],[426,4]]},"168":{"position":[[167,4],[447,4]]},"170":{"position":[[182,4],[464,4]]},"178":{"position":[[157,4],[392,4]]},"180":{"position":[[152,4],[413,4]]},"182":{"position":[[167,4],[430,4]]},"204":{"position":[[117,4],[319,4]]},"206":{"position":[[127,4],[355,4]]},"208":{"position":[[127,4],[374,4]]},"215":{"position":[[126,5],[342,5]]},"217":{"position":[[136,5],[378,5]]}}}],["5",{"_index":594,"t":{"67":{"position":[[80,3]]},"236":{"position":[[180,2],[369,2]]}}}],["5.6.10",{"_index":995,"t":{"257":{"position":[[773,9]]}}}],["53",{"_index":780,"t":{"117":{"position":[[962,3],[1465,4]]}}}],["6",{"_index":595,"t":{"67":{"position":[[84,3]]}}}],["6.9.0",{"_index":951,"t":{"200":{"position":[[2207,8]]}}}],["60000",{"_index":799,"t":{"119":{"position":[[740,6],[811,5],[1225,6],[1296,5]]}}}],["8",{"_index":998,"t":{"257":{"position":[[853,2]]},"259":{"position":[[366,2]]}}}],["8bb6118f8fd6935ad0876a3be34a717d32708ffd",{"_index":854,"t":{"131":{"position":[[193,43]]},"152":{"position":[[163,43]]},"244":{"position":[[216,43]]}}}],["_err",{"_index":712,"t":{"94":{"position":[[54,6],[148,6]]},"97":{"position":[[240,6],[377,6],[718,6],[853,6]]},"99":{"position":[[314,6]]},"101":{"position":[[493,6]]},"103":{"position":[[384,6]]},"105":{"position":[[705,6]]}}}],["a,b,c,d",{"_index":283,"t":{"25":{"position":[[31,7]]}}}],["a.j",{"_index":886,"t":{"139":{"position":[[44,4]]},"160":{"position":[[32,4]]},"252":{"position":[[40,4]]}}}],["abov",{"_index":440,"t":{"42":{"position":[[708,5]]},"119":{"position":[[1638,5],[1844,5],[2154,5],[2385,5]]}}}],["accept",{"_index":356,"t":{"29":{"position":[[976,6]]}}}],["access",{"_index":303,"t":{"27":{"position":[[357,6]]},"79":{"position":[[77,6]]},"90":{"position":[[57,7]]},"92":{"position":[[51,7]]},"261":{"position":[[637,7]]},"274":{"position":[[331,7]]},"288":{"position":[[331,7]]},"290":{"position":[[349,7]]},"294":{"position":[[145,6]]},"298":{"position":[[655,7]]},"308":{"position":[[349,7]]},"310":{"position":[[221,7]]}}}],["accord",{"_index":176,"t":{"8":{"position":[[2435,9]]}}}],["accordingli",{"_index":116,"t":{"8":{"position":[[760,12]]}}}],["ack",{"_index":625,"t":{"69":{"position":[[641,3]]}}}],["acquir",{"_index":815,"t":{"119":{"position":[[2044,9]]}}}],["action",{"_index":582,"t":{"64":{"position":[[101,7],[238,7],[335,7],[530,7]]}}}],["activ",{"_index":1135,"t":{"296":{"position":[[1289,6]]}}}],["ad",{"_index":1154,"t":{"302":{"position":[[122,6]]}}}],["add(group",{"_index":961,"t":{"240":{"position":[[0,10]]},"242":{"position":[[0,10]]},"244":{"position":[[0,10]]},"246":{"position":[[0,10]]},"248":{"position":[[0,10]]},"252":{"position":[[0,10]]}}}],["addit",{"_index":106,"t":{"8":{"position":[[599,10]]},"10":{"position":[[245,10],[296,10]]},"12":{"position":[[228,10]]},"27":{"position":[[3,8]]},"29":{"position":[[905,8]]},"38":{"position":[[251,8]]},"40":{"position":[[3,8]]},"292":{"position":[[370,10]]}}}],["addition",{"_index":822,"t":{"119":{"position":[[2583,13]]}}}],["address",{"_index":1144,"t":{"296":{"position":[[1520,10]]}}}],["advanc",{"_index":753,"t":{"109":{"position":[[80,8]]}}}],["affect",{"_index":1077,"t":{"261":{"position":[[2317,8]]},"298":{"position":[[2352,8]]}}}],["affectedrow",{"_index":382,"t":{"36":{"position":[[222,13]]},"101":{"position":[[242,12],[582,13]]},"103":{"position":[[478,13],[605,13]]},"105":{"position":[[794,13]]},"261":{"position":[[485,15]]},"298":{"position":[[503,15]]}}}],["ag",{"_index":767,"t":{"115":{"position":[[451,5],[766,5],[1131,5],[1417,5]]},"117":{"position":[[935,5],[1438,5]]},"121":{"position":[[378,5],[960,5]]},"166":{"position":[[106,6],[360,6]]},"168":{"position":[[101,6],[381,6]]},"170":{"position":[[116,6],[398,6]]},"178":{"position":[[121,5],[356,5]]},"180":{"position":[[116,5],[377,5]]},"182":{"position":[[131,5],[394,5]]},"204":{"position":[[109,5],[311,5]]},"206":{"position":[[119,5],[347,5]]},"208":{"position":[[119,5],[366,5]]},"215":{"position":[[89,6],[305,6]]},"217":{"position":[[99,6],[341,6]]},"265":{"position":[[80,5],[287,5]]},"267":{"position":[[90,5],[323,5]]},"277":{"position":[[97,5],[337,5]]},"279":{"position":[[92,5],[358,5]]},"281":{"position":[[107,5],[375,5]]}}}],["again",{"_index":198,"t":{"10":{"position":[[396,6]]},"117":{"position":[[1693,6]]},"144":{"position":[[245,6]]}}}],["aim",{"_index":211,"t":{"12":{"position":[[7,4]]}}}],["algorithm",{"_index":181,"t":{"8":{"position":[[2592,9]]}}}],["algoritm",{"_index":199,"t":{"10":{"position":[[502,9]]}}}],["allow",{"_index":530,"t":{"54":{"position":[[181,6]]}}}],["alongsid",{"_index":543,"t":{"56":{"position":[[90,9]]}}}],["altern",{"_index":814,"t":{"119":{"position":[[1987,14]]}}}],["alway",{"_index":149,"t":{"8":{"position":[[1488,6],[2239,6]]},"16":{"position":[[192,6]]},"261":{"position":[[1793,6]]},"298":{"position":[[1830,6]]}}}],["amazon",{"_index":865,"t":{"135":{"position":[[56,6],[113,6],[406,7],[762,7]]},"137":{"position":[[36,6],[138,6]]},"156":{"position":[[44,6],[101,6],[376,7],[801,7]]},"158":{"position":[[36,6],[138,6]]},"248":{"position":[[52,6],[109,6],[429,7],[962,7]]},"250":{"position":[[36,6],[138,6]]}}}],["anoth",{"_index":97,"t":{"8":{"position":[[372,7]]}}}],["answer",{"_index":1098,"t":{"294":{"position":[[22,7]]},"302":{"position":[[84,7]]},"304":{"position":[[84,7]]}}}],["api",{"_index":24,"t":{"2":{"position":[[240,3]]},"6":{"position":[[17,3]]},"8":{"position":[[1303,3]]},"12":{"position":[[76,3]]},"40":{"position":[[79,3]]},"121":{"position":[[28,4]]},"292":{"position":[[102,3],[279,3]]}}}],["appli",{"_index":55,"t":{"6":{"position":[[233,7]]},"123":{"position":[[291,8],[339,8]]}}}],["approach",{"_index":1120,"t":{"296":{"position":[[817,11]]}}}],["arg",{"_index":1032,"t":{"259":{"position":[[772,5]]}}}],["argument",{"_index":57,"t":{"6":{"position":[[252,10]]},"32":{"position":[[89,9]]}}}],["arguments[1",{"_index":1034,"t":{"259":{"position":[[941,13],[1149,13]]}}}],["arguments[2",{"_index":1035,"t":{"259":{"position":[[965,13]]}}}],["array",{"_index":267,"t":{"23":{"position":[[398,5],[942,5]]},"25":{"position":[[139,5],[148,6]]},"36":{"position":[[536,5]]},"69":{"position":[[230,5],[318,5]]},"97":{"position":[[11,5]]},"123":{"position":[[80,5],[844,5],[853,6],[875,5],[1140,5],[1149,6],[1171,5]]},"208":{"position":[[614,5]]},"259":{"position":[[824,7],[840,7]]}}}],["array.isarray(arguments[1",{"_index":1033,"t":{"259":{"position":[[851,29]]}}}],["asc",{"_index":1063,"t":{"261":{"position":[[1558,4]]},"274":{"position":[[1078,5]]},"288":{"position":[[1107,3],[1161,3]]},"290":{"position":[[1115,5]]},"298":{"position":[[1595,4]]},"308":{"position":[[1144,3],[1198,3]]},"310":{"position":[[926,5]]}}}],["ascertain",{"_index":1127,"t":{"296":{"position":[[1045,9]]}}}],["ask",{"_index":78,"t":{"8":{"position":[[43,3]]},"123":{"position":[[1262,3]]},"294":{"position":[[42,5]]}}}],["assur",{"_index":1101,"t":{"296":{"position":[[162,6]]}}}],["async",{"_index":441,"t":{"44":{"position":[[0,5],[224,5]]},"121":{"position":[[64,5],[113,5],[1141,5]]},"200":{"position":[[92,5],[1962,5]]},"261":{"position":[[616,6]]},"274":{"position":[[310,6]]},"288":{"position":[[310,6]]},"290":{"position":[[328,6]]},"298":{"position":[[634,6]]},"308":{"position":[[328,6]]},"310":{"position":[[296,6]]}}}],["asynchron",{"_index":111,"t":{"8":{"position":[[703,14]]}}}],["attach",{"_index":412,"t":{"38":{"position":[[499,6]]}}}],["attack",{"_index":777,"t":{"117":{"position":[[302,7]]}}}],["auth",{"_index":81,"t":{"8":{"position":[[83,4],[801,4],[952,6],[1869,6]]},"10":{"position":[[702,5],[842,5],[982,5]]},"257":{"position":[[119,4]]}}}],["auth.doublesha1('pass123",{"_index":977,"t":{"257":{"position":[[235,27]]}}}],["auth.verifytoken",{"_index":979,"t":{"257":{"position":[[279,17]]}}}],["authcallback",{"_index":1002,"t":{"257":{"position":[[948,13]]}}}],["authent",{"_index":92,"t":{"8":{"position":[[211,14],[610,14]]},"10":{"position":[[34,14],[159,14],[256,14],[412,14]]},"12":{"position":[[285,14]]},"257":{"position":[[962,13]]},"292":{"position":[[558,14]]}}}],["authenticate(param",{"_index":974,"t":{"257":{"position":[[169,20]]}}}],["authentication::native41",{"_index":177,"t":{"8":{"position":[[2448,24]]}}}],["authnextfactor",{"_index":188,"t":{"10":{"position":[[90,14]]}}}],["author",{"_index":947,"t":{"200":{"position":[[2144,9]]}}}],["authplugin",{"_index":83,"t":{"8":{"position":[[103,11],[928,12],[2480,11]]},"10":{"position":[[661,12]]}}}],["authswitchhandl",{"_index":143,"t":{"8":{"position":[[1318,17],[1778,18],[2508,17]]}}}],["authswitchrequest",{"_index":163,"t":{"8":{"position":[[2130,17]]}}}],["auto",{"_index":513,"t":{"52":{"position":[[709,4]]}}}],["auto_incr",{"_index":1053,"t":{"261":{"position":[[993,15]]},"274":{"position":[[687,15]]},"288":{"position":[[713,15]]},"290":{"position":[[724,15]]},"298":{"position":[[1030,15]]},"308":{"position":[[750,15]]},"310":{"position":[[548,15]]}}}],["automat",{"_index":812,"t":{"119":{"position":[[1733,13],[1940,13]]},"236":{"position":[[270,13]]}}}],["avail",{"_index":360,"t":{"29":{"position":[[1080,10]]},"58":{"position":[[238,9]]},"115":{"position":[[606,9],[1318,9]]},"117":{"position":[[1109,9],[1644,9]]},"121":{"position":[[443,9]]},"166":{"position":[[758,9]]},"168":{"position":[[807,9]]},"170":{"position":[[824,9]]},"178":{"position":[[639,9]]},"180":{"position":[[688,9]]},"182":{"position":[[705,9]]},"191":{"position":[[627,9]]},"193":{"position":[[691,9]]},"204":{"position":[[556,9]]},"206":{"position":[[620,9]]},"208":{"position":[[667,9]]},"215":{"position":[[665,9]]},"217":{"position":[[729,9]]},"225":{"position":[[704,9]]},"227":{"position":[[753,9]]},"229":{"position":[[770,9]]},"265":{"position":[[647,9]]},"267":{"position":[[711,9]]},"277":{"position":[[730,9]]},"279":{"position":[[779,9]]},"281":{"position":[[796,9]]},"296":{"position":[[1330,10]]}}}],["avg",{"_index":53,"t":{"6":{"position":[[212,5]]}}}],["avoid",{"_index":60,"t":{"6":{"position":[[292,5]]},"119":{"position":[[219,5]]}}}],["await",{"_index":443,"t":{"44":{"position":[[82,5],[155,5],[204,5],[398,5],[516,5]]},"46":{"position":[[356,5]]},"115":{"position":[[235,5],[378,5],[698,5]]},"117":{"position":[[703,5],[865,5]]},"119":{"position":[[1667,5],[2173,5],[2237,5]]},"121":{"position":[[70,6],[181,5],[308,5],[744,5],[890,5],[1414,5]]},"123":{"position":[[426,5],[705,5]]},"127":{"position":[[124,5]]},"129":{"position":[[128,5]]},"131":{"position":[[128,5]]},"133":{"position":[[146,5]]},"135":{"position":[[315,5],[488,5],[547,5]]},"148":{"position":[[194,5]]},"150":{"position":[[235,5]]},"152":{"position":[[239,5]]},"154":{"position":[[334,5]]},"156":{"position":[[413,5],[545,5],[604,5]]},"166":{"position":[[202,5]]},"168":{"position":[[197,5]]},"170":{"position":[[212,5]]},"178":{"position":[[185,5]]},"180":{"position":[[180,5]]},"182":{"position":[[195,5]]},"191":{"position":[[138,5]]},"193":{"position":[[148,5]]},"200":{"position":[[126,5],[292,5],[373,5],[675,5],[930,5],[1183,5],[1364,5],[2007,7]]},"204":{"position":[[145,5]]},"206":{"position":[[155,5]]},"208":{"position":[[155,5]]},"215":{"position":[[157,5]]},"217":{"position":[[167,5]]},"225":{"position":[[175,5]]},"227":{"position":[[170,5]]},"229":{"position":[[185,5]]},"240":{"position":[[286,5]]},"242":{"position":[[327,5]]},"244":{"position":[[331,5]]},"246":{"position":[[426,5]]},"248":{"position":[[505,5],[654,5],[713,5]]},"261":{"position":[[731,5],[817,5],[922,5],[1101,5],[1337,5],[1454,5],[1618,5],[2083,5]]},"265":{"position":[[148,5]]},"267":{"position":[[158,5]]},"274":{"position":[[425,5],[511,5],[616,5],[795,5],[1013,5],[1208,5]]},"277":{"position":[[188,5]]},"279":{"position":[[183,5]]},"281":{"position":[[198,5]]},"288":{"position":[[451,5],[537,5],[642,5],[821,5],[1038,5],[1351,5]]},"290":{"position":[[462,5],[548,5],[653,5],[832,5],[1050,5],[1243,5]]},"298":{"position":[[768,5],[854,5],[959,5],[1138,5],[1374,5],[1491,5],[1655,5],[2118,5]]},"304":{"position":[[205,5],[573,5],[930,5],[1182,5],[1525,5]]},"308":{"position":[[488,5],[574,5],[679,5],[858,5],[1075,5],[1386,5]]},"310":{"position":[[392,5],[487,5],[656,5],[864,5],[1062,5]]}}}],["await.j",{"_index":917,"t":{"200":{"position":[[0,8],[2062,11]]}}}],["b",{"_index":289,"t":{"25":{"position":[[197,1]]},"52":{"position":[[622,1]]}}}],["b.j",{"_index":887,"t":{"139":{"position":[[49,4]]},"160":{"position":[[37,4]]},"252":{"position":[[45,4]]}}}],["babel",{"_index":950,"t":{"200":{"position":[[2194,6]]}}}],["babelrc",{"_index":919,"t":{"200":{"position":[[15,8]]}}}],["back",{"_index":109,"t":{"8":{"position":[[659,4]]}}}],["backend",{"_index":662,"t":{"81":{"position":[[118,8],[166,8]]}}}],["backward",{"_index":1102,"t":{"296":{"position":[[169,8],[281,8]]}}}],["badg",{"_index":552,"t":{"58":{"position":[[18,6]]},"296":{"position":[[14,6]]}}}],["bar",{"_index":345,"t":{"29":{"position":[[730,6]]},"42":{"position":[[241,6],[528,6]]}}}],["base",{"_index":18,"t":{"2":{"position":[[170,5]]},"40":{"position":[[73,5]]},"296":{"position":[[983,5]]}}}],["basi",{"_index":74,"t":{"6":{"position":[[517,6]]}}}],["basic",{"_index":757,"t":{"109":{"position":[[608,5]]}}}],["befor",{"_index":592,"t":{"64":{"position":[[474,6]]},"310":{"position":[[1651,6]]}}}],["begin",{"_index":747,"t":{"105":{"position":[[552,5]]},"261":{"position":[[1518,5]]},"298":{"position":[[1555,5]]}}}],["behavior",{"_index":406,"t":{"38":{"position":[[363,8]]}}}],["below",{"_index":914,"t":{"189":{"position":[[13,5]]},"202":{"position":[[13,5]]},"213":{"position":[[13,5]]},"263":{"position":[[13,5]]}}}],["benchmark",{"_index":256,"t":{"20":{"position":[[63,10],[85,10],[115,10]]}}}],["beta",{"_index":1012,"t":{"257":{"position":[[1222,7],[1239,7]]}}}],["better",{"_index":216,"t":{"12":{"position":[[170,6]]},"67":{"position":[[449,6]]},"117":{"position":[[153,6],[1783,6]]},"144":{"position":[[335,6]]},"292":{"position":[[400,6]]}}}],["between",{"_index":185,"t":{"8":{"position":[[2648,7]]},"86":{"position":[[107,7]]}}}],["bin.000007",{"_index":683,"t":{"83":{"position":[[311,12]]}}}],["binari",{"_index":224,"t":{"12":{"position":[[364,6]]},"36":{"position":[[584,6]]},"111":{"position":[[102,6]]},"292":{"position":[[445,6]]}}}],["bind",{"_index":247,"t":{"18":{"position":[[99,8],[173,8]]},"73":{"position":[[4,4]]},"113":{"position":[[27,8]]}}}],["binlog",{"_index":252,"t":{"18":{"position":[[249,6]]}}}],["binlogpo",{"_index":684,"t":{"83":{"position":[[324,10]]}}}],["binlogstream",{"_index":673,"t":{"83":{"position":[[100,12]]}}}],["binlogstream.pip",{"_index":687,"t":{"83":{"position":[[381,18]]}}}],["blob",{"_index":154,"t":{"8":{"position":[[1607,4]]}}}],["block",{"_index":566,"t":{"60":{"position":[[177,6]]},"83":{"position":[[362,8]]},"304":{"position":[[137,6],[435,6],[769,6],[1154,6],[1497,6]]}}}],["bluebird",{"_index":831,"t":{"121":{"position":[[629,8],[645,8],[659,11],[705,8],[835,9]]}}}],["boolean",{"_index":399,"t":{"38":{"position":[[146,7]]},"73":{"position":[[105,7]]}}}],["both",{"_index":1163,"t":{"302":{"position":[[1417,4],[1748,4]]},"304":{"position":[[1343,4],[1682,4]]}}}],["bound",{"_index":1104,"t":{"296":{"position":[[230,5]]}}}],["branch",{"_index":486,"t":{"52":{"position":[[154,6]]}}}],["browser",{"_index":496,"t":{"52":{"position":[[399,7]]}}}],["buffer",{"_index":107,"t":{"8":{"position":[[630,8],[1667,8]]},"73":{"position":[[222,6]]}}}],["buffer.from",{"_index":853,"t":{"131":{"position":[[180,12]]},"152":{"position":[[150,12]]},"244":{"position":[[203,12]]}}}],["buffer.from('8bb6118f8fd6935ad0876a3be34a717d32708ffd",{"_index":856,"t":{"131":{"position":[[384,55]]},"152":{"position":[[429,55]]},"244":{"position":[[583,55]]}}}],["bug",{"_index":1143,"t":{"296":{"position":[[1488,4]]}}}],["build",{"_index":588,"t":{"64":{"position":[[266,5],[306,5]]}}}],["built",{"_index":471,"t":{"48":{"position":[[16,5]]}}}],["bun",{"_index":884,"t":{"137":{"position":[[119,3]]},"158":{"position":[[119,3]]},"250":{"position":[[119,3]]}}}],["byte",{"_index":402,"t":{"38":{"position":[[242,5]]}}}],["bytes/sec",{"_index":332,"t":{"29":{"position":[[240,9]]}}}],["c",{"_index":290,"t":{"25":{"position":[[214,1]]},"46":{"position":[[83,1]]},"117":{"position":[[954,1],[1457,1]]},"200":{"position":[[122,1],[1592,1]]}}}],["c.end",{"_index":468,"t":{"46":{"position":[[310,8]]},"200":{"position":[[936,8],[1824,8]]}}}],["c.execute('select",{"_index":464,"t":{"46":{"position":[[251,17]]},"200":{"position":[[484,17],[569,17],[695,17],[727,17],[1765,17]]}}}],["c.query('show",{"_index":461,"t":{"46":{"position":[[187,13]]},"200":{"position":[[298,13],[1701,13]]}}}],["c.query('som",{"_index":923,"t":{"200":{"position":[[379,13]]}}}],["ca",{"_index":862,"t":{"133":{"position":[[294,3],[575,3]]},"135":{"position":[[202,2],[214,2]]},"137":{"position":[[153,2]]},"154":{"position":[[264,3],[620,3]]},"156":{"position":[[190,2],[202,2]]},"158":{"position":[[153,2]]},"246":{"position":[[317,3],[774,3]]},"248":{"position":[[198,2],[210,2]]},"250":{"position":[[153,2]]}}}],["cach",{"_index":598,"t":{"67":{"position":[[215,6],[256,6],[322,5],[416,5],[480,5]]},"69":{"position":[[52,5]]},"71":{"position":[[36,6],[63,6],[173,5]]},"117":{"position":[[1729,5]]},"144":{"position":[[281,5]]}}}],["call",{"_index":103,"t":{"8":{"position":[[520,4],[560,4],[1549,5],[2556,6]]},"67":{"position":[[209,5]]},"105":{"position":[[89,4],[629,5],[1033,5]]},"117":{"position":[[816,4],[1351,4]]}}}],["callback",{"_index":145,"t":{"8":{"position":[[1443,9]]},"36":{"position":[[453,9]]},"69":{"position":[[598,8]]},"115":{"position":[[116,8]]},"117":{"position":[[596,8]]},"119":{"position":[[388,8],[1591,8],[2113,8]]},"123":{"position":[[404,8],[664,8]]}}}],["callback'",{"_index":1156,"t":{"302":{"position":[[470,10],[822,10],[1226,10],[1561,10]]}}}],["callback(nul",{"_index":156,"t":{"8":{"position":[[1646,14]]}}}],["callback.j",{"_index":849,"t":{"127":{"position":[[51,11]]},"129":{"position":[[55,11]]},"131":{"position":[[55,11]]},"133":{"position":[[55,11]]},"135":{"position":[[242,11]]},"148":{"position":[[45,11]]},"150":{"position":[[43,11]]},"152":{"position":[[43,11]]},"154":{"position":[[43,11]]},"156":{"position":[[230,11]]},"166":{"position":[[47,11]]},"168":{"position":[[42,11]]},"170":{"position":[[57,11]]},"178":{"position":[[47,11]]},"180":{"position":[[42,11]]},"182":{"position":[[57,11]]},"191":{"position":[[30,11]]},"193":{"position":[[40,11]]},"204":{"position":[[30,11]]},"206":{"position":[[40,11]]},"208":{"position":[[40,11]]},"215":{"position":[[30,11]]},"217":{"position":[[40,11]]},"225":{"position":[[47,11]]},"227":{"position":[[42,11]]},"229":{"position":[[57,11]]},"240":{"position":[[53,11]]},"242":{"position":[[51,11]]},"244":{"position":[[51,11]]},"246":{"position":[[51,11]]},"248":{"position":[[238,11]]},"265":{"position":[[30,11]]},"267":{"position":[[40,11]]},"277":{"position":[[47,11]]},"279":{"position":[[42,11]]},"281":{"position":[[57,11]]}}}],["candid",{"_index":1124,"t":{"296":{"position":[[859,9]]}}}],["capabilityflag",{"_index":376,"t":{"36":{"position":[[91,15]]},"257":{"position":[[859,16],[889,16],[919,16]]},"259":{"position":[[369,16]]}}}],["case",{"_index":146,"t":{"8":{"position":[[1461,5]]},"29":{"position":[[352,4]]},"135":{"position":[[148,4]]},"156":{"position":[[136,4]]},"248":{"position":[[144,4]]}}}],["catalog",{"_index":1008,"t":{"257":{"position":[[1139,8]]}}}],["catch",{"_index":771,"t":{"115":{"position":[[618,5],[818,5]]},"117":{"position":[[1121,5]]},"119":{"position":[[1778,5]]},"123":{"position":[[939,5]]},"127":{"position":[[203,5]]},"129":{"position":[[248,5]]},"131":{"position":[[252,5]]},"133":{"position":[[347,5]]},"135":{"position":[[426,5],[591,5]]},"148":{"position":[[264,5]]},"150":{"position":[[305,5]]},"152":{"position":[[309,5]]},"154":{"position":[[404,5]]},"156":{"position":[[483,5],[642,5]]},"166":{"position":[[285,5]]},"168":{"position":[[306,5]]},"170":{"position":[[323,5]]},"178":{"position":[[266,5]]},"180":{"position":[[287,5]]},"182":{"position":[[304,5]]},"191":{"position":[[211,5]]},"193":{"position":[[247,5]]},"200":{"position":[[415,5]]},"204":{"position":[[216,5]]},"206":{"position":[[252,5]]},"208":{"position":[[271,5]]},"215":{"position":[[230,5]]},"217":{"position":[[266,5]]},"225":{"position":[[258,5]]},"227":{"position":[[279,5]]},"229":{"position":[[296,5]]},"240":{"position":[[373,5]]},"242":{"position":[[414,5]]},"244":{"position":[[418,5]]},"246":{"position":[[513,5]]},"248":{"position":[[592,5],[758,5]]},"265":{"position":[[221,5]]},"267":{"position":[[257,5]]},"277":{"position":[[271,5]]},"279":{"position":[[292,5]]},"281":{"position":[[309,5]]},"304":{"position":[[131,5],[276,5],[429,5],[603,5],[763,5],[974,5],[1148,5],[1244,5],[1491,5],[1585,5]]}}}],["catch((err",{"_index":137,"t":{"8":{"position":[[1176,12]]},"42":{"position":[[620,12]]},"200":{"position":[[1426,12]]}}}],["catch(console.log",{"_index":838,"t":{"121":{"position":[[1806,19]]}}}],["catch(funct",{"_index":943,"t":{"200":{"position":[[1880,15]]}}}],["caus",{"_index":1138,"t":{"296":{"position":[[1407,5]]}}}],["caution",{"_index":519,"t":{"52":{"position":[[816,7]]},"296":{"position":[[387,7]]}}}],["cb",{"_index":157,"t":{"8":{"position":[[1835,3]]},"29":{"position":[[754,4]]},"257":{"position":[[190,3]]}}}],["cb(err",{"_index":166,"t":{"8":{"position":[[2196,8]]}}}],["cb(null",{"_index":159,"t":{"8":{"position":[[2065,8]]},"29":{"position":[[874,8]]},"257":{"position":[[391,9],[455,8]]}}}],["cd",{"_index":488,"t":{"52":{"position":[[189,2],[643,2]]}}}],["cert",{"_index":861,"t":{"133":{"position":[[245,5],[526,5]]},"135":{"position":[[217,4]]},"137":{"position":[[26,5],[156,4]]},"154":{"position":[[215,5],[571,5]]},"156":{"position":[[205,4]]},"158":{"position":[[26,5],[156,4]]},"246":{"position":[[268,5],[725,5]]},"248":{"position":[[213,4]]},"250":{"position":[[26,5],[156,4]]}}}],["cert.pem",{"_index":858,"t":{"133":{"position":[[76,8],[283,10],[326,11],[564,10],[607,11]]},"135":{"position":[[205,8]]},"154":{"position":[[64,8],[253,10],[296,11],[609,10],[652,11]]},"156":{"position":[[193,8]]},"246":{"position":[[72,8],[306,10],[349,11],[763,10],[806,11]]},"248":{"position":[[201,8]]}}}],["certs/ca",{"_index":857,"t":{"133":{"position":[[67,8]]},"154":{"position":[[55,8]]},"246":{"position":[[63,8]]}}}],["chang",{"_index":498,"t":{"52":{"position":[[420,7]]},"56":{"position":[[39,7],[106,8],[211,8],[227,6],[304,7],[344,7],[364,6]]},"101":{"position":[[24,7]]},"103":{"position":[[24,7]]},"105":{"position":[[24,7]]},"292":{"position":[[106,7]]},"296":{"position":[[301,7],[471,7],[747,8],[930,7]]}}}],["changedrow",{"_index":728,"t":{"101":{"position":[[148,11],[657,12]]},"103":{"position":[[554,12],[680,12]]},"105":{"position":[[869,12]]},"261":{"position":[[554,14]]},"298":{"position":[[572,14]]}}}],["changeus",{"_index":355,"t":{"29":{"position":[[963,12]]},"69":{"position":[[749,13]]}}}],["characterset",{"_index":375,"t":{"36":{"position":[[77,13]]},"257":{"position":[[839,13],[1247,13]]},"259":{"position":[[352,13]]}}}],["check",{"_index":35,"t":{"4":{"position":[[44,5]]},"14":{"position":[[7,5]]},"16":{"position":[[57,5]]},"64":{"position":[[13,5],[119,5],[158,6]]},"94":{"position":[[374,5]]},"109":{"position":[[13,5],[372,8],[477,8]]},"117":{"position":[[222,5]]}}}],["checkout",{"_index":510,"t":{"52":{"position":[[612,8]]}}}],["choos",{"_index":830,"t":{"121":{"position":[[475,6]]}}}],["ci",{"_index":490,"t":{"52":{"position":[[240,2],[679,2]]}}}],["clash",{"_index":839,"t":{"123":{"position":[[129,9]]}}}],["class",{"_index":12,"t":{"2":{"position":[[124,5]]},"109":{"position":[[628,5]]},"310":{"position":[[1428,5],[1669,5]]}}}],["classif",{"_index":1130,"t":{"296":{"position":[[1098,15]]}}}],["classifi",{"_index":1114,"t":{"296":{"position":[[618,10],[1354,10]]}}}],["clear",{"_index":587,"t":{"64":{"position":[[256,5],[292,5]]}}}],["cli",{"_index":506,"t":{"52":{"position":[[541,3]]},"200":{"position":[[2201,5]]}}}],["client",{"_index":28,"t":{"2":{"position":[[273,7]]},"8":{"position":[[51,6],[1577,6],[2656,6]]},"10":{"position":[[68,6]]},"12":{"position":[[384,6]]},"18":{"position":[[68,6],[143,7],[220,6]]},"23":{"position":[[171,6]]},"36":{"position":[[276,6],[383,7]]},"38":{"position":[[318,7]]},"81":{"position":[[237,6],[281,6]]},"111":{"position":[[6,6]]},"115":{"position":[[136,6],[863,6]]},"121":{"position":[[539,6]]}}}],["clientflag",{"_index":1023,"t":{"259":{"position":[[62,11]]}}}],["clientflags.compress",{"_index":1025,"t":{"259":{"position":[[397,21]]}}}],["clientplugindata(password1",{"_index":206,"t":{"10":{"position":[[789,27]]}}}],["clientplugindata(password2",{"_index":208,"t":{"10":{"position":[[929,27]]}}}],["clientplugindata(password3",{"_index":210,"t":{"10":{"position":[[1069,27]]}}}],["clone",{"_index":508,"t":{"52":{"position":[[557,5]]}}}],["close",{"_index":409,"t":{"38":{"position":[[405,5]]},"67":{"position":[[250,5]]},"69":{"position":[[72,6],[635,5]]},"71":{"position":[[187,7]]},"119":{"position":[[138,7]]},"296":{"position":[[895,5]]}}}],["co",{"_index":456,"t":{"46":{"position":[[39,2],[353,2]]},"200":{"position":[[1548,2],[2004,2]]}}}],["co(funct",{"_index":458,"t":{"46":{"position":[[59,12]]},"200":{"position":[[1568,12]]}}}],["co.j",{"_index":918,"t":{"200":{"position":[[9,5]]}}}],["code",{"_index":17,"t":{"2":{"position":[[165,4],[192,5]]},"8":{"position":[[821,4]]},"38":{"position":[[230,4]]},"60":{"position":[[172,4]]},"109":{"position":[[24,4]]},"137":{"position":[[98,4]]},"158":{"position":[[98,4]]},"250":{"position":[[98,4]]},"257":{"position":[[425,5],[498,5],[683,5]]},"292":{"position":[[66,4],[217,4]]}}}],["collat",{"_index":1097,"t":{"292":{"position":[[512,9]]}}}],["column",{"_index":611,"t":{"69":{"position":[[239,6],[334,6],[480,8]]},"123":{"position":[[16,7]]},"259":{"position":[[832,7],[955,7],[1029,9],[1066,9]]}}}],["columnlength",{"_index":1015,"t":{"257":{"position":[[1265,13]]}}}],["columntyp",{"_index":1017,"t":{"257":{"position":[[1284,11]]}}}],["come",{"_index":606,"t":{"69":{"position":[[37,5]]},"119":{"position":[[250,5]]}}}],["command",{"_index":380,"t":{"36":{"position":[[203,8]]},"38":{"position":[[6,7],[162,7],[222,7],[291,8]]},"64":{"position":[[466,7]]},"200":{"position":[[842,8]]},"296":{"position":[[547,7]]}}}],["commandcod",{"_index":400,"t":{"38":{"position":[[190,13]]}}}],["commit",{"_index":593,"t":{"64":{"position":[[495,7]]}}}],["commonli",{"_index":1099,"t":{"294":{"position":[[33,8]]}}}],["compat",{"_index":26,"t":{"2":{"position":[[250,10]]},"6":{"position":[[21,10]]},"60":{"position":[[188,10]]},"137":{"position":[[103,10]]},"158":{"position":[[103,10]]},"250":{"position":[[103,10]]},"292":{"position":[[283,10]]},"296":{"position":[[178,14],[290,10],[1122,13]]}}}],["compil",{"_index":527,"t":{"54":{"position":[[121,8]]},"81":{"position":[[101,9]]}}}],["complet",{"_index":504,"t":{"52":{"position":[[500,8]]},"54":{"position":[[52,8]]}}}],["complianc",{"_index":580,"t":{"64":{"position":[[49,10]]}}}],["compon",{"_index":523,"t":{"54":{"position":[[12,9],[165,11],[273,10]]},"56":{"position":[[12,9],[286,10]]},"58":{"position":[[204,10]]},"60":{"position":[[122,9],[230,10]]},"64":{"position":[[173,10]]}}}],["compress",{"_index":23,"t":{"2":{"position":[[218,10]]},"12":{"position":[[352,11]]},"111":{"position":[[123,12]]},"292":{"position":[[538,11]]}}}],["concept",{"_index":754,"t":{"109":{"position":[[89,9]]}}}],["config",{"_index":84,"t":{"8":{"position":[[126,6],[345,6],[1347,6]]},"10":{"position":[[354,6]]},"16":{"position":[[239,6]]},"23":{"position":[[75,6]]},"242":{"position":[[19,7]]},"244":{"position":[[19,7]]},"246":{"position":[[19,7]]},"248":{"position":[[19,7]]},"252":{"position":[[19,7]]}}}],["confirm",{"_index":1152,"t":{"302":{"position":[[59,9]]},"304":{"position":[[59,9]]}}}],["conn",{"_index":122,"t":{"8":{"position":[[832,4],[1682,4]]},"10":{"position":[[518,4]]},"44":{"position":[[75,4]]},"90":{"position":[[128,4]]},"92":{"position":[[116,4]]},"97":{"position":[[107,4],[552,4]]},"99":{"position":[[124,4]]},"101":{"position":[[363,4]]},"103":{"position":[[214,4]]},"105":{"position":[[342,4]]},"119":{"position":[[2166,4],[2425,5]]},"121":{"position":[[1634,4],[1721,4]]},"123":{"position":[[419,4],[537,4]]},"257":{"position":[[599,6]]},"259":{"position":[[201,6]]},"261":{"position":[[724,4]]},"274":{"position":[[418,4]]},"288":{"position":[[444,4]]},"290":{"position":[[455,4]]},"298":{"position":[[761,4]]},"308":{"position":[[481,4]]},"310":{"position":[[1450,5]]}}}],["conn.clos",{"_index":993,"t":{"257":{"position":[[700,13],[1482,13]]}}}],["conn.end",{"_index":445,"t":{"44":{"position":[[210,11]]},"121":{"position":[[1838,12]]},"261":{"position":[[2089,11]]},"274":{"position":[[1214,11]]},"288":{"position":[[1357,11]]},"290":{"position":[[1249,11]]},"298":{"position":[[2124,11]]},"308":{"position":[[1392,11]]}}}],["conn.execute('select",{"_index":444,"t":{"44":{"position":[[161,20]]},"94":{"position":[[108,20]]}}}],["conn.execute>(sql",{"_index":748,"t":{"105":{"position":[[651,53]]}}}],["conn.query>('cal",{"_index":1065,"t":{"261":{"position":[[1624,45]]},"298":{"position":[[1661,45]]}}}],["conn.query('drop",{"_index":1049,"t":{"261":{"position":[[823,33],[1343,33]]},"274":{"position":[[517,33]]},"288":{"position":[[543,33]]},"290":{"position":[[554,33]]},"298":{"position":[[860,33],[1380,33]]},"308":{"position":[[580,33]]}}}],["conn.query(sql",{"_index":733,"t":{"101":{"position":[[460,32]]}}}],["conn.query(sql",{"_index":739,"t":{"103":{"position":[[349,34]]}}}],["conn.query('select",{"_index":717,"t":{"97":{"position":[[185,35]]}}}],["conn.query('show",{"_index":718,"t":{"97":{"position":[[321,33],[797,33]]}}}],["conn.query(sql",{"_index":723,"t":{"99":{"position":[[279,34]]}}}],["conn.query tip You can also utilize React components in the changes option. Example History Version Changes v1.0.0 Some change message.","s":"History","u":"/node-mysql2/docs/contributing/website","h":"#history","p":17},{"i":28,"t":"See the Stability Badges for more detais. import { Stability } from '@site/src/components/Stability'; tip You can also utilize React components in the message option. Available levels: 0, 1, 1.1, 1.2, 2 and 3. Example 2Stable 2Stable Some message.","s":"Stability","u":"/node-mysql2/docs/contributing/website","h":"#stability","p":17},{"i":30,"t":"import { FAQ } from '@site/src/components/FAQ'; > Some markdown (**MDX**) content. tip The FAQ component can be utilized in any section or page. Code blocks are compatible and can be used within the FAQ component. Example Title Some markdown (MDX) content.","s":"FAQ","u":"/node-mysql2/docs/contributing/website","h":"#faq","p":17},{"i":32,"t":"import { ExternalCodeEmbed } from '@site/src/components/ExternalCodeEmbed'; Example","s":"ExternalCodeEmbed","u":"/node-mysql2/docs/contributing/website","h":"#externalcodeembed","p":17},{"i":34,"t":"npm run test Check Prettier and ESLint rules for compliance npm run lintcheck Included in the GitHub Actions workflow. Check for typings errors 1Experimental Checks for MDX components are missing. npm run typecheck Included in the GitHub Actions workflow. Clear and build the website npm run clear npm run build Included in the GitHub Actions workflow. Fix issues from Prettier and ESLint rules npm run lint To prevent lint issues, it is recommended to execute this command before creating your commit. Not included in the GitHub Actions workflow.","s":"Running Tests","u":"/node-mysql2/docs/contributing/website","h":"#running-tests","p":17},{"i":37,"t":"You can use named placeholders for parameters by setting namedPlaceholders config value or query/execute time option. Named placeholders are converted to unnamed ? on the client (mysql protocol does not support named parameters). If you reference parameter multiple times under the same name it is sent to server multiple times. Unnamed placeholders can still be used by providing the values as an array instead of an object. connection.config.namedPlaceholders = true; connection.execute('select :x + :y as z', { x: 1, y: 2 }, (err, rows) => { // statement prepared as \"select ? + ? as z\" and executed with [1,2] values // rows returned: [ { z: 3 } ] }); connection.execute('select :x + :x as z', { x: 1 }, (err, rows) => { // select ? + ? as z, execute with [1, 1] }); connection.query('select :x + :x as z', { x: 1 }, (err, rows) => { // query select 1 + 1 as z }); // unnamed placeholders are still valid if the values are provided in an array connection.query('select ? + ? as z', [1, 1], (err, rows) => { // query select 1 + 1 as z });","s":"Named placeholders","u":"/node-mysql2/docs/documentation/extras","h":"#named-placeholders","p":35},{"i":39,"t":"const options = { sql: 'select A,B,C,D from foo', rowsAsArray: true }; connection.query(options, (err, results) => { /* results will be an array of arrays like this now: [[ 'field A value', 'field B value', 'field C value', 'field D value', ], ...] */ });","s":"Receiving rows as array of columns instead of hash with column name as key:","u":"/node-mysql2/docs/documentation/extras","h":"#receiving-rows-as-array-of-columns-instead-of-hash-with-column-name-as-key","p":35},{"i":41,"t":"In addition to sending local fs files you can send any stream using infileStreamFactory query option. If set, it has to be a function that return a readable stream. It gets file path from query as a parameter. Note: starting from version 2.0 infileStreamFactory is required parameter for LOAD DATA LOCAL INFILE. Response from server indicates that it wants access to a local file and no infileStreamFactory option is provided the query ends with error. // local file connection.query( 'LOAD DATA LOCAL INFILE \"/tmp/data.csv\" INTO TABLE test FIELDS TERMINATED BY ? (id, title)', onInserted1 ); // local stream const sql = 'LOAD DATA LOCAL INFILE \"mystream\" INTO TABLE test FIELDS TERMINATED BY ? (id, title)'; connection.query( { sql: sql, infileStreamFactory: function (path) { return getStream(); }, }, onInserted2 ); The infileStreamFactory option may also be set at a connection-level: const fs = require('fs'); const mysql = require('mysql2'); const connection = mysql.createConnection({ user: 'test', database: 'test', infileStreamFactory: (path) => { // Validate file path const validPaths = ['/tmp/data.csv']; if (!validPaths.includes(path)) { throw new Error( `invalid file path: ${path}: expected to be one of ${validPaths.join( ',' )}` ); } return fs.createReadStream(path); }, }); connection.query( 'LOAD DATA LOCAL INFILE \"/tmp/data.csv\" INTO TABLE test', onInserted );","s":"Sending tabular data with 'load infile' and local stream:","u":"/node-mysql2/docs/documentation/extras","h":"#sending-tabular-data-with-load-infile-and-local-stream","p":35},{"i":43,"t":"const net = require('net'); const mysql = require('mysql2'); const shape = require('shaper'); const connection = mysql.createConnection({ user: 'test', database: 'test', stream: net.connect('/tmp/mysql.sock').pipe(shape(10)), // emulate 10 bytes/sec link }); connection.query('SELECT 1+1 as test1', console.log); stream also can be a function. In that case function result has to be duplex stream, and it is used for connection transport. This is required if you connect pool using custom transport as new pooled connection needs new stream. Example connecting over socks5 proxy: const mysql = require('mysql2'); const SocksConnection = require('socksjs'); const pool = mysql.createPool({ database: 'test', user: 'foo', password: 'bar', stream: function (cb) { const newStream = new SocksConnection( { host: 'remote.host', port: 3306 }, { host: 'localhost', port: 1080 } ); cb(null, newStream); }, }); In addition to password createConnection(), createPool() and changeUser() accept passwordSha1 option. This is useful when implementing proxies as plaintext password might be not available.","s":"Connecting using custom stream:","u":"/node-mysql2/docs/documentation/extras","h":"#connecting-using-custom-stream","p":35},{"i":46,"t":"createServer() - creates server instance Server.listen - listen port / unix socket (same arguments as net.Server.listen)","s":"Server","u":"/node-mysql2/docs/documentation/mysql-server","h":"#server","p":44},{"i":48,"t":"connect new incoming connection.","s":"Events","u":"/node-mysql2/docs/documentation/mysql-server","h":"#events","p":44},{"i":50,"t":"serverHandshake({ serverVersion, protocolVersion, connectionId, statusFlags, characterSet, capabilityFlags }) send server handshake initialisation packet, wait handshake response and start listening for commands writeOk({ affectedRows: num, insertId: num }) send OK packet to client writeEof(warnings, statusFlags) send EOF packet writeTextResult(rows, fields) write query result to client. Rows and fields are in the same format as in connection.query callback. writeColumns(fields) write fields + EOF packets. writeTextRow(row) write array (not hash!) of values as result row TODO: binary protocol","s":"Connection","u":"/node-mysql2/docs/documentation/mysql-server","h":"#connection","p":44},{"i":52,"t":"Every command packet received by the server will be emitted as a packet event with the parameters: packet: Packet The packet itself knownCommand: boolean is this command known to the server *commandCode: number the parsed command code (first byte) In addition special events are emitted for commands received from the client. If no listener is present a fallback behavior will be invoked. quit() Default: close the connection init_db(schemaName: string) Default: return OK query(sql: string) Please attach a listener to this. Default: return HA_ERR_INTERNAL_ERROR field_list(table: string, fields: string) Default: return ER_WARN_DEPRECATED_SYNTAX ping() - Default: return OK","s":"Events","u":"/node-mysql2/docs/documentation/mysql-server","h":"#events-1","p":44},{"i":55,"t":"Similar to connection.query(). connection.execute('select 1 + ? + ? as result', [5, 6], (err, rows) => { // rows: [ { result: 12 } ] // internally 'select 1 + ? + ? as result' is prepared first. On subsequent calls cached statement is re-used }); // close cached statement for 'select 1 + ? + ? as result'. noop if not in cache connection.unprepare('select 1 + ? + ? as result'); Note that connection.execute() will cache the prepared statement for better performance, remove the cache with connection.unprepare() when you're done.","s":"Automatic creation, cached and re-used by connection","u":"/node-mysql2/docs/documentation/prepared-statements","h":"#automatic-creation-cached-and-re-used-by-connection","p":53},{"i":57,"t":"Manually prepared statements doesn't comes with LRU cache and SHOULD be closed using statement.close() instead of connection.unprepare(). connection.prepare('select ? + ? as tests', (err, statement) => { // statement.parameters - array of column definitions, length === number of params, here 2 // statement.columns - array of result column definitions. Can be empty if result schema is dynamic / not known // statement.id // statement.query statement.execute([1, 2], (err, rows, columns) => { // -> [ { tests: 3 } ] }); // don't use connection.unprepare(), it won't work! // note that there is no callback here. There is no statement close ack at protocol level. statement.close(); }); Note that you should not use statement after connection reset (changeUser() or disconnect). Statement scope is connection, you need to prepare statement for each new connection in order to use it.","s":"Manual prepare / execute","u":"/node-mysql2/docs/documentation/prepared-statements","h":"#manual-prepare--execute","p":53},{"i":59,"t":"maxPreparedStatements : We keep the cached statements in a lru-cache. Default size is 16000 but you can use this option to override it. Any statements that are dropped from cache will be closed.","s":"Configuration","u":"/node-mysql2/docs/documentation/prepared-statements","h":"#configuration","p":53},{"i":61,"t":"The bind parameter values passed to execute are serialized JS -> MySQL as: null -> NULL number -> DOUBLE boolean -> TINY (0 for false, 1 for true) object -> depending on prototype: Date -> DATETIME JSON like object - JSON Buffer -> VAR_STRING Other -> VAR_STRING Passing in undefined or a function will result in an error.","s":"Serialization of bind parameters","u":"/node-mysql2/docs/documentation/prepared-statements","h":"#serialization-of-bind-parameters","p":53},{"i":63,"t":"MySQL2 provides execute helper which will prepare and query the statement. You can also manually prepare / unprepare statement with prepare / unprepare methods. connection.execute( 'select ?+1 as qqq, ? as rrr, ? as yyy', [1, null, 3], (err, rows, fields) => { console.log(err, rows, fields); connection.execute( 'select ?+1 as qqq, ? as rrr, ? as yyy', [3, null, 3], (err, rows, fields) => { console.log(err, rows, fields); connection.unprepare('select ?+1 as qqq, ? as rrr, ? as yyy'); connection.execute( 'select ?+1 as qqq, ? as rrr, ? as yyy', [3, null, 3], (err, rows, fields) => { console.log(err, rows, fields); } ); } ); } );","s":"Prepared Statements Helper","u":"/node-mysql2/docs/documentation/prepared-statements","h":"#prepared-statements-helper","p":53},{"i":65,"t":"For Prepared Statements examples, please see here.","s":"Examples","u":"/node-mysql2/docs/documentation/prepared-statements","h":"#examples","p":53},{"i":67,"t":"During the connection phase the server may ask the client to switch to a different auth method. If the authPlugins connection config option is set, it must be an object where each key is the name of a potential authentication plugin requested by the server, and the corresponding value must be a function that optionally receives the connection config options and returns another function, which in turn, optionally receives the switch request data. The plugin is loaded with a ({user,password,...}) signature, and each call has a (pluginData) signature. Each call should make the plugin return any additional authentication data (Buffer) that should be sent back to the server, either synchronously or asynchronously using a Promise, or should yield an error accordingly. Example: (imaginary ssh-key-auth plugin) pseudo code const conn = mysql.createConnection({ user: 'test_user', password: 'test', database: 'test_database', authPlugins: { 'ssh-key-auth': function ({ password }) { return function (pluginData) { return getPrivate(key) .then((key) => { const response = encrypt(key, password, pluginData); // continue handshake by sending response data return response; }) .catch((err) => { // throw error to propagate error to connect/changeUser handlers }); }; }, }, }); There is also a deprecated API where if a authSwitchHandler connection config option is set it must be a function that receives switch request data and responds via a callback. In this case, the first invocation always has a ({pluginName, pluginData}) signature, following calls - ({pluginData}). The client replies with an opaque blob matching the requested plugin via callback(null, data: Buffer). const conn = mysql.createConnection({ user: 'test_user', password: 'test', database: 'test_database', authSwitchHandler: function ({ pluginName, pluginData }, cb) { if (pluginName === 'ssh-key-auth') { getPrivateKey((key) => { const response = encrypt(key, pluginData); // continue handshake by sending response data // respond with error to propagate error to connect/changeUser handlers cb(null, response); }); } else { const err = new Error( `Unknown AuthSwitchRequest plugin name ${pluginName}` ); err.fatal = true; cb(err); } }, }); The initial handshake is always performed using mysql_native_password plugin. This will be possible to override in future versions. Note that if the mysql_native_password method is requested it will be handled internally according to Authentication::Native41 and no authPlugins function or the authSwitchHandler will be invoked. These MAY be called multiple times if the plugin algorithm requires multiple roundtrips of data exchange between client and server.","s":"Authentication Switch Request","u":"/node-mysql2/docs/documentation/authentication-switch","h":"","p":66},{"i":69,"t":"If the user requires multi-factor authentication in the server, the client will receive a AuthNextFactor request, which is similar in structure to the regular authentication switch request and contains the name and possible initial data for the additional authentication factor plugin (up to 3). Additional passwords can be provided using the connection config options - password2 and password3. Again, for each authentication factor, multiple roundtrips of data exchange can be required by the plugin algoritm. const conn = mysql.createConnection({ user: 'test_user', password: 'secret1', password2: 'secret2', password3: 'secret3', database: 'test_database', authPlugins: { // password1 === password 'auth-plugin1': function ({ password1 }) { return function (serverPluginData) { return clientPluginData(password1, serverPluginData); }; }, 'auth-plugin2': function ({ password2 }) { return function (serverPluginData) { return clientPluginData(password2, serverPluginData); }; }, 'auth-plugin3': function ({ password3 }) { return function (serverPluginData) { return clientPluginData(password3, serverPluginData); }; }, }, });","s":"Multi-factor authentication","u":"/node-mysql2/docs/documentation/authentication-switch","h":"#multi-factor-authentication","p":66},{"i":72,"t":"npm install --save mysql2 npm install --save-dev @types/node The @types/node ensure the proper interaction between TypeScript and the Node.js modules used by MySQL2 (net, events, stream, tls, etc.). info Requires TypeScript >=4.5.2.","s":"Installation","u":"/node-mysql2/docs/documentation/typescript-examples","h":"#installation","p":70},{"i":74,"t":"You can import MySQL2 in two ways: By setting the esModuleInterop option to true in tsconfig.json import mysql from 'mysql2'; import mysql from 'mysql2/promise'; By setting the esModuleInterop option to false in tsconfig.json import * as mysql from 'mysql2'; import * as mysql from 'mysql2/promise';","s":"Usage","u":"/node-mysql2/docs/documentation/typescript-examples","h":"#usage","p":70},{"i":76,"t":"import mysql, { ConnectionOptions } from 'mysql2'; const access: ConnectionOptions = { user: 'test', database: 'test', }; const conn = mysql.createConnection(access);","s":"Connection","u":"/node-mysql2/docs/documentation/typescript-examples","h":"#connection","p":70},{"i":78,"t":"import mysql, { PoolOptions } from 'mysql2'; const access: PoolOptions = { user: 'test', database: 'test', }; const conn = mysql.createPool(access);","s":"Pool Connection","u":"/node-mysql2/docs/documentation/typescript-examples","h":"#pool-connection","p":70},{"i":80,"t":"A simple query conn.query('SELECT 1 + 1 AS `test`;', (_err, rows) => { /** * @rows: [ { test: 2 } ] */ }); conn.execute('SELECT 1 + 1 AS `test`;', (_err, rows) => { /** * @rows: [ { test: 2 } ] */ }); The rows output will be these possible types: RowDataPacket[] RowDataPacket[][] ResultSetHeader ResultSetHeader[] ProcedureCallPacket In this example, you need to manually check the output types","s":"Query and Execute","u":"/node-mysql2/docs/documentation/typescript-examples","h":"#query-and-execute","p":70},{"i":83,"t":"2Stable An array with the returned rows, for example: import mysql, { RowDataPacket } from 'mysql2'; const conn = mysql.createConnection({ user: 'test', database: 'test', }); // SELECT conn.query('SELECT 1 + 1 AS `test`;', (_err, rows) => { console.log(rows); /** * @rows: [ { test: 2 } ] */ }); // SHOW conn.query('SHOW TABLES FROM `test`;', (_err, rows) => { console.log(rows); /** * @rows: [ { Tables_in_test: 'test' } ] */ }); Using rowsAsArray option as true: import mysql, { RowDataPacket } from 'mysql2'; const conn = mysql.createConnection({ user: 'test', database: 'test', rowsAsArray: true, }); // SELECT conn.query( 'SELECT 1 + 1 AS test, 2 + 2 AS test;', (_err, rows) => { console.log(rows); /** * @rows: [ [ 2, 4 ] ] */ } ); // SHOW conn.query('SHOW TABLES FROM `test`;', (_err, rows) => { console.log(rows); /** * @rows: [ [ 'test' ] ] */ });","s":"RowDataPacket[]","u":"/node-mysql2/docs/documentation/typescript-examples","h":"#rowdatapacket","p":70},{"i":85,"t":"2Stable Using multipleStatements option as true with multiple queries: import mysql, { RowDataPacket } from 'mysql2'; const conn = mysql.createConnection({ user: 'test', database: 'test', multipleStatements: true, }); const sql = ` SELECT 1 + 1 AS test; SELECT 2 + 2 AS test; `; conn.query(sql, (_err, rows) => { console.log(rows); /** * @rows: [ [ { test: 2 } ], [ { test: 4 } ] ] */ });","s":"RowDataPacket[][]","u":"/node-mysql2/docs/documentation/typescript-examples","h":"#rowdatapacket-1","p":70},{"i":87,"t":"2Stable History Version Changes v3.5.1 OkPacket is deprecated and might be removed in the future major release. Please use ResultSetHeader instead. changedRows option is deprecated and might be removed in the future major release. Please use affectedRows instead. For INSERT, UPDATE, DELETE, TRUNCATE, etc.: import mysql, { ResultSetHeader } from 'mysql2'; const conn = mysql.createConnection({ user: 'test', database: 'test', }); const sql = ` SET @1 = 1; `; conn.query(sql, (_err, result) => { console.log(result); /** * @result: ResultSetHeader { fieldCount: 0, affectedRows: 0, insertId: 0, info: '', serverStatus: 2, warningStatus: 0, changedRows: 0 } */ });","s":"ResultSetHeader","u":"/node-mysql2/docs/documentation/typescript-examples","h":"#resultsetheader","p":70},{"i":89,"t":"2Stable History Version Changes v3.5.1 Introduce ResultSetHeader[] For multiples INSERT, UPDATE, DELETE, TRUNCATE, etc. when using multipleStatements as true: import mysql, { ResultSetHeader } from 'mysql2'; const conn = mysql.createConnection({ user: 'test', database: 'test', multipleStatements: true, }); const sql = ` SET @1 = 1; SET @2 = 2; `; conn.query(sql, (_err, results) => { console.log(results); /** * @results: [ ResultSetHeader { fieldCount: 0, affectedRows: 0, insertId: 0, info: '', serverStatus: 10, warningStatus: 0, changedRows: 0 }, ResultSetHeader { fieldCount: 0, affectedRows: 0, insertId: 0, info: '', serverStatus: 2, warningStatus: 0, changedRows: 0 } ] */ });","s":"ResultSetHeader[]","u":"/node-mysql2/docs/documentation/typescript-examples","h":"#resultsetheader-1","p":70},{"i":91,"t":"2Stable History Version Changes v3.5.1 Introduce ProcedureCallPacket tip By performing a Call Procedure using INSERT, UPDATE, etc., the return will be a ProcedureCallPacket (even if you perform multiples queries and set multipleStatements to true): import mysql, { ProcedureCallPacket, ResultSetHeader } from 'mysql2'; const conn = mysql.createConnection({ user: 'test', database: 'test', }); /** ResultSetHeader */ conn.query('DROP PROCEDURE IF EXISTS myProcedure'); /** ResultSetHeader */ conn.query(` CREATE PROCEDURE myProcedure() BEGIN SET @1 = 1; SET @2 = 2; END `); /** ProcedureCallPacket */ const sql = 'CALL myProcedure()'; conn.query>(sql, (_err, result) => { console.log(result); /** * @result: ResultSetHeader { fieldCount: 0, affectedRows: 0, insertId: 0, info: '', serverStatus: 2, warningStatus: 0, changedRows: 0 } */ }); For CREATE PROCEDURE and DROP PROCEDURE, these returns will be the default ResultSetHeader. By using SELECT and SHOW queries in a Procedure Call, it groups the results as: /** ProcedureCallPacket */ [RowDataPacket[], ResultSetHeader] For ProcedureCallPacket, please see the following examples.","s":"ProcedureCallPacket","u":"/node-mysql2/docs/documentation/typescript-examples","h":"#procedurecallpacket","p":70},{"i":93,"t":"0Deprecated OkPacket is deprecated and might be removed in the future major release. Please use ResultSetHeader instead.","s":"OkPacket","u":"/node-mysql2/docs/documentation/typescript-examples","h":"#okpacket","p":70},{"i":95,"t":"You can also check some code examples using MySQL2 and TypeScript to understand advanced concepts: Extending and using Interfaces with RowDataPacket Extending and using Interfaces with RowDataPacket and rowAsArray Extending and using Interfaces with RowDataPacket and multipleStatements Extending and using Interfaces with RowDataPacket, rowAsArray and multipleStatements Checking for ResultSetHeader, extending and using Interfaces with RowDataPacket from ProcedureCallPacket Checking for ResultSetHeader, extending and using Interfaces with RowDataPacket and rowAsArray from ProcedureCallPacket Creating a basic custom MySQL2 Class","s":"Examples","u":"/node-mysql2/docs/documentation/typescript-examples","h":"#examples","p":70},{"i":97,"t":"tip To explore the examples, please use the sidebar navigation on desktop or access the menu on mobile devices.","s":"Examples","u":"/node-mysql2/docs/examples","h":"","p":96},{"i":99,"t":"MySQL-pg-proxy - MySQL to Postgres proxy server. MySQLite.js - MySQL server with JS-only (emscripten compiled) sqlite backend. SQL-engine - MySQL server with LevelDB backend. MySQL-osquery-proxy - Connect to facebook osquery using MySQL client PlyQL - Connect to Druid using MySQL client","s":"Examples using MySQL server API","u":"/node-mysql2/docs/examples","h":"#examples-using-mysql-server-api","p":96},{"i":101,"t":"In addition to errback interface there is thin wrapper to expose Promise-based api","s":"Promise Wrappers","u":"/node-mysql2/docs/documentation/promise-wrapper","h":"","p":100},{"i":103,"t":"/* eslint-env es6 */ const mysql = require('mysql2/promise'); // or require('mysql2').createConnectionPromise mysql .createConnection({ /* same parameters as for non-promise createConnection */ }) .then((conn) => conn.query('select foo from bar')) .then(([rows, fields]) => console.log(rows[0].foo)); const pool = require('mysql2/promise').createPool({}); // or require('mysql2').createPoolPromise({}) or require('mysql2').createPool({}).promise() pool .getConnection() .then((conn) => { const res = conn.query('select foo from bar'); conn.release(); return res; }) .then((result) => { console.log(result[0][0].foo); }) .catch((err) => { console.log(err); // any of connection time or query time errors from above });","s":"Basic Promise","u":"/node-mysql2/docs/documentation/promise-wrapper","h":"#basic-promise","p":100},{"i":105,"t":"async function example1() { const mysql = require('mysql2/promise'); const conn = await mysql.createConnection({ database: test }); const [rows, fields] = await conn.execute('select ?+? as sum', [2, 2]); await conn.end(); } async function example2() { const mysql = require('mysql2/promise'); const pool = mysql.createPool({ database: test }); // execute in parallel, next console.log in 3 seconds await Promise.all([ pool.query('select sleep(2)'), pool.query('select sleep(3)'), ]); console.log('3 seconds after'); await pool.end(); }","s":"ES7 Async Await","u":"/node-mysql2/docs/documentation/promise-wrapper","h":"#es7-async-await","p":100},{"i":107,"t":"const mysql = require('mysql2'); const co = require('co'); co(function* () { const c = yield mysql.createConnectionPromise({ user: 'root', namedPlaceholders: true, }); const rows = yield c.query('show databases'); console.log(rows); console.log(yield c.execute('select 1+:toAdd as qqq', { toAdd: 10 })); yield c.end(); }); Examples in /examples/promise-co-await","s":"With CO","u":"/node-mysql2/docs/documentation/promise-wrapper","h":"#with-co","p":100},{"i":109,"t":"info For queries please see the Simple Queries and Prepared Statements examples.","s":"createConnection","u":"/node-mysql2/docs/examples/connections/create-connection","h":"","p":108},{"i":111,"t":"createConnection(connectionUri: string) promise.js callback.js import mysql from 'mysql2/promise'; try { const connection = await mysql.createConnection( 'mysql://root:password@localhost:3306/test' ); } catch (err) { console.log(err); } const mysql = require('mysql2'); const connection = mysql.createConnection( 'mysql://root:password@localhost:3306/test' ); connection.addListener('error', (err) => { console.log(err); });","s":"createConnection(connectionUri)","u":"/node-mysql2/docs/examples/connections/create-connection","h":"#createconnectionconnectionuri","p":108},{"i":113,"t":"createConnection(config: ConnectionOptions) promise.js callback.js import mysql from 'mysql2/promise'; try { const connection = await mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', // port: 3306, // password: '', }); } catch (err) { console.log(err); } const mysql = require('mysql2'); const connection = mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', // port: 3306, // password: '', }); connection.addListener('error', (err) => { console.log(err); });","s":"createConnection(config)","u":"/node-mysql2/docs/examples/connections/create-connection","h":"#createconnectionconfig","p":108},{"i":115,"t":"createConnection(config: ConnectionOptions) promise.js callback.js import mysql from 'mysql2/promise'; try { const connection = await mysql.createConnection({ // ... passwordSha1: Buffer.from( '8bb6118f8fd6935ad0876a3be34a717d32708ffd', 'hex' ), }); } catch (err) { console.log(err); } const mysql = require('mysql2'); const connection = mysql.createConnection({ // ... passwordSha1: Buffer.from('8bb6118f8fd6935ad0876a3be34a717d32708ffd', 'hex'), }); connection.addListener('error', (err) => { console.log(err); });","s":"createConnection(config) — SHA1","u":"/node-mysql2/docs/examples/connections/create-connection","h":"#createconnectionconfig--sha1","p":108},{"i":117,"t":"createConnection(config: ConnectionOptions) promise.js callback.js certs/ca-cert.pem import mysql from 'mysql2/promise'; try { const connection = await mysql.createConnection({ // ... ssl: { // key: fs.readFileSync('./certs/client-key.pem'), // cert: fs.readFileSync('./certs/client-cert.pem') ca: fs.readFileSync('./certs/ca-cert.pem'), }, }); } catch (err) { console.log(err); } const mysql = require('mysql2'); const connection = mysql.createConnection({ // ... ssl: { // key: fs.readFileSync('./certs/client-key.pem'), // cert: fs.readFileSync('./certs/client-cert.pem') ca: fs.readFileSync('./certs/ca-cert.pem'), }, }); connection.addListener('error', (err) => { console.log(err); }); See ssl/certs.","s":"createConnection(config) — SSL","u":"/node-mysql2/docs/examples/connections/create-connection","h":"#createconnectionconfig--ssl","p":108},{"i":119,"t":"createConnection(config: ConnectionOptions) You can use Amazon RDS string as value to ssl property to connect to Amazon RDS MySQL over SSL. In that case https://s3.amazonaws.com/rds-downloads/mysql-ssl-ca-cert.pem CA cert is used: promise.js callback.js import mysql from 'mysql2/promise'; try { const connection = await mysql.createConnection({ // ... host: 'db.id.ap-southeast-2.rds.amazonaws.com', ssl: 'Amazon RDS', }); } catch (err) { console.log(err); } Testing try { const [res] = await connection.query('SHOW `status` LIKE \"Ssl_cipher\"'); await connection.end(); console.log(res); } catch (err) { console.log(err); } const mysql = require('mysql2'); const connection = mysql.createConnection({ // ... host: 'db.id.ap-southeast-2.rds.amazonaws.com', ssl: 'Amazon RDS', }); connection.addListener('error', (err) => { console.log(err); }); Testing connectionquery('SHOW `status` LIKE \"Ssl_cipher\"', function (err, res) { connection.end(); if (err instanceof Error) { console.log(err); return; } console.log(res); });","s":"createConnection(config) — RDS SSL","u":"/node-mysql2/docs/examples/connections/create-connection","h":"#createconnectionconfig--rds-ssl","p":108},{"i":121,"t":"Issues #2130 — Update TLS certs for Amazon RDS instances Pull Requests #2119 — fix: make startTls code compatible with Bun #2131 — Update Amazon RDS SSL CA cert","s":"Related Links","u":"/node-mysql2/docs/examples/connections/create-connection","h":"#related-links","p":108},{"i":123,"t":"createConnection(config: ConnectionOptions) A.js B.js const mysql = require('mysql2'); const SocksConnection = require('socksjs'); const socksProxy = new SocksConnection({ port: 3306 }); const connection = mysql.createConnection({ stream: socksProxy, }); connection.addListener('error', (err) => { console.log(err); }); const mysql = require('mysql2'); const SocksConnection = require('socksjs'); const connection = mysql.createConnection({ debug: 1, stream: function () { return new SocksConnection({ port: 3306 }); }, }); connection.addListener('error', (err) => { console.log(err); }); Testing connection.execute('SELECT SLEEP(1.1) AS `www`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); }); connection.execute('SELECT SLEEP(1) AS `qqq`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); }); connection.execute('SELECT SLEEP(1) AS `qqq`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); });","s":"createConnection(config) — Socks","u":"/node-mysql2/docs/examples/connections/create-connection","h":"#createconnectionconfig--socks","p":108},{"i":126,"t":"ConnectionOptions Specification","s":"ConnectionOptions","u":"/node-mysql2/docs/examples/connections/create-connection","h":"#connectionoptions","p":108},{"i":128,"t":"index.js 'use strict'; const mysql = require('mysql2'); const through2 = require('through2'); const binlogStream = mysql.createBinlogStream({ serverId: 123, // slave ID, first field in \"show slave hosts\" sql response // you can also specify slave host, username, password and port masterId: 0, filename: 'mysql-bin.000007', binlogPos: 120, flags: 1, // 1 = \"non-blocking mode\" }); binlogStream.pipe( through2.obj((obj, enc, next) => { console.log(obj); next(); }) );","s":"Binlog Watcher","u":"/node-mysql2/docs/examples/binlog-watcher","h":"","p":127},{"i":130,"t":"MySQL client for Node.js with focus on performance. Supports prepared statements, non-utf8 encodings, binary log protocol, compression, ssl much more.","s":"MySQL2","u":"/node-mysql2/docs","h":"","p":129},{"i":132,"t":"MySQL2 is free from native bindings and can be installed on Linux, Mac OS or Windows without any issues. JavaScript TypeScript npm install --save mysql2 npm install --save mysql2 npm install --save-dev @types/node For TypeScript documentation and examples, see here.","s":"Installation","u":"/node-mysql2/docs","h":"#installation","p":129},{"i":134,"t":"To explore more queries examples, please visit the example sections Simple Queries and Prepared Statements. Promise Callback // Get the client import mysql from 'mysql2/promise'; // Create the connection to database const connection = await mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', }); // A simple SELECT query try { const [results, fields] = await connection.query( 'SELECT * FROM `table` WHERE `name` = \"Page\" AND `age` > 45' ); console.log(results); // results contains rows returned by server console.log(fields); // fields contains extra meta data about results, if available } catch (err) { console.log(err); } // Using placeholders try { const [results] = await connection.query( 'SELECT * FROM `table` WHERE `name` = ? AND `age` > ?', ['Page', 45] ); console.log(results); } catch (err) { console.log(err); } // Get the client const mysql = require('mysql2'); // Create the connection to database const connection = mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', }); // A simple SELECT query connection.query( 'SELECT * FROM `table` WHERE `name` = \"Page\" AND `age` > 45', function (err, results, fields) { console.log(results); // results contains rows returned by server console.log(fields); // fields contains extra meta data about results, if available } ); // Using placeholders connection.query( 'SELECT * FROM `table` WHERE `name` = ? AND `age` > ?', ['Page', 45], function (err, results) { console.log(results); } );","s":"First Query","u":"/node-mysql2/docs","h":"#first-query","p":129},{"i":136,"t":"With MySQL2 you also get the prepared statements. With prepared statements MySQL doesn't have to prepare plan for same query every time, this results in better performance. If you don't know why they are important, please check these discussions: How prepared statements can protect from SQL Injection attacks MySQL2 provides execute helper which will prepare and query the statement. You can also manually prepare / unprepare statement with prepare / unprepare methods. To explore more Prepared Statements and Placeholders examples, please visit the example section Prepared Statements. Promise Callback import mysql from 'mysql2/promise'; try { // create the connection to database const connection = await mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', }); // execute will internally call prepare and query const [results, fields] = await connection.execute( 'SELECT * FROM `table` WHERE `name` = ? AND `age` > ?', ['Rick C-137', 53] ); console.log(results); // results contains rows returned by server console.log(fields); // fields contains extra meta data about results, if available } catch (err) { console.log(err); } const mysql = require('mysql2'); // create the connection to database const connection = mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', }); // execute will internally call prepare and query connection.execute( 'SELECT * FROM `table` WHERE `name` = ? AND `age` > ?', ['Rick C-137', 53], function (err, results, fields) { console.log(results); // results contains rows returned by server console.log(fields); // fields contains extra meta data about results, if available } ); tip If you execute same statement again, it will be picked from a LRU cache which will save query preparation time and give better performance.","s":"Using Prepared Statements","u":"/node-mysql2/docs","h":"#using-prepared-statements","p":129},{"i":138,"t":"Connection pools help reduce the time spent connecting to the MySQL server by reusing a previous connection, leaving them open instead of closing when you are done with them. This improves the latency of queries as you avoid all of the overhead that comes with establishing a new connection. To explore more Connection Pools examples, please visit the example section createPool. Promise Callback import mysql from 'mysql2/promise'; // Create the connection pool. The pool-specific settings are the defaults const pool = mysql.createPool({ host: 'localhost', user: 'root', database: 'test', waitForConnections: true, connectionLimit: 10, maxIdle: 10, // max idle connections, the default value is the same as `connectionLimit` idleTimeout: 60000, // idle connections timeout, in milliseconds, the default value 60000 queueLimit: 0, enableKeepAlive: true, keepAliveInitialDelay: 0, }); const mysql = require('mysql2'); // Create the connection pool. The pool-specific settings are the defaults const pool = mysql.createPool({ host: 'localhost', user: 'root', database: 'test', waitForConnections: true, connectionLimit: 10, maxIdle: 10, // max idle connections, the default value is the same as `connectionLimit` idleTimeout: 60000, // idle connections timeout, in milliseconds, the default value 60000 queueLimit: 0, enableKeepAlive: true, keepAliveInitialDelay: 0, }); note The pool does not create all connections upfront but creates them on demand until the connection limit is reached. You can use the pool in the same way as connections (using pool.query() and pool.execute()): Promise Callback try { // For pool initialization, see above const [rows, fields] = await pool.query('SELECT `field` FROM `table`'); // Connection is automatically released when query resolves } catch (err) { console.log(err); } // For pool initialization, see above pool.query('SELECT `field` FROM `table`', function (err, rows, fields) { // Connection is automatically released when query resolves }); Alternatively, there is also the possibility of manually acquiring a connection from the pool and returning it later: Promise Callback // For pool initialization, see above const conn = await pool.getConnection(); // Do something with the connection await conn.query(/* ... */); // Don't forget to release the connection when finished! pool.releaseConnection(conn); // For pool initialization, see above pool.getConnection(function (err, conn) { // Do something with the connection conn.query(/* ... */); // Don't forget to release the connection when finished! pool.releaseConnection(conn); }); Additionally, directly release the connection using the connection object: conn.release();","s":"Using Connection Pools","u":"/node-mysql2/docs","h":"#using-connection-pools","p":129},{"i":140,"t":"MySQL2 also support Promise API. Which works very well with ES7 async await. import mysql from 'mysql2/promise'; async function main() { // create the connection const connection = await mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', }); // query database const [rows, fields] = await connection.execute( 'SELECT * FROM `table` WHERE `name` = ? AND `age` > ?', ['Morty', 14] ); } MySQL2 use default Promise object available in scope. But you can choose which Promise implementation you want to use. // get the client import mysql from 'mysql2/promise'; // get the promise implementation, we will use bluebird import bluebird from 'bluebird'; // create the connection, specify bluebird as Promise const connection = await mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', Promise: bluebird, }); // query database const [rows, fields] = await connection.execute( 'SELECT * FROM `table` WHERE `name` = ? AND `age` > ?', ['Morty', 14] ); MySQL2 also exposes a .promise() function on Pools, so you can create a promise/non-promise connections from the same pool. import mysql from 'mysql2'; async function main() { // create the pool const pool = mysql.createPool({ host: 'localhost', user: 'root', database: 'test', }); // now get a Promise wrapped instance of that pool const promisePool = pool.promise(); // query database using promises const [rows, fields] = await promisePool.query('SELECT 1'); } MySQL2 exposes a .promise() function on Connections, to \"upgrade\" an existing non-promise connection to use promise. const mysql = require('mysql2'); // create the connection const conn = mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', }); conn .promise() .query('SELECT 1') .then(([rows, fields]) => { console.log(rows); }) .catch(console.log) .then(() => conn.end());","s":"Using Promise Wrapper","u":"/node-mysql2/docs","h":"#using-promise-wrapper","p":129},{"i":142,"t":"If you have two columns with the same name, you might want to get results as an array rather than an object to prevent them from clashing. This is a deviation from the Node MySQL library. For example: SELECT 1 AS `foo`, 2 AS `foo`. You can enable this setting at either the connection level (applies to all queries), or at the query level (applies only to that specific query). Connection Level Promise Callback const conn = await mysql.createConnection({ host: 'localhost', database: 'test', user: 'root', rowsAsArray: true, }); const conn = mysql.createConnection({ host: 'localhost', database: 'test', user: 'root', rowsAsArray: true, }); Query Level Promise Callback try { const [results, fields] = await conn.query({ sql: 'SELECT 1 AS `foo`, 2 AS `foo`', rowsAsArray: true, }); console.log(results); // in this query, results will be an array of arrays rather than an array of objects console.log(fields); // fields are unchanged } catch (err) { console.log(err); } conn.query( { sql: 'SELECT 1 AS `foo`, 2 AS `foo`', rowsAsArray: true, }, function (err, results, fields) { console.log(results); // in this query, results will be an array of arrays rather than an array of objects console.log(fields); // fields are unchanged } ); Getting Help Need help? Ask your question on Stack Overflow or GitHub. If you've encountered an issue, please file it on GitHub.","s":"Array Results","u":"/node-mysql2/docs","h":"#array-results","p":129},{"i":144,"t":"MySQL2 provides execute helper which will prepare and query the statement. You can also manually prepare / unprepare statement with prepare / unprepare methods. See detailed documentaion in Prepared Statements. tip If you execute same statement again, it will be picked form a LRU cache which will save query preparation time and give better performance. Usage examples: INSERT SELECT UPDATE DELETE","s":"Prepared Statements","u":"/node-mysql2/docs/examples/queries/prepared-statements","h":"","p":143},{"i":146,"t":"info For queries please see the Simple Queries and Prepared Statements examples.","s":"createPool","u":"/node-mysql2/docs/examples/connections/create-pool","h":"","p":145},{"i":148,"t":"createPool(connectionUri: string) promise.js callback.js import mysql from 'mysql2/promise'; try { const pool = mysql.createPool('mysql://root:password@localhost:3306/test'); const connection = await pool.getConnection(); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const pool = mysql.createPool('mysql://root:password@localhost:3306/test'); pool.getConnection(function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); warning Don't forget to release the connection when finished by using: pool.releaseConnection(connection) connection.release()","s":"createPool(connectionUri)","u":"/node-mysql2/docs/examples/connections/create-pool","h":"#createpoolconnectionuri","p":145},{"i":150,"t":"createPool(config: PoolOptions) promise.js callback.js import mysql from 'mysql2/promise'; try { const pool = mysql.createPool({ host: 'localhost', user: 'root', database: 'test', // port: 3306, // password: '', }); const connection = await pool.getConnection(); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const pool = mysql.createPool({ host: 'localhost', user: 'root', database: 'test', // port: 3306, // password: '', }); pool.getConnection(function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); warning Don't forget to release the connection when finished by using: pool.releaseConnection(connection) connection.release()","s":"createPool(config)","u":"/node-mysql2/docs/examples/connections/create-pool","h":"#createpoolconfig","p":145},{"i":152,"t":"createPool(config: PoolOptions) promise.js callback.js import mysql from 'mysql2/promise'; try { const pool = mysql.createPool({ // ... passwordSha1: Buffer.from( '8bb6118f8fd6935ad0876a3be34a717d32708ffd', 'hex' ), }); const connection = await pool.getConnection(); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const pool = mysql.createPool({ // ... passwordSha1: Buffer.from('8bb6118f8fd6935ad0876a3be34a717d32708ffd', 'hex'), }); pool.getConnection(function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); warning Don't forget to release the connection when finished by using: pool.releaseConnection(connection) connection.release()","s":"createPool(config) — SHA1","u":"/node-mysql2/docs/examples/connections/create-pool","h":"#createpoolconfig--sha1","p":145},{"i":154,"t":"createPool(config: PoolOptions) promise.js callback.js certs/ca-cert.pem import mysql from 'mysql2/promise'; try { const pool = mysql.createPool({ // ... ssl: { // key: fs.readFileSync('./certs/client-key.pem'), // cert: fs.readFileSync('./certs/client-cert.pem') ca: fs.readFileSync('./certs/ca-cert.pem'), }, }); const connection = await pool.getConnection(); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const pool = mysql.createPool({ // ... ssl: { // key: fs.readFileSync('./certs/client-key.pem'), // cert: fs.readFileSync('./certs/client-cert.pem') ca: fs.readFileSync('./certs/ca-cert.pem'), }, }); pool.getConnection(function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); See ssl/certs. warning Don't forget to release the connection when finished by using: pool.releaseConnection(connection) connection.release()","s":"createPool(config) — SSL","u":"/node-mysql2/docs/examples/connections/create-pool","h":"#createpoolconfig--ssl","p":145},{"i":156,"t":"createPool(config: PoolOptions) You can use Amazon RDS string as value to ssl property to connect to Amazon RDS MySQL over SSL. In that case https://s3.amazonaws.com/rds-downloads/mysql-ssl-ca-cert.pem CA cert is used: promise.js callback.js import mysql from 'mysql2/promise'; try { const pool = mysql.createPool({ // ... host: 'db.id.ap-southeast-2.rds.amazonaws.com', ssl: 'Amazon RDS', }); const connection = await pool.getConnection(); // ... some query connection.release(); } catch (err) { console.log(err); } Testing try { const [res] = await connection.query('SHOW `status` LIKE \"Ssl_cipher\"'); await pool.end(); console.log(res); } catch (err) { console.log(err); } const mysql = require('mysql2'); const pool = mysql.createPool({ // ... host: 'db.id.ap-southeast-2.rds.amazonaws.com', ssl: 'Amazon RDS', }); pool.getConnection(function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); Testing connectionquery('SHOW `status` LIKE \"Ssl_cipher\"', function (err, res) { pool.end(); if (err instanceof Error) { console.log(err); return; } console.log(res); }); warning Don't forget to release the connection when finished by using: pool.releaseConnection(connection) connection.release()","s":"createPool(config) — RDS SSL","u":"/node-mysql2/docs/examples/connections/create-pool","h":"#createpoolconfig--rds-ssl","p":145},{"i":158,"t":"Issues #2130 — Update TLS certs for Amazon RDS instances Pull Requests #2119 — fix: make startTls code compatible with Bun #2131 — Update Amazon RDS SSL CA cert","s":"Related Links","u":"/node-mysql2/docs/examples/connections/create-pool","h":"#related-links","p":145},{"i":160,"t":"createPool(config: PoolOptions) A.js B.js const mysql = require('mysql2'); const SocksConnection = require('socksjs'); const socksProxy = new SocksConnection({ port: 3306 }); const pool = mysql.createPool({ stream: socksProxy, }); const mysql = require('mysql2'); const SocksConnection = require('socksjs'); const pool = mysql.createPool({ debug: 1, stream: function () { return new SocksConnection({ port: 3306 }); }, }); Testing pool.execute('SELECT SLEEP(1.1) AS `www`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); }); pool.execute('SELECT SLEEP(1) AS `qqq`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); }); pool.execute('SELECT SLEEP(1) AS `qqq`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); });","s":"createPool(config) — Socks","u":"/node-mysql2/docs/examples/connections/create-pool","h":"#createpoolconfig--socks","p":145},{"i":163,"t":"PoolOptions extends all options from ConnectionOptions: ConnectionOptions Specification PoolOptions Specification","s":"PoolOptions","u":"/node-mysql2/docs/examples/connections/create-pool","h":"#pooloptions","p":145},{"i":166,"t":"execute(sql: string, values: any[]) promise.js callback.js try { const sql = 'DELETE FROM `users` WHERE `name` = ? LIMIT 1'; const values = ['Page']; const [result, fields] = await connection.execute(sql, values); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'DELETE FROM `users` WHERE `name` = ? LIMIT 1'; const values = ['Page']; connection.execute(sql, values, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); }); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(sql, values)","u":"/node-mysql2/docs/examples/queries/prepared-statements/delete","h":"#executesql-values","p":164},{"i":168,"t":"execute(options: QueryOptions) promise.js callback.js try { const sql = 'DELETE FROM `users` WHERE `name` = ? LIMIT 1'; const values = ['Page']; const [result, fields] = await connection.execute({ sql, values, // ... other options }); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'DELETE FROM `users` WHERE `name` = ? LIMIT 1'; const values = ['Page']; connection.execute( { sql, values, // ... other options }, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options)","u":"/node-mysql2/docs/examples/queries/prepared-statements/delete","h":"#executeoptions","p":164},{"i":170,"t":"execute(options: QueryOptions, values: any[]) promise.js callback.js try { const sql = 'DELETE FROM `users` WHERE `name` = ? LIMIT 1'; const values = ['Page']; const [result, fields] = await connection.execute( { sql, // ... other options }, values ); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'DELETE FROM `users` WHERE `name` = ? LIMIT 1'; const values = ['Page']; connection.execute( { sql, // ... other options }, values, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options, values)","u":"/node-mysql2/docs/examples/queries/prepared-statements/delete","h":"#executeoptions-values","p":164},{"i":173,"t":"ResultSetHeader Specification","s":"ResultSetHeader","u":"/node-mysql2/docs/examples/queries/prepared-statements/delete","h":"#resultsetheader","p":164},{"i":175,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/docs/examples/queries/prepared-statements/delete","h":"#queryoptions","p":164},{"i":177,"t":"info For queries please see the Simple Queries and Prepared Statements examples.","s":"createPoolCluster","u":"/node-mysql2/docs/examples/connections/createPoolCluster","h":"","p":176},{"i":179,"t":"add(group: string, connectionUri: string) promise.js callback.js import mysql from 'mysql2/promise'; try { const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', 'mysql://root:password@localhost:3306/test'); // poolCluster.add('clusterB', '...'); const connection = await poolCluster.getConnection('clusterA'); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', 'mysql://root:password@localhost:3306/test'); // poolCluster.add('clusterB', '...'); poolCluster.getConnection('clusterA', function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); warning Don't forget to release the connection when finished by using: connection.release()","s":"add(group, connectionUri)","u":"/node-mysql2/docs/examples/connections/createPoolCluster","h":"#addgroup-connectionuri","p":176},{"i":181,"t":"add(group: string, config: PoolOptions) promise.js callback.js import mysql from 'mysql2/promise'; try { const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { host: 'localhost', user: 'root', database: 'test', // port: 3306, // password: '', }); // poolCluster.add('clusterB', '...'); const connection = await poolCluster.getConnection('clusterA'); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { host: 'localhost', user: 'root', database: 'test', // port: 3306, // password: '', }); // poolCluster.add('clusterB', '...'); poolCluster.getConnection('clusterA', function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); warning Don't forget to release the connection when finished by using: connection.release()","s":"add(group, config)","u":"/node-mysql2/docs/examples/connections/createPoolCluster","h":"#addgroup-config","p":176},{"i":183,"t":"add(group: string, config: PoolOptions) promise.js callback.js import mysql from 'mysql2/promise'; try { const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { // ... passwordSha1: Buffer.from( '8bb6118f8fd6935ad0876a3be34a717d32708ffd', 'hex' ), }); // poolCluster.add('clusterB', '...'); const connection = await poolCluster.getConnection('clusterA'); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { // ... passwordSha1: Buffer.from('8bb6118f8fd6935ad0876a3be34a717d32708ffd', 'hex'), }); // poolCluster.add('clusterB', '...'); poolCluster.getConnection('clusterA', function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); warning Don't forget to release the connection when finished by using: connection.release()","s":"add(group, config) — SHA1","u":"/node-mysql2/docs/examples/connections/createPoolCluster","h":"#addgroup-config--sha1","p":176},{"i":185,"t":"add(group: string, config: PoolOptions) promise.js callback.js certs/ca-cert.pem import mysql from 'mysql2/promise'; try { const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { // ... ssl: { // key: fs.readFileSync('./certs/client-key.pem'), // cert: fs.readFileSync('./certs/client-cert.pem') ca: fs.readFileSync('./certs/ca-cert.pem'), }, }); // poolCluster.add('clusterB', '...'); const connection = await poolCluster.getConnection('clusterA'); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { // ... ssl: { // key: fs.readFileSync('./certs/client-key.pem'), // cert: fs.readFileSync('./certs/client-cert.pem') ca: fs.readFileSync('./certs/ca-cert.pem'), }, }); // poolCluster.add('clusterB', '...'); poolCluster.getConnection('clusterA', function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); See ssl/certs. warning Don't forget to release the connection when finished by using: connection.release()","s":"add(group, config) — SSL","u":"/node-mysql2/docs/examples/connections/createPoolCluster","h":"#addgroup-config--ssl","p":176},{"i":187,"t":"add(group: string, config: PoolOptions) You can use Amazon RDS string as value to ssl property to connect to Amazon RDS MySQL over SSL. In that case https://s3.amazonaws.com/rds-downloads/mysql-ssl-ca-cert.pem CA cert is used: promise.js callback.js import mysql from 'mysql2/promise'; try { const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { // ... host: 'db.id.ap-southeast-2.rds.amazonaws.com', ssl: 'Amazon RDS', }); // poolCluster.add('clusterB', '...'); const connection = await poolCluster.getConnection('clusterA'); // ... some query connection.release(); } catch (err) { console.log(err); } Testing try { const [res] = await connection.query('SHOW `status` LIKE \"Ssl_cipher\"'); await poolCluster.end(); console.log(res); } catch (err) { console.log(err); } const mysql = require('mysql2'); const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { // ... host: 'db.id.ap-southeast-2.rds.amazonaws.com', ssl: 'Amazon RDS', }); // poolCluster.add('clusterB', '...'); poolCluster.getConnection('clusterA', function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); Testing connectionquery('SHOW `status` LIKE \"Ssl_cipher\"', function (err, res) { poolCluster.end(); if (err instanceof Error) { console.log(err); return; } console.log(res); }); warning Don't forget to release the connection when finished by using: connection.release()","s":"add(group, config) — RDS SSL","u":"/node-mysql2/docs/examples/connections/createPoolCluster","h":"#addgroup-config--rds-ssl","p":176},{"i":189,"t":"Issues #2130 — Update TLS certs for Amazon RDS instances Pull Requests #2119 — fix: make startTls code compatible with Bun #2131 — Update Amazon RDS SSL CA cert","s":"Related Links","u":"/node-mysql2/docs/examples/connections/createPoolCluster","h":"#related-links","p":176},{"i":191,"t":"add(group: string, config: PoolOptions) A.js B.js const mysql = require('mysql2'); const SocksConnection = require('socksjs'); const socksProxy = new SocksConnection({ port: 3306 }); const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { stream: socksProxy, }); // poolCluster.add('clusterB', '...'); const poolNamespace = poolCluster.of('clusterA'); const mysql = require('mysql2'); const SocksConnection = require('socksjs'); const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { debug: 1, stream: function () { return new SocksConnection({ port: 3306 }); }, }); // poolCluster.add('clusterB', '...'); const poolNamespace = poolCluster.of('clusterA'); Testing poolNamespace.execute('SELECT SLEEP(1.1) AS `www`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); }); poolNamespace.execute('SELECT SLEEP(1) AS `qqq`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); }); poolNamespace.execute('SELECT SLEEP(1) AS `qqq`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); });","s":"add(group, config) — Socks","u":"/node-mysql2/docs/examples/connections/createPoolCluster","h":"#addgroup-config--socks","p":176},{"i":194,"t":"PoolOptions extends all options from ConnectionOptions: ConnectionOptions Specification PoolOptions Specification","s":"PoolOptions","u":"/node-mysql2/docs/examples/connections/createPoolCluster","h":"#pooloptions","p":176},{"i":196,"t":"await.js co.js .babelrc package.json 'use strict'; const mysql = require('mysql2/promise'); async function test() { const c = await mysql.createConnection({ port: 3306, user: 'testuser', namedPlaceholders: true, password: 'testpassword', }); console.log('connected!'); const [rows, fields] = await c.query('show databases'); console.log(rows); try { const [rows, fields] = await c.query('some invalid sql here'); } catch (e) { console.log('caught exception!', e); } console.log(await c.execute('select sleep(0.5)')); console.log('after first sleep'); console.log(await c.execute('select sleep(0.5)')); console.log('after second sleep'); let start = +new Date(); console.log( await Promise.all([ c.execute('select sleep(2.5)'), c.execute('select sleep(2.5)'), ]) ); console.log( 'after 2+3 parallel sleep which is in fact not parallel because commands are queued per connection' ); let end = +new Date(); console.log(end - start); await c.end(); const p = mysql.createPool({ port: 3306, user: 'testuser', namedPlaceholders: true, password: 'testpassword', }); console.log(await p.execute('select sleep(0.5)')); console.log('after first pool sleep'); start = +new Date(); console.log( await Promise.all([ p.execute('select sleep(2.5)'), p.execute('select sleep(2.5)'), ]) ); console.log('after 2+3 parallel pool sleep'); end = +new Date(); console.log(end - start); await p.end(); } test() .then(() => { console.log('done'); }) .catch((err) => { console.log('error!', err); throw err; }); 'use strict'; const mysql = require('mysql2/promise'); const co = require('co'); co(function* () { const c = yield mysql.createConnection({ port: 3306, user: 'root', namedPlaceholders: true, }); const rows = yield c.query('show databases'); console.log(rows); console.log(yield c.execute('select 1+:toAdd as qqq', { toAdd: 10 })); yield c.end(); }) .then(function () { console.log('done'); }) .catch(function (err) { console.log(err); throw err; }); { \"plugins\": [\"transform-async-to-generator\"] } { \"name\": \"promise-co-await\", \"version\": \"1.0.0\", \"description\": \"\", \"main\": \"await.js\", \"scripts\": { \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\" }, \"author\": \"\", \"license\": \"ISC\", \"dependencies\": { \"babel-cli\": \"^6.9.0\" } }","s":"await — co","u":"/node-mysql2/docs/examples/promise-wrapper/co-await","h":"","p":195},{"i":199,"t":"execute(sql: string, values: any[]) promise.js callback.js try { const sql = 'SELECT * FROM `users` WHERE `name` = ? AND `age` > ?'; const values = ['Page', 45]; const [rows, fields] = await connection.execute(sql, values); console.log(rows); console.log(fields); } catch (err) { console.log(err); } const sql = 'SELECT * FROM `users` WHERE `name` = ? AND `age` > ?'; const values = ['Page', 45]; connection.execute(sql, values, (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows); console.log(fields); }); rows contains rows returned by server fields contains extra meta data about rows, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(sql, values)","u":"/node-mysql2/docs/examples/queries/prepared-statements/select","h":"#executesql-values","p":197},{"i":201,"t":"execute(options: QueryOptions) promise.js callback.js try { const sql = 'SELECT * FROM `users` WHERE `name` = ? AND `age` > ?'; const values = ['Page', 45]; const [rows, fields] = await connection.execute({ sql, values, // ... other options }); console.log(rows); console.log(fields); } catch (err) { console.log(err); } const sql = 'SELECT * FROM `users` WHERE `name` = ? AND `age` > ?'; const values = ['Page', 45]; connection.execute( { sql, values, // ... other options }, (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows); console.log(fields); } ); rows contains rows returned by server fields contains extra meta data about rows, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options)","u":"/node-mysql2/docs/examples/queries/prepared-statements/select","h":"#executeoptions","p":197},{"i":203,"t":"execute(options: QueryOptions, values: any[]) promise.js callback.js try { const sql = 'SELECT * FROM `users` WHERE `name` = ? AND `age` > ?'; const values = ['Page', 45]; const [rows, fields] = await connection.execute( { sql, // ... other options }, values ); console.log(rows); console.log(fields); } catch (err) { console.log(err); } const sql = 'SELECT * FROM `users` WHERE `name` = ? AND `age` > ?'; const values = ['Page', 45]; connection.execute( { sql, // ... other options }, values, (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows); console.log(fields); } ); rows contains rows returned by server fields contains extra meta data about rows, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options, values)","u":"/node-mysql2/docs/examples/queries/prepared-statements/select","h":"#executeoptions-values","p":197},{"i":206,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/docs/examples/queries/prepared-statements/select","h":"#queryoptions","p":197},{"i":208,"t":"info For Prepared Statements or Placeholders / Parameters examples, please see here. Usage examples: INSERT SELECT UPDATE DELETE","s":"Simple Queries","u":"/node-mysql2/docs/examples/queries/simple-queries","h":"","p":207},{"i":211,"t":"execute(sql: string, values: any[]) promise.js callback.js try { const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (?, ?), (?,?)'; const values = ['Josh', 19, 'Page', 45]; const [result, fields] = await connection.execute(sql, values); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (?, ?), (?,?)'; const values = ['Josh', 19, 'Page', 45]; connection.execute(sql, values, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); }); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(sql, values)","u":"/node-mysql2/docs/examples/queries/prepared-statements/insert","h":"#executesql-values","p":209},{"i":213,"t":"execute(options: QueryOptions) promise.js callback.js try { const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (?, ?), (?,?)'; const values = ['Josh', 19, 'Page', 45]; const [result, fields] = await connection.execute({ sql, values, // ... other options }); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (?, ?), (?,?)'; const values = ['Josh', 19, 'Page', 45]; connection.execute( { sql, values, // ... other options }, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options)","u":"/node-mysql2/docs/examples/queries/prepared-statements/insert","h":"#executeoptions","p":209},{"i":215,"t":"execute(options: QueryOptions, values: any[]) promise.js callback.js try { const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (?, ?), (?,?)'; const values = ['Josh', 19, 'Page', 45]; const [result, fields] = await connection.execute( { sql, // ... other options }, values ); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (?, ?), (?,?)'; const values = ['Josh', 19, 'Page', 45]; connection.execute( { sql, // ... other options }, values, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options, values)","u":"/node-mysql2/docs/examples/queries/prepared-statements/insert","h":"#executeoptions-values","p":209},{"i":218,"t":"ResultSetHeader Specification","s":"ResultSetHeader","u":"/node-mysql2/docs/examples/queries/prepared-statements/insert","h":"#resultsetheader","p":209},{"i":220,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/docs/examples/queries/prepared-statements/insert","h":"#queryoptions","p":209},{"i":223,"t":"execute(sql: string, values: any[]) promise.js callback.js try { const sql = 'UPDATE `users` SET `age` = ? WHERE `name` = ? LIMIT 1'; const values = [20, 'Josh']; const [result, fields] = await connection.execute(sql, values); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'UPDATE `users` SET `age` = ? WHERE `name` = ? LIMIT 1'; const values = [20, 'Josh']; connection.execute(sql, values, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); }); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(sql, values)","u":"/node-mysql2/docs/examples/queries/prepared-statements/update","h":"#executesql-values","p":221},{"i":225,"t":"execute(options: QueryOptions) promise.js callback.js try { const sql = 'UPDATE `users` SET `age` = ? WHERE `name` = ? LIMIT 1'; const values = [20, 'Josh']; const [result, fields] = await connection.execute({ sql, values, // ... other options }); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'UPDATE `users` SET `age` = ? WHERE `name` = ? LIMIT 1'; const values = [20, 'Josh']; connection.execute( { sql, values, // ... other options }, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options)","u":"/node-mysql2/docs/examples/queries/prepared-statements/update","h":"#executeoptions","p":221},{"i":227,"t":"execute(options: QueryOptions, values: any[]) promise.js callback.js try { const sql = 'UPDATE `users` SET `age` = ? WHERE `name` = ? LIMIT 1'; const values = [20, 'Josh']; const [result, fields] = await connection.execute( { sql, // ... other options }, values ); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'UPDATE `users` SET `age` = ? WHERE `name` = ? LIMIT 1'; const values = [20, 'Josh']; connection.execute( { sql, // ... other options }, values, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options, values)","u":"/node-mysql2/docs/examples/queries/prepared-statements/update","h":"#executeoptions-values","p":221},{"i":230,"t":"ResultSetHeader Specification","s":"ResultSetHeader","u":"/node-mysql2/docs/examples/queries/prepared-statements/update","h":"#resultsetheader","p":221},{"i":232,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/docs/examples/queries/prepared-statements/update","h":"#queryoptions","p":221},{"i":234,"t":"The examples below also work for the execute method.","s":"DELETE","u":"/node-mysql2/docs/examples/queries/simple-queries/delete","h":"","p":233},{"i":236,"t":"query(sql: string) promise.js callback.js try { const sql = 'DELETE FROM `users` WHERE `name` = \"Page\" LIMIT 1'; const [result, fields] = await connection.query(sql); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'DELETE FROM `users` WHERE `name` = \"Page\" LIMIT 1'; connection.query(sql, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); }); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(sql)","u":"/node-mysql2/docs/examples/queries/simple-queries/delete","h":"#querysql","p":233},{"i":238,"t":"query(options: QueryOptions) promise.js callback.js try { const sql = 'DELETE FROM `users` WHERE `name` = \"Page\" LIMIT 1'; const [result, fields] = await connection.query({ sql, // ... other options }); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'DELETE FROM `users` WHERE `name` = \"Page\" LIMIT 1'; connection.query( { sql, // ... other options }, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(options)","u":"/node-mysql2/docs/examples/queries/simple-queries/delete","h":"#queryoptions","p":233},{"i":241,"t":"ResultSetHeader Specification","s":"ResultSetHeader","u":"/node-mysql2/docs/examples/queries/simple-queries/delete","h":"#resultsetheader","p":233},{"i":243,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/docs/examples/queries/simple-queries/delete","h":"#queryoptions-1","p":233},{"i":245,"t":"The examples below also work for the execute method.","s":"INSERT","u":"/node-mysql2/docs/examples/queries/simple-queries/insert","h":"","p":244},{"i":247,"t":"query(sql: string) promise.js callback.js try { const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (\"Josh\", 19), (\"Page\", 45)'; const [result, fields] = await connection.query(sql); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (\"Josh\", 19), (\"Page\", 45)'; connection.query(sql, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); }); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(sql)","u":"/node-mysql2/docs/examples/queries/simple-queries/insert","h":"#querysql","p":244},{"i":249,"t":"query(options: QueryOptions) promise.js callback.js try { const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (\"Josh\", 19), (\"Page\", 45)'; const [result, fields] = await connection.query({ sql, // ... other options }); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (\"Josh\", 19), (\"Page\", 45)'; connection.query( { sql, // ... other options }, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(options)","u":"/node-mysql2/docs/examples/queries/simple-queries/insert","h":"#queryoptions","p":244},{"i":252,"t":"ResultSetHeader Specification","s":"ResultSetHeader","u":"/node-mysql2/docs/examples/queries/simple-queries/insert","h":"#resultsetheader","p":244},{"i":254,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/docs/examples/queries/simple-queries/insert","h":"#queryoptions-1","p":244},{"i":256,"t":"The examples below also work for the execute method.","s":"SELECT","u":"/node-mysql2/docs/examples/queries/simple-queries/select","h":"","p":255},{"i":258,"t":"query(sql: string) promise.js callback.js try { const sql = 'SELECT * FROM `users` WHERE `name` = \"Page\" AND `age` > 45'; const [rows, fields] = await connection.query(sql); console.log(rows); console.log(fields); } catch (err) { console.log(err); } const sql = 'SELECT * FROM `users` WHERE `name` = \"Page\" AND `age` > 45'; connection.query(sql, (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows); console.log(fields); }); rows contains rows returned by server fields contains extra meta data about rows, if available info The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(sql)","u":"/node-mysql2/docs/examples/queries/simple-queries/select","h":"#querysql","p":255},{"i":260,"t":"query(options: QueryOptions) promise.js callback.js try { const sql = 'SELECT * FROM `users` WHERE `name` = \"Page\" AND `age` > 45'; const [rows, fields] = await connection.query({ sql, // ... other options }); console.log(rows); console.log(fields); } catch (err) { console.log(err); } const sql = 'SELECT * FROM `users` WHERE `name` = \"Page\" AND `age` > 45'; connection.query( { sql, // ... other options }, (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows); console.log(fields); } ); rows contains rows returned by server fields contains extra meta data about rows, if available info The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(options)","u":"/node-mysql2/docs/examples/queries/simple-queries/select","h":"#queryoptions","p":255},{"i":262,"t":"query(options: QueryOptions) promise.js callback.js try { const sql = 'SELECT * FROM `users` WHERE `name` = \"Page\" AND `age` > 45'; const [rows, fields] = await connection.query({ sql, rowsAsArray: true, // ... other options }); console.log(rows); console.log(fields); } catch (err) { console.log(err); } const sql = 'SELECT * FROM `users` WHERE `name` = \"Page\" AND `age` > 45'; connection.query( { sql, rowsAsArray: true, // ... other options }, (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows); console.log(fields); } ); rows contains rows returned by server as array fields contains extra meta data about rows, if available info The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(options) — Row as Array","u":"/node-mysql2/docs/examples/queries/simple-queries/select","h":"#queryoptions--row-as-array","p":255},{"i":265,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/docs/examples/queries/simple-queries/select","h":"#queryoptions-1","p":255},{"i":267,"t":"The examples below also work for the execute method.","s":"UPDATE","u":"/node-mysql2/docs/examples/queries/simple-queries/update","h":"","p":266},{"i":269,"t":"query(sql: string) promise.js callback.js try { const sql = 'UPDATE `users` SET `age` = 20 WHERE `name` = \"Josh\" LIMIT 1'; const [result, fields] = await connection.query(sql); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'UPDATE `users` SET `age` = 20 WHERE `name` = \"Josh\" LIMIT 1'; connection.query(sql, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); }); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(sql)","u":"/node-mysql2/docs/examples/queries/simple-queries/update","h":"#querysql","p":266},{"i":271,"t":"query(options: QueryOptions) promise.js callback.js try { const sql = 'UPDATE `users` SET `age` = 20 WHERE `name` = \"Josh\" LIMIT 1'; const [result, fields] = await connection.query({ sql, // ... other options }); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'UPDATE `users` SET `age` = 20 WHERE `name` = \"Josh\" LIMIT 1'; connection.query( { sql, // ... other options }, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available info The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(options)","u":"/node-mysql2/docs/examples/queries/simple-queries/update","h":"#queryoptions","p":266},{"i":274,"t":"ResultSetHeader Specification","s":"ResultSetHeader","u":"/node-mysql2/docs/examples/queries/simple-queries/update","h":"#resultsetheader","p":266},{"i":276,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/docs/examples/queries/simple-queries/update","h":"#queryoptions-1","p":266},{"i":278,"t":"index.js 'use strict'; const mysql = require('mysql2'); const ClientFlags = require('mysql2/lib/constants/client.js'); const server = mysql.createServer(); server.listen(3307); server.on('connection', (conn) => { console.log('connection'); conn.serverHandshake({ protocolVersion: 10, serverVersion: 'node.js rocks', connectionId: 1234, statusFlags: 2, characterSet: 8, capabilityFlags: 0xffffff ^ ClientFlags.COMPRESS, }); conn.on('field_list', (table, fields) => { console.log('field list:', table, fields); conn.writeEof(); }); const remote = mysql.createConnection({ user: 'root', database: 'dbname', host: 'server.example.com', password: 'secret', }); conn.on('query', (sql) => { console.log(`proxying query: ${sql}`); remote.query(sql, function (err) { // overloaded args, either (err, result :object) // or (err, rows :array, columns :array) if (Array.isArray(arguments[1])) { // response to a 'select', 'show' or similar const rows = arguments[1], columns = arguments[2]; console.log('rows', rows); console.log('columns', columns); conn.writeTextResult(rows, columns); } else { // response to an 'insert', 'update' or 'delete' const result = arguments[1]; console.log('result', result); conn.writeOk(result); } }); }); conn.on('end', remote.end.bind(remote)); });","s":"MySQL Proxy","u":"/node-mysql2/docs/examples/tests/mysql-proxy","h":"","p":277},{"i":280,"t":"index.js 'use strict'; const pool = require('mysql2').createPool({ host: 'localhost', user: 'root', database: 'test', password: 'root', }); setInterval(() => { for (let i = 0; i < 5; ++i) { pool.query((err, rows, fields) => { console.log(rows, fields); // Connection is automatically released once query resolves }); } }, 1000); setInterval(() => { for (let i = 0; i < 5; ++i) { pool.getConnection((err, db) => { db.query('select sleep(0.5) as qqq', (err, rows, fields) => { console.log(rows, fields); db.release(); }); }); } }, 1000);","s":"Pool","u":"/node-mysql2/docs/examples/tests/pool","h":"","p":279},{"i":282,"t":"index.js 'use strict'; const mysql = require('mysql2'); const flags = require('mysql2/lib/constants/client.js'); const auth = require('mysql2/lib/auth_41.js'); function authenticate(params, cb) { console.log(params); const doubleSha = auth.doubleSha1('pass123'); const isValid = auth.verifyToken( params.authPluginData1, params.authPluginData2, params.authToken, doubleSha ); if (isValid) { cb(null); } else { // for list of codes lib/constants/errors.js cb(null, { message: 'wrong password dude', code: 1045 }); } } const server = mysql.createServer(); server.listen(3333); server.on('connection', (conn) => { // we can deny connection here: // conn.writeError({ message: 'secret', code: 123 }); // conn.close(); conn.serverHandshake({ protocolVersion: 10, serverVersion: '5.6.10', // 'node.js rocks', connectionId: 1234, statusFlags: 2, characterSet: 8, // capabilityFlags: 0xffffff, // capabilityFlags: -2113931265, capabilityFlags: 2181036031, authCallback: authenticate, }); conn.on('field_list', (table, fields) => { console.log('FIELD LIST:', table, fields); conn.writeEof(); }); conn.on('query', (query) => { conn.writeColumns([ { catalog: 'def', schema: 'test', table: 'test_table', orgTable: 'test_table', name: 'beta', orgName: 'beta', characterSet: 33, columnLength: 384, columnType: 253, flags: 0, decimals: 0, }, ]); conn.writeTextRow(['test тест テスト փորձարկում পরীক্ষা kiểm tra ']); conn.writeTextRow(['ტესტი પરીક્ષણ מבחן פּרובירן اختبار परीक्षण']); conn.writeEof(); conn.close(); }); });","s":"Server","u":"/node-mysql2/docs/examples/tests/server","h":"","p":281},{"i":284,"t":"index.ts db.ts /** * The types are explicity for learning purpose */ import { PoolOptions } from 'mysql2/promise'; import { MySQL } from './db.js'; interface User extends RowDataPacket { id: number; name: string; } const access: PoolOptions = { host: '', user: '', password: '', database: '', }; (async () => { const mysql = new MySQL(access); /** Deleting the `users` table, if it exists */ await mysql.queryResult('DROP TABLE IF EXISTS `users`;'); /** Creating a minimal user table */ await mysql.queryResult( 'CREATE TABLE `users` (`id` INT(11) AUTO_INCREMENT, `name` VARCHAR(50), PRIMARY KEY (`id`));' ); /** Inserting some users */ const [inserted] = await mysql.executeResult( 'INSERT INTO `users`(`name`) VALUES(?), (?), (?), (?);', ['Josh', 'John', 'Marie', 'Gween'] ); console.log('Inserted:', inserted.affectedRows); /** Getting users */ const [users] = await mysql.queryRows( 'SELECT * FROM `users` ORDER BY `name` ASC;' ); users.forEach((user: User) => { console.log('-----------'); console.log('id: ', user.id); console.log('name:', user.name); }); await mysql.connection.end(); })(); /** Output * * Inserted: 4 * ----------- * id: 4 * name: Gween * ----------- * id: 2 * name: John * ----------- * id: 1 * name: Josh * ----------- * id: 3 * name: Marie */ /** * The types are explicity for learning purpose */ import { createPool, PoolOptions, Pool, ResultSetHeader, RowDataPacket, } from 'mysql2/promise'; export class MySQL { private conn: Pool; private credentials: PoolOptions; constructor(credentials: PoolOptions) { this.credentials = credentials; this.conn = createPool(this.credentials); } /** A random method to simulate a step before to get the class methods */ private ensureConnection() { if (!this?.conn) this.conn = createPool(this.credentials); } /** For `SELECT` and `SHOW` */ get queryRows() { this.ensureConnection(); return this.conn.query.bind(this.conn); } /** For `SELECT` and `SHOW` with `rowAsArray` as `true` */ get queryRowsAsArray() { this.ensureConnection(); return this.conn.query.bind(this.conn); } /** For `INSERT`, `UPDATE`, etc. */ get queryResult() { this.ensureConnection(); return this.conn.query.bind(this.conn); } /** For multiple `INSERT`, `UPDATE`, etc. with `multipleStatements` as `true` */ get queryResults() { this.ensureConnection(); return this.conn.query.bind(this.conn); } /** For `SELECT` and `SHOW` */ get executeRows() { this.ensureConnection(); return this.conn.execute.bind(this.conn); } /** For `SELECT` and `SHOW` with `rowAsArray` as `true` */ get executeRowsAsArray() { this.ensureConnection(); return this.conn.execute.bind(this.conn); } /** For `INSERT`, `UPDATE`, etc. */ get executeResult() { this.ensureConnection(); return this.conn.execute.bind(this.conn); } /** For multiple `INSERT`, `UPDATE`, etc. with `multipleStatements` as `true` */ get executeResults() { this.ensureConnection(); return this.conn.execute.bind(this.conn); } /** Expose the Pool Connection */ get connection() { return this.conn; } }","s":"Basic Custom Class","u":"/node-mysql2/docs/examples/typescript/basic-custom-class","h":"","p":283},{"i":286,"t":"index.ts /** * The types are explicity for learning purpose * By extending the `RowDataPacket`, you can use your Interface in `query` and `execute` */ import mysql, { ConnectionOptions, ProcedureCallPacket, ResultSetHeader, RowDataPacket, } from 'mysql2/promise'; interface User extends RowDataPacket { id: number; name: string; } const isResultSetHeader = (data: unknown): data is ResultSetHeader => { if (!data || typeof data !== 'object') return false; const keys = [ 'fieldCount', 'affectedRows', 'insertId', 'info', 'serverStatus', 'warningStatus', 'changedRows', ]; return keys.every((key) => key in data); }; (async () => { const access: ConnectionOptions = { host: '', user: '', password: '', database: '', }; const conn = await mysql.createConnection(access); /** Deleting the `users` table, if it exists */ await conn.query('DROP TABLE IF EXISTS `users`;'); /** Creating a minimal user table */ await conn.query( 'CREATE TABLE `users` (`id` INT(11) AUTO_INCREMENT, `name` VARCHAR(50), PRIMARY KEY (`id`));' ); /** Inserting some users */ const [inserted] = await conn.execute( 'INSERT INTO `users`(`name`) VALUES(?), (?), (?), (?);', ['Josh', 'John', 'Marie', 'Gween'] ); console.log('Inserted:', inserted.affectedRows); /** Deleting the `getUsers` procedure, if it exists */ await conn.query('DROP PROCEDURE IF EXISTS getUsers'); /** Creating a procedure to get the users */ await conn.query(` CREATE PROCEDURE getUsers() BEGIN SELECT * FROM users ORDER BY name ASC; END `); /** Getting users */ const [procedureResult] = await conn.query>('CALL getUsers()'); procedureResult.forEach((users) => { /** By perform a `SELECT` or `SHOW`, The last item of `procedureResult` always be a `ResultSetHeader` */ if (isResultSetHeader(users)) { console.log('----------------'); console.log('Affected Rows:', users.affectedRows); } else { users.forEach((user) => { console.log('----------------'); console.log('id: ', user.id); console.log('name:', user.name); }); } }); await conn.end(); })(); /** Output * * Inserted: 4 * ---------------- * id: 4 * name: Gween * ---------------- * id: 2 * name: John * ---------------- * id: 1 * name: Josh * ---------------- * id: 3 * name: Marie * ---------------- * Affected Rows: 0 */","s":"Procedure Call Packet","u":"/node-mysql2/docs/examples/typescript/procedure-call/index","h":"","p":285},{"i":288,"t":"index.ts /** * The types are explicity for learning purpose * By extending the `RowDataPacket`, you can use your Interface in `query` and `execute` */ import mysql, { ConnectionOptions, ProcedureCallPacket, ResultSetHeader, RowDataPacket, } from 'mysql2/promise'; interface User extends RowDataPacket { /** id */ 0: number; /** name */ 1: string; } const isResultSetHeader = (data: unknown): data is ResultSetHeader => { if (!data || typeof data !== 'object') return false; const keys = [ 'fieldCount', 'affectedRows', 'insertId', 'info', 'serverStatus', 'warningStatus', 'changedRows', ]; return keys.every((key) => key in data); }; (async () => { const access: ConnectionOptions = { host: '', user: '', password: '', database: '', rowsAsArray: true, }; const conn = await mysql.createConnection(access); /** Deleting the `users` table, if it exists */ await conn.query('DROP TABLE IF EXISTS `users`;'); /** Creating a minimal user table */ await conn.query( 'CREATE TABLE `users` (`id` INT(11) AUTO_INCREMENT, `name` VARCHAR(50), PRIMARY KEY (`id`));' ); /** Inserting some users */ const [inserted] = await conn.execute( 'INSERT INTO `users`(`name`) VALUES(?), (?), (?), (?);', ['Josh', 'John', 'Marie', 'Gween'] ); console.log('Inserted:', inserted.affectedRows); /** Deleting the `getUsers` procedure, if it exists */ await conn.query('DROP PROCEDURE IF EXISTS getUsers'); /** Creating a procedure to get the users */ await conn.query(` CREATE PROCEDURE getUsers() BEGIN SELECT * FROM users ORDER BY name ASC; END `); /** Getting users */ const [procedureResult] = await conn.query>('CALL getUsers()'); procedureResult.forEach((users) => { /** By perform a `SELECT` or `SHOW`, The last item of `procedureResult` always be a `ResultSetHeader` */ if (isResultSetHeader(users)) { console.log('----------------'); console.log('Affected Rows:', users.affectedRows); } else { users.forEach((user) => { console.log('----------------'); console.log('id: ', user[0]); console.log('name:', user[1]); }); } }); await conn.end(); })(); /** Output * * Inserted: 4 * ---------------- * id: 4 * name: Gween * ---------------- * id: 2 * name: John * ---------------- * id: 1 * name: Josh * ---------------- * id: 3 * name: Marie * ---------------- * Affected Rows: 0 */","s":"Procedure Call Packet (Row as Array)","u":"/node-mysql2/docs/examples/typescript/procedure-call/row-as-array","h":"","p":287},{"i":290,"t":"index.ts /** * The types are explicity for learning purpose * By extending the `RowDataPacket`, you can use your Interface in `query` and `execute` */ import mysql, { ConnectionOptions, ResultSetHeader, RowDataPacket, } from 'mysql2/promise'; interface User extends RowDataPacket { id: number; name: string; } (async () => { const access: ConnectionOptions = { host: '', user: '', password: '', database: '', }; const conn = await mysql.createConnection(access); /** Deleting the `users` table, if it exists */ await conn.query('DROP TABLE IF EXISTS `users`;'); /** Creating a minimal user table */ await conn.query( 'CREATE TABLE `users` (`id` INT(11) AUTO_INCREMENT, `name` VARCHAR(50), PRIMARY KEY (`id`));' ); /** Inserting some users */ const [inserted] = await conn.execute( 'INSERT INTO `users`(`name`) VALUES(?), (?), (?), (?);', ['Josh', 'John', 'Marie', 'Gween'] ); console.log('Inserted:', inserted.affectedRows); /** Getting users */ const [users] = await conn.query( 'SELECT * FROM `users` ORDER BY `name` ASC;' ); users.forEach((user) => { console.log('-----------'); console.log('id: ', user.id); console.log('name:', user.name); }); await conn.end(); })(); /** Output * * Inserted: 4 * ----------- * id: 4 * name: Gween * ----------- * id: 2 * name: John * ----------- * id: 1 * name: Josh * ----------- * id: 3 * name: Marie */","s":"Row Data Packet","u":"/node-mysql2/docs/examples/typescript/row-data/index","h":"","p":289},{"i":292,"t":"index.ts /** * The types are explicity for learning purpose * By extending the `RowDataPacket`, you can use your Interface in `query` and `execute` */ import mysql, { ConnectionOptions, ResultSetHeader, RowDataPacket, } from 'mysql2/promise'; interface User extends RowDataPacket { id: number; name: string; } (async () => { const access: ConnectionOptions = { host: '', user: '', password: '', database: '', multipleStatements: true, }; const conn = await mysql.createConnection(access); /** Deleting the `users` table, if it exists */ await conn.query('DROP TABLE IF EXISTS `users`;'); /** Creating a minimal user table */ await conn.query( 'CREATE TABLE `users` (`id` INT(11) AUTO_INCREMENT, `name` VARCHAR(50), PRIMARY KEY (`id`));' ); /** Inserting some users */ const [inserted] = await conn.execute( 'INSERT INTO `users`(`name`) VALUES(?), (?), (?), (?);', ['Josh', 'John', 'Marie', 'Gween'] ); console.log('Inserted:', inserted.affectedRows); /** Getting users */ const [rows] = await conn.query( [ 'SELECT * FROM `users` ORDER BY `name` ASC LIMIT 2;', 'SELECT * FROM `users` ORDER BY `name` ASC LIMIT 2 OFFSET 2;', ].join(' ') ); rows.forEach((users) => { users.forEach((user) => { console.log('-----------'); console.log('id: ', user.id); console.log('name:', user.name); }); }); await conn.end(); })(); /** Output * * Inserted: 4 * ----------- * id: 4 * name: Gween * ----------- * id: 2 * name: John * ----------- * id: 1 * name: Josh * ----------- * id: 3 * name: Marie */","s":"Row Data Packet (Multi Statements)","u":"/node-mysql2/docs/examples/typescript/row-data/multi-statements","h":"","p":291},{"i":294,"t":"index.ts /** * The types are explicity for learning purpose * By extending the `RowDataPacket`, you can use your Interface in `query` and `execute` */ import mysql, { ConnectionOptions, ResultSetHeader, RowDataPacket, } from 'mysql2/promise'; interface User extends RowDataPacket { /** id */ 0: number; /** name */ 1: string; } (async () => { const access: ConnectionOptions = { host: '', user: '', password: '', database: '', rowsAsArray: true, }; const conn = await mysql.createConnection(access); /** Deleting the `users` table, if it exists */ await conn.query('DROP TABLE IF EXISTS `users`;'); /** Creating a minimal user table */ await conn.query( 'CREATE TABLE `users` (`id` INT(11) AUTO_INCREMENT, `name` VARCHAR(50), PRIMARY KEY (`id`));' ); /** Inserting some users */ const [inserted] = await conn.execute( 'INSERT INTO `users`(`name`) VALUES(?), (?), (?), (?);', ['Josh', 'John', 'Marie', 'Gween'] ); console.log('Inserted:', inserted.affectedRows); /** Getting users */ const [users] = await conn.query( 'SELECT * FROM `users` ORDER BY `name` ASC;' ); users.forEach((user) => { console.log('-----------'); console.log('id: ', user[0]); console.log('name:', user[1]); }); await conn.end(); })(); /** Output * * Inserted: 4 * ----------- * id: 4 * name: Gween * ----------- * id: 2 * name: John * ----------- * id: 1 * name: Josh * ----------- * id: 3 * name: Marie */","s":"Row Data Packet (Row as Array)","u":"/node-mysql2/docs/examples/typescript/row-data/row-as-array","h":"","p":293},{"i":296,"t":"index.ts /** * The types are explicity for learning purpose * By extending the `RowDataPacket`, you can use your Interface in `query` and `execute` */ import mysql, { ConnectionOptions, ResultSetHeader, RowDataPacket, } from 'mysql2/promise'; interface User extends RowDataPacket { /** id */ 0: number; /** name */ 1: string; } (async () => { const access: ConnectionOptions = { host: '', user: '', password: '', database: '', multipleStatements: true, rowsAsArray: true, }; const conn = await mysql.createConnection(access); /** Deleting the `users` table, if it exists */ await conn.query('DROP TABLE IF EXISTS `users`;'); /** Creating a minimal user table */ await conn.query( 'CREATE TABLE `users` (`id` INT(11) AUTO_INCREMENT, `name` VARCHAR(50), PRIMARY KEY (`id`));' ); /** Inserting some users */ const [inserted] = await conn.execute( 'INSERT INTO `users`(`name`) VALUES(?), (?), (?), (?);', ['Josh', 'John', 'Marie', 'Gween'] ); console.log('Inserted:', inserted.affectedRows); /** Getting users */ const [rows] = await conn.query( [ 'SELECT * FROM `users` ORDER BY `name` ASC LIMIT 2;', 'SELECT * FROM `users` ORDER BY `name` ASC LIMIT 2 OFFSET 2;', ].join(' ') ); rows.forEach((users) => { users.forEach((user) => { console.log('-----------'); console.log('id: ', user[0]); console.log('name:', user[1]); }); }); await conn.end(); })(); /** Output * * Inserted: 4 * ----------- * id: 4 * name: Gween * ----------- * id: 2 * name: John * ----------- * id: 1 * name: Josh * ----------- * id: 3 * name: Marie */","s":"Row Data Packet (Multi Statements and Row as Array)","u":"/node-mysql2/docs/examples/typescript/row-data/row-as-array-multi-statements","h":"","p":295},{"i":298,"t":"This section provides answers to commonly asked questions about MySQL2. tip To explore the FAQs, please use the sidebar navigation on desktop or access the menu on mobile devices.","s":"Frequently Asked Questions","u":"/node-mysql2/docs/faq","h":"","p":297},{"i":300,"t":"This section details error handling techniques in MySQL2. It covers essential error management strategies for methods such as createConnection, createPool, createPoolCluster, execute and query.","s":"How to handle errors?","u":"/node-mysql2/docs/faq/how-to-handle-errors","h":"","p":299},{"i":302,"t":"createConnection 2Stable This solution has been tested and confirmed as the correct answer. Handling connection errors by adding an error event listener: const mysql = require('mysql2'); connection = mysql.createConnection({ host: '', user: '', database: '', }); connection.addListener('error', (err) => { if (err instanceof Error) { console.log(`createConnection error:`, err); } }); createPool 2Stable This solution has been tested. Handling connection errors through callback's err parameter: const mysql = require('mysql2'); const pool = mysql.createPool({ host: '', user: '', database: '', }); pool.getConnection((err, connection) => { if (err instanceof Error) { console.log('pool.getConnection error:', err); return; } }); createPoolCluster 2Stable This solution has been tested. Handling connection errors through callback's err parameter: const mysql = require('mysql2'); const poolCluster = mysql.createPoolCluster(); poolCluster.add('NodeI', { host: '', user: '', database: '', }); poolCluster.getConnection('NodeI', (err, connection) => { if (err instanceof Error) { console.log('poolCluster.getConnection error:', err); return; } }); execute 2Stable This solution has been tested. Handling execute errors through callback's err parameter: connection.execute('SELEC 1 + 1', (err, rows) => { if (err instanceof Error) { console.log('execute error:', err); return; } console.log(rows); }); It will work for both createConnection, createPool and createPoolCluster connections. query 2Stable This solution has been tested. Handling query errors through callback's err parameter: connection.query('SELEC 1 + 1', (err, rows) => { if (err instanceof Error) { console.log('query error:', err); return; } console.log(rows); }); It will work for both createConnection, createPool and createPoolCluster connections.","s":"Using callbacks","u":"/node-mysql2/docs/faq/how-to-handle-errors","h":"#using-callbacks","p":299},{"i":304,"t":"createConnection 2Stable This solution has been tested and confirmed as the correct answer. Handling connection errors through try-catch block: import mysql from 'mysql2/promise'; try { const connection = await mysql.createConnection({ host: '', user: '', database: '', }); } catch (err) { if (err instanceof Error) { console.log(err); } } createPool 2Stable This solution has been tested. Handling connection errors through try-catch block: import mysql from 'mysql2/promise'; const pool = mysql.createPool({ host: '', user: '', database: '', }); try { const connection = await pool.getConnection(); } catch (err) { if (err instanceof Error) { console.log(err); } } createPoolCluster 2Stable This solution has been tested. Handling connection errors through try-catch block: import mysql from 'mysql2/promise'; const poolCluster = mysql.createPoolCluster(); poolCluster.add('NodeI', { host: '', user: '', database: '', }); try { await poolCluster.getConnection('NodeI'); } catch (err) { if (err instanceof Error) { console.log('createConnection error:', err); } } execute 2Stable This solution has been tested. Handling execute errors through try-catch block: try { const [rows] = await connection.execute('SELEC 1 + 1'); console.log(rows); } catch (err) { if (err instanceof Error) { console.log('execute error:', err); } } It will work for both createConnection, createPool and createPoolCluster connections. query 2Stable This solution has been tested. Handling query errors through try-catch block: try { const [rows] = await connection.query('SELEC 1 + 1'); console.log(rows); } catch (err) { if (err instanceof Error) { console.log('query error:', err); } } It will work for both createConnection, createPool and createPoolCluster connections.","s":"Using promises","u":"/node-mysql2/docs/faq/how-to-handle-errors","h":"#using-promises","p":299},{"i":306,"t":"Discussions #1998 #2282","s":"Related Links","u":"/node-mysql2/docs/faq/how-to-handle-errors","h":"#related-links","p":299},{"i":308,"t":"MySQL2 project is a continuation of MySQL-Native. Protocol parser code was rewritten from scratch and api changed to match popular Node MySQL. MySQL2 team is working together with Node MySQL team to factor out shared code and move it under mysqljs organization. MySQL2 is mostly API compatible with Node MySQL and supports majority of features. MySQL2 also offers these additional features: Faster / Better Performance Prepared Statements MySQL Binary Log Protocol MySQL Server Extended support for Encoding and Collation Promise Wrapper Compression SSL and Authentication Switch Custom Streams Pooling","s":"History and Why MySQL2","u":"/node-mysql2/docs/history-and-why-mysq2","h":"","p":307},{"i":310,"t":"The Stability Badges are indications of a section's stability. The stability indices are as follows: 0Deprecated The feature might generate warnings and does not assure backward compatibility. Experimental: These features are not bound by semantic versioning. They may undergo non-backward compatible changes or be removed in future releases. Their use in production is discouraged. Use caution with Experimental features, especially in libraries. Users might not expect changes from these unstable features. To reduce surprises, consider using a command-line flag for Experimental features. Experimental features are classified into stages: 1Experimental Experimental features at this stage are currently in development and prone to considerable changes. 1.1Early Development Experimental features at this stage are approaching minimum viability. 1.2Release Candidate Experimental features are close to reaching stability. Major changes are not expected, but they could still occur based on user feedback. Testing and feedback are important to ascertain the readiness of these features for stable classification. 2Stable Compatibility with the MySQL ecosystem is a high priority. 3Legacy This feature, while not likely to be removed and still subject to semantic versioning, is not under active maintenance and other options are available. Features are classified as legacy instead of deprecated when they cause no harm and have widespread use in the MySQL ecosystem. It's unlikely that bugs in legacy features will be addressed.","s":"Stability Badges","u":"/node-mysql2/docs/stability-badges","h":"","p":309}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/2",[0,4.512,1,3.687,2,5.936,3,5.936,4,1.437,5,4.837,6,5.936,7,1.871,8,3.687,9,5.936,10,2.61,11,5.936,12,4.837,13,5.936,14,3.687,15,3.087,16,5.274,17,4.295,18,4.837,19,5.936,20,5.936,21,1.492,22,0.537,23,4.512,24,3.849,25,4.251,26,3.687,27,5.274,28,3.187,29,5.936]],["t/4",[30,5.779,31,6.3,32,6.3,33,2.83,34,3.041,35,4.599,36,7.092,37,3.2,38,7.092,39,5.079]],["t/6",[4,1.495,14,4.826,24,3.457,26,3.312,33,2.127,34,2.286,40,4.737,41,4.345,42,4.345,43,6.902,44,4.345,45,1.786,46,1.558,47,1.903,48,5.332,49,2.773,50,4.737,51,1.862,52,4.737,53,5.332,54,2.032,55,4.737,56,5.332,57,4.737,58,4.345,59,5.332,60,4.737,61,5.332,62,4.737,63,2.539,64,4.737,65,5.332,66,1.75,67,5.332,68,6.194,69,4.345,70,3.312,71,5.332,72,3.819,73,4.737,74,5.332]],["t/8",[1,3.398,4,1.659,10,2.406,14,4.886,15,2.845,23,4.158,24,3.548,28,2.937,33,2.829,34,2.346,43,4.86,63,2.605,68,4.86,69,4.458,70,3.398,75,5.471,76,4.458,77,5.471,78,3.398,79,4.458,80,4.86,81,3.918,82,3.146,83,3.918,84,3.918,85,3.398,86,5.389,87,2.605,88,2.535,89,3.037,90,4.458,91,3.918,92,4.158,93,3.719,94,1.593,95,4.158,96,4.458]],["t/10",[33,2.981,34,3.204,35,4.845,97,2.555]],["t/12",[22,0.664,25,5.256,35,3.743,44,4.704,46,1.29,47,2.619,49,3.817,62,5.128,78,3.585,98,7.339,99,5.772,100,4.074,101,5.772,102,3.924,103,5.128,104,5.772,105,5.128,106,3.743,107,1.586,108,5.772,109,4.387,110,5.772,111,5.128,112,3.445,113,2.458,114,5.772,115,2.475,116,5.772,117,5.128,118,5.772]],["t/14",[1,4.681,4,1.659,14,5.11,27,5.35,28,4.417,41,4.907,87,2.868,88,2.79,94,1.753,119,6.021,120,4.576,121,5.35,122,4.093,123,4.907,124,6.142,125,6.021,126,6.021,127,7.537,128,7.537,129,6.021]],["t/16",[4,1.342,14,4.331,97,2.385,130,6.974,131,4.995,132,6.716,133,8.773,134,1.844,135,6.196]],["t/18",[136,6.817,137,7.152,138,1.16,139,5.829,140,3.608,141,7.152,142,7.152,143,5.436]],["t/20",[102,4.946,122,4.946,135,6.465,144,7.277,145,5.53,146,7.277,147,7.277]],["t/22",[14,3.572,22,0.364,33,2.678,34,2.466,39,5.244,63,1.917,64,3.576,78,2.5,94,1.675,97,1.377,113,1.927,120,4.372,131,5.244,132,5.469,136,6.564,139,3.28,143,3.059,145,4.372,148,5.752,149,5.752,150,4.025,151,5.962,152,4.025,153,5.752,154,5.752,155,2.991,156,1.865,157,2.161,158,4.025,159,4.025,160,5.752,161,4.025,162,5.752,163,4.025,164,4.025,165,4.025,166,5.11,167,3.576,168,3.576,169,4.025,170,3.576,171,2.61,172,4.025,173,4.025,174,3.576,175,4.025,176,4.025,177,3.576,178,2.61,179,3.576,180,5.752,181,4.025,182,4.025,183,4.025,184,3.576,185,3.576,186,4.025,187,4.025,188,4.025,189,3.059,190,3.059,191,4.025,192,4.025,193,4.025,194,4.025,195,3.576,196,3.576,197,3.28]],["t/24",[86,4.512,100,3.295,120,4.512,138,0.962,139,4.837,156,2.751,177,5.274,189,4.512,190,4.512,198,2.314,199,5.854,200,5.936,201,5.274,202,7.262,203,5.274,204,5.274,205,6.087,206,5.936,207,5.936,208,6.636,209,5.274,210,5.936,211,5.936,212,5.274,213,5.936,214,3.687,215,5.936]],["t/26",[22,0.805,49,2.922,97,1.921,107,1.544,113,1.882,171,5.867,199,5.166,205,4.578,216,6.389,217,5.618,218,5.221,219,2.675,220,4.991,221,4.578,222,5.618,223,5.618,224,5.618,225,4.991,226,5.878,227,3.489,228,4.578,229,5.618]],["t/28",[22,0.77,63,2.768,93,3.951,97,1.988,107,1.597,113,1.947,140,2.932,199,4.163,205,4.737,226,6.597,227,3.61,228,4.737,230,7.563,231,5.164,232,5.813,233,5.813,234,7.371,235,5.813,236,2.12,237,4.418,238,3.023,239,1.726,240,5.813,241,5.813,242,2.493,243,4.399]],["t/30",[17,3.487,22,0.747,26,3.767,97,2.074,107,1.666,138,0.983,189,5.754,199,5.422,202,6.726,208,6.726,212,5.388,227,3.767,228,4.943,244,7.904,245,6.065,246,6.065,247,4.122,248,2.737,249,4.943,250,5.388]],["t/32",[22,0.805,97,2.254,107,1.811,251,8.564,252,6.59,253,6.59,254,6.59,255,6.59,256,6.59,257,6.59,258,6.59,259,6.59,260,6.59,261,6.59]],["t/34",[35,4.815,50,7.06,70,4.076,72,3.486,79,6.476,100,2.702,131,6.122,132,6.966,136,3.966,156,2.255,189,3.699,199,3.486,262,1.534,263,6.563,264,5.83,265,6.563,266,4.867,267,4.867,268,7.947,269,7.947,270,1.263,271,4.324,272,4.867,273,4.867,274,6.563,275,6.563,276,6.563,277,4.324,278,4.867,279,1.417,280,3.486,281,4.324,282,4.867]],["t/37",[1,2,4,0.62,8,3.66,22,0.869,28,1.729,45,2.203,46,0.72,84,2.307,87,1.534,88,1.492,94,0.938,105,2.861,112,1.922,113,1.079,115,1.381,138,0.791,140,1.625,239,2.506,242,1.381,279,1.421,283,2.158,284,4.997,285,1.625,286,2.625,287,3.221,288,4.006,289,5.893,290,3.221,291,3.165,292,2.625,293,1.922,294,2.861,295,4.336,296,1.994,297,3.031,298,2.189,299,1.256,300,3.221,301,3.977,302,7.956,303,4.881,304,8.146,305,1.415,306,2.319,307,2.398,308,3.221,309,4.336,310,0.939,311,2.861]],["t/39",[7,1.819,22,0.853,45,2.844,51,2.564,113,1.934,115,2.475,184,5.128,297,4.558,305,1.242,307,2.105,312,0.865,313,5.772,314,4.387,315,3.743,316,5.772,317,5.128,318,2.333,319,4.387,320,5.772]],["t/41",[4,0.608,7,1.835,8,2.988,21,0.961,22,0.84,39,2.263,41,2.575,46,1.301,54,1.833,78,1.963,85,1.963,94,0.92,113,1.951,138,0.512,151,7.027,157,1.696,185,6.557,190,5.61,218,1.963,219,2.774,237,2.402,250,4.274,262,2.208,270,1.248,285,2.427,296,1.291,310,1.121,311,2.807,312,1.05,318,1.322,321,3.92,322,4.81,323,3.777,324,7.381,325,3.16,326,1.886,327,3.16,328,2.263,329,5.785,330,2.323,331,6.511,332,2.263,333,2.807,334,1.696,335,2.263,336,3.476,337,5.825,338,4.81,339,2.871,340,3.16,341,3.16,342,3.16,343,3.16,344,3.16,345,1.104,346,1.232,347,0.747,348,1.016,349,3.16,350,3.16,351,2.575,352,2.807,353,2.807,354,3.16,355,3.16,356,3.16]],["t/43",[4,1.046,10,2.823,21,1.5,22,0.832,51,1.3,54,2.447,83,2.665,85,2.311,97,1.273,102,2.529,113,1.247,138,1.041,157,3.447,236,1.357,262,2.023,309,3.306,312,1.244,314,2.828,323,4.869,328,2.665,345,1.898,346,1.451,347,1.284,348,1.747,357,3.306,358,3.721,359,3.721,360,3.721,361,3.721,362,3.721,363,2.413,364,3.721,365,3.721,366,3.721,367,3.721,368,2.14,369,2.665,370,3.721,371,5.435,372,3.033,373,3.721,374,4.828,375,4.13,376,2.828,377,1.998,378,2.897,379,3.306,380,3.033,381,5.435,382,2.119,383,3.721,384,3.125,385,2.311,386,2.14,387,3.721,388,3.033,389,1.387,390,1.357,391,3.306,392,3.721,393,2.828,394,3.306,395,3.721]],["t/46",[22,0.626,57,6.144,94,2.014,156,3.205,293,4.128,384,3.976,396,6.916,397,4.953,398,6.916,399,5.256,400,6.916,401,6.916,402,6.916]],["t/48",[21,1.714,157,4.011,403,7.471]],["t/50",[1,3.059,22,0.676,28,3.551,39,3.527,45,1.65,51,2.311,94,1.434,95,3.743,220,4.375,280,3.527,293,2.939,297,3.059,306,2.171,310,0.948,318,2.052,321,6.087,332,3.527,336,2.939,399,3.743,404,4.924,405,4.013,406,4.013,407,4.013,408,5.39,409,4.013,410,4.013,411,5.877,412,4.924,413,7.094,414,4.924,415,4.924,416,3.347,417,6.615,418,3.347,419,4.375,420,4.924,421,6.615,422,4.924,423,7.469,424,3.193,425,4.924,426,4.924,427,4.924,428,4.924]],["t/52",[8,3.023,17,2.798,21,0.972,28,2.613,34,2.087,42,3.966,46,1.775,47,2.836,49,2.531,85,3.023,94,1.911,280,5.692,318,1.337,399,4.988,413,7.371,419,5.83,429,5.348,430,6.563,431,5.348,432,4.867,433,4.867,434,4.324,435,4.867,436,4.867,437,3.486,438,4.867,439,4.867,440,4.867,441,4.867,442,4.867,443,4.324,444,4.867,445,5.942,446,3.308,447,4.867,448,3.486,449,4.867,450,4.867,451,4.867,452,4.867,453,4.867]],["t/55",[0,3.515,22,0.871,51,2.848,58,3.769,78,2.873,81,3.313,82,2.659,87,3.019,88,3.352,138,0.75,239,2.31,301,3.769,305,0.996,306,2.08,307,2.312,336,2.76,437,3.313,446,3.144,454,3.769,455,4.109,456,4.625,457,4.625,458,4.625,459,3.515,460,5.838,461,3.313,462,4.625,463,4.109,464,2.483,465,3.515,466,4.109,467,4.625]],["t/57",[1,2.512,21,1.344,22,0.856,42,3.296,49,2.103,51,2.016,78,3.585,87,2.749,88,3.739,102,2.749,106,2.623,138,1.19,140,2.04,157,2.171,178,3.743,237,3.074,242,2.475,262,1.819,297,3.585,298,2.749,305,1.242,306,1.327,391,3.593,424,2.623,446,3.923,460,2.897,466,5.128,468,3.593,469,3.593,470,3.074,471,5.772,472,4.045,473,4.045,474,5.484,475,5.772,476,4.045,477,4.045,478,4.045,479,4.045,480,3.593,481,4.045,482,4.045,483,4.045,484,4.045,485,2.103,486,4.045,487,2.414,488,4.045,489,4.045,490,4.045,491,3.593,492,3.296,493,2.512]],["t/59",[22,0.606,76,5.456,88,3.727,113,2.243,138,1.086,445,4.795,446,4.551,460,6.175,470,5.088,494,6.695,495,6.695,496,6.695,497,6.695,498,5.948]],["t/61",[4,1.074,8,3.466,22,0.828,45,1.869,49,2.902,51,1.949,54,2.127,111,6.38,115,2.393,124,4.547,197,4.547,238,2.902,239,1.657,270,1.448,279,1.625,299,2.8,434,4.958,499,5.58,500,4.958,501,6.38,502,5.58,503,5.58,504,4.241,505,5.58,506,4.958,507,5.58,508,7.182,509,4.958,510,7.182,511,5.58]],["t/63",[22,0.859,33,1.722,87,3.32,88,2.8,106,2.798,140,4.011,239,2.361,279,1.256,296,1.763,305,1.501,306,2.704,307,2.542,310,0.83,318,2.264,463,3.834,464,3.743,501,6.194,512,3.517,513,4.924,514,1.446,515,4.898,516,7.553,517,7.553,518,1.71]],["t/65",[34,3.148,63,3.496,87,3.496,88,3.401,97,2.511,178,4.76]],["t/67",[0,1.662,17,1.257,21,1.058,22,0.834,24,1.418,28,2.456,45,0.733,46,1.307,54,2.534,69,2.928,78,1.358,82,1.257,85,1.358,89,1.214,91,2.573,92,3.476,94,1.542,97,0.748,103,1.943,109,2.731,112,2.73,113,1.96,115,0.938,138,0.583,157,1.174,218,1.358,262,1.132,270,1.633,283,1.179,285,1.813,288,1.486,291,2.33,294,1.943,299,0.853,305,0.471,312,0.877,321,2.928,328,1.566,329,1.943,330,2.372,332,4.506,346,1.401,347,0.849,348,1.155,351,1.782,369,1.566,378,2.39,380,1.782,388,1.782,411,4.064,424,1.418,429,3.727,437,1.566,443,1.943,459,4.026,492,3.727,498,1.943,509,3.192,514,1.204,519,2.187,520,2.187,521,1.782,522,2.187,523,4.316,524,4.064,525,2.94,526,2.187,527,5.658,528,4.191,529,2.187,530,2.187,531,2.187,532,4.574,533,6.647,534,1.662,535,2.187,536,2.187,537,2.187,538,1.782,539,2.187,540,2.187,541,4.574,542,2.187,543,1.468,544,3.192,545,3.192,546,2.187,547,2.187,548,3.593,549,3.192,550,1.782,551,3.593,552,3.593,553,3.593,554,1.662,555,4.574,556,3.593,557,2.187,558,5.297,559,1.782,560,2.187,561,2.187,562,2.187,563,1.943,564,2.187,565,2.187,566,1.782,567,2.187,568,2.187,569,2.187,570,1.782,571,3.593,572,1.662,573,1.662,574,1.662,575,2.187,576,2.187,577,2.187,578,1.943,579,1.943,580,1.943]],["t/69",[21,0.743,22,0.85,28,1.998,46,1.752,54,2.989,85,3.375,91,5.056,92,2.828,94,1.083,112,2.221,113,1.247,138,0.603,140,1.877,168,3.306,283,1.221,291,2.413,296,1.52,312,0.558,328,3.892,330,1.939,346,1.451,347,1.284,348,1.197,378,2.897,429,3.033,454,3.033,492,3.033,523,5.232,524,3.306,527,4.429,528,3.892,543,1.52,544,3.306,545,3.306,570,3.033,572,2.828,578,3.306,579,3.306,581,3.721,582,5.704,583,3.721,584,3.721,585,3.721,586,1.451,587,6.42,588,6.42,589,3.033,590,3.721,591,3.721,592,3.721,593,3.721,594,5.435,595,3.721,596,7.842,597,3.721,598,3.721,599,3.721,600,3.721,601,3.721]],["t/72",[33,3.048,66,2.02,122,4.183,131,5.472,138,0.998,145,5.807,323,3.991,328,4.408,357,5.467,431,5.015,580,5.467,602,5.807,603,5.467,604,6.788,605,6.154,606,6.154,607,6.154,608,6.226,609,6.154,610,4.677,611,4.408,612,6.154]],["t/74",[4,1.672,22,0.691,33,3.315,107,2.455,113,2.559,115,2.639,285,3.854,504,4.677,613,5.467,614,5.467,615,7.64,616,7.64,617,2.726]],["t/76",[4,1.258,22,0.836,33,2.609,107,1.797,262,2.499,312,1.189,334,3.51,347,1.545,348,2.102,543,2.671,618,3.884,619,4.24]],["t/78",[4,1.258,22,0.836,33,2.609,107,1.797,262,2.499,312,1.189,334,3.51,347,1.545,348,2.102,543,2.671,620,4,621,6.538]],["t/80",[22,0.872,35,3.29,97,1.735,100,3.746,102,3.448,106,3.29,239,2.399,242,2.894,262,2.547,306,2.761,310,0.976,572,3.856,622,3.634,623,4.507,624,4.587,625,4.507,626,4.191,627,3.623,628,2.126,629,3.634]],["t/83",[4,0.991,22,0.881,33,2.055,46,0.773,97,1.183,107,1.415,113,1.159,115,2.209,138,0.561,219,2.453,239,2.024,242,2.923,243,2.065,262,2.738,297,2.149,306,2.726,307,2.244,312,0.772,315,3.34,346,2.008,347,1.217,348,1.656,543,2.104,624,4.633,627,2.765,630,3.46,631,3.158,632,3.34,633,5.151,634,3.46,635,3.46,636,2.065]],["t/85",[4,0.937,7,1.534,22,0.874,33,1.942,107,1.337,113,1.63,115,2.814,138,0.789,239,1.949,242,3.184,243,2.905,262,2.694,291,3.156,306,2.154,307,2.393,310,0.937,312,0.984,346,1.898,347,1.15,348,1.565,543,1.988,624,3.308,627,2.613,631,2.255,636,2.905,637,4.256,638,4.867]],["t/87",[4,0.843,7,1.381,22,0.846,33,1.749,34,2.619,51,2.134,66,1.438,107,1.204,113,1.468,138,0.99,171,2.842,216,3.331,218,2.722,238,4.159,239,1.814,242,1.88,243,2.616,262,1.925,285,2.211,298,4.152,312,0.916,346,1.709,347,1.036,348,1.409,416,4.152,418,2.979,465,4.642,543,1.79,554,4.642,573,4.642,611,3.139,624,2.979,628,2.215,639,3.572,640,3.894,641,4.642,642,2.992,643,4.375,644,1.978,645,2.147,646,2.031,647,3.894,648,4.383,649,1.834,650,3.139,651,3.139,652,3.139]],["t/89",[4,0.802,7,1.313,22,0.858,33,1.662,51,2.059,66,1.934,107,1.144,115,2.527,138,0.675,171,2.701,216,3.166,218,2.587,238,4.587,239,1.75,242,2.933,243,2.486,262,1.857,285,2.973,291,2.701,312,0.883,346,1.624,347,0.984,348,1.339,363,2.701,416,4.006,418,4.006,543,1.701,611,2.983,624,2.831,628,2.343,637,3.822,639,3.394,643,4.221,644,1.88,645,2.041,646,1.93,647,3.701,649,1.743,650,4.221,651,4.221,652,4.221,653,3.701,654,4.165]],["t/91",[4,0.689,7,1.128,22,0.849,33,1.428,34,1.534,46,1.18,51,2.192,63,1.704,66,1.174,76,2.916,82,3.036,97,1.224,107,0.983,115,1.534,138,0.856,156,2.447,171,2.32,216,2.72,218,2.222,227,2.222,238,3.843,239,1.568,242,2.691,243,2.136,262,1.664,285,3.166,291,2.32,307,1.305,310,1.016,312,0.792,335,2.563,346,1.395,347,0.845,348,1.151,416,2.432,418,2.432,445,2.563,459,4.77,543,1.462,559,2.916,611,2.563,624,2.432,627,1.921,628,2.437,629,4.495,632,2.32,637,2.32,639,2.916,643,2.563,644,1.615,645,1.753,649,1.497,650,2.563,651,2.563,652,2.563,653,3.179,655,6.302,656,3.578,657,3.578,658,3.578,659,2.136,660,6.276,661,2.916,662,2.916,663,3.578,664,3.578,665,5.28]],["t/93",[34,3.016,138,1.14,298,4.78,465,5.345,554,5.345,573,5.345,628,2.216,640,6.248,641,5.345,642,3.445,666,6.248]],["t/95",[12,4.345,17,3.065,33,2.782,35,5.038,97,1.824,138,1.449,156,2.471,372,4.345,608,4.345,627,4.709,628,2.197,629,4.994,637,4.521,667,5.332,668,5.332,669,5.332,670,4.869,671,5.235,672,6.902,673,5.332]],["t/97",[34,2.99,97,2.385,138,1.131,227,4.331,334,3.744,674,4.995,675,6.196,676,6.196,677,6.196,678,6.196,679,6.196,680,6.196]],["t/99",[4,1.754,7,1.832,21,1.473,28,3.957,94,2.357,138,1.195,203,5.164,374,7.191,500,5.164,681,5.813,682,5.813,683,5.813,684,5.813,685,5.813,686,7.371,687,5.813,688,5.813,689,7.371,690,5.813,691,5.813,692,5.813]],["t/101",[18,5.829,24,4.638,85,4.442,89,3.97,90,5.829,671,4.269,693,7.152,694,7.152,695,5.829]],["t/103",[4,1.239,8,2.938,10,2.83,21,0.945,22,0.866,46,1.057,89,2.625,264,4.202,270,1.227,288,4.375,293,2.823,310,0.91,312,1.097,314,4.892,318,1.3,379,5.718,389,2.399,461,4.61,518,1.16,550,3.854,623,5.718,696,4.73,697,4.73,698,3.854,699,4.73,700,3.387,701,6.437,702,4.202,703,4.73,704,4.73,705,4.73,706,4.73,707,4.73,708,4.202,709,4.73,710,4.73,711,4.202]],["t/105",[4,1.268,10,2.153,22,0.847,52,4.349,54,2.511,140,2.47,242,2.825,262,2.076,279,1.425,306,1.607,312,1.246,318,1.345,346,1.909,348,2.118,368,2.815,377,2.628,543,2,625,4.349,698,5.369,712,3.788,713,4.895,714,1.857,715,3.041,716,4.895,717,4.349,718,4.349,719,5.853,720,4.349,721,5.853,722,4.895,723,4.895,724,4.895,725,4.349]],["t/107",[4,1.067,22,0.842,97,1.896,115,2.377,155,2.883,286,4.517,306,1.819,312,1.254,319,4.213,345,1.936,347,1.31,348,1.782,363,3.595,515,3.595,538,6.451,631,2.569,714,1.238,726,6.353,727,4.925,728,4.925,729,5.543,730,4.925,731,4.925,732,4.925,733,4.925,734,4.925,735,4.925,736,5.543]],["t/109",[34,3.067,63,3.406,66,2.347,87,3.406,88,3.314,97,2.446,310,1.61,622,5.122]],["t/111",[4,1.406,21,1.46,22,0.857,47,2.046,107,1.575,134,1.516,305,1.573,312,1.206,345,2.003,346,2.849,518,1.792,617,2.046,714,1.281,737,5.733,738,1.736,739,1.736,740,6.492,741,1.545,742,3.718]],["t/113",[4,1.283,21,1.332,22,0.862,107,1.369,134,1.318,155,3.467,262,2.101,305,1.435,312,1.126,345,1.741,346,2.599,347,1.575,348,2.144,378,3.009,382,2.599,384,3.833,385,4.141,386,3.833,518,1.635,617,1.778,618,2.441,714,1.113,738,1.509,739,1.509,741,1.343,742,3.231,743,3.569]],["t/115",[4,1.347,21,1.399,22,0.866,107,1.474,134,1.419,305,1.507,312,1.168,345,1.874,346,2.73,393,5.321,518,1.717,617,1.915,618,2.629,714,1.199,738,1.625,739,1.625,741,1.446,742,3.479,743,3.843,744,4.373,745,4.373,746,5.706,747,4.373]],["t/117",[4,1.224,15,3.309,21,1.271,22,0.869,63,2.215,107,1.278,134,1.23,305,1.37,312,1.087,345,1.625,346,2.481,518,1.561,525,3.532,617,1.66,618,2.278,714,1.039,738,1.408,739,1.408,741,1.254,742,3.016,743,3.331,748,3.79,749,5.552,750,6.356,751,5.186,752,3.798,753,3.798,754,5.186,755,3.79]],["t/119",[4,1.248,15,3.933,21,1.296,22,0.854,45,1.269,46,0.846,47,1.352,54,1.444,83,2.713,107,1.041,134,1.456,138,0.893,262,1.735,270,0.983,305,1.628,312,1.067,345,1.323,346,2.147,369,2.713,382,2.147,461,3.943,518,1.746,617,1.352,618,1.856,714,1.449,738,1.147,739,1.147,741,1.484,742,2.457,743,2.713,749,2.575,752,2.261,753,3.286,756,4.839,757,4.839,758,3.087,759,3.087,760,3.087,761,4.487,762,4.487,763,4.487,764,3.087,765,4.487,766,4.487,767,5.506,768,4.487,769,3.087,770,1.125]],["t/121",[15,3.224,17,3.565,22,0.754,26,3.851,70,3.851,72,4.44,397,4.44,528,4.44,534,4.712,610,4.712,645,3.76,752,4.581,753,3.7,756,5.217,757,5.217,771,5.052,772,5.052,773,5.052,774,5.052,775,5.052,776,5.052]],["t/123",[4,1.036,21,1.075,22,0.868,46,1.567,54,1.4,157,2.89,239,1.09,262,1.157,270,1.653,301,5.192,305,1.78,306,2.091,312,1.209,318,2.145,323,3.49,345,1.88,346,2.098,375,5.332,376,4.091,384,3.095,385,3.343,515,3.49,518,1.832,618,1.799,631,2.952,742,3.49,743,2.63,770,1.892,777,2.993,778,2.993,779,4.386,780,2.993,781,2.993,782,2.993,783,4.386]],["t/126",[618,3.727,784,3.345]],["t/128",[4,1.283,7,1.57,22,0.839,25,3.569,138,0.808,238,2.591,239,1.98,249,4.061,312,1.126,318,1.369,332,3.569,339,2.974,345,1.741,378,2.248,382,2.599,384,2.865,437,3.569,632,3.231,700,3.569,718,5.923,785,3.787,786,3.569,787,4.983,788,4.983,789,4.983,790,4.983,791,4.983,792,4.427,793,7.514,794,4.061,795,4.983,796,4.983,797,4.983,798,4.983,799,4.983,800,4.983,801,4.983,802,4.983,803,4.983,804,4.983,805,4.983]],["t/130",[1,4.125,4,1.278,15,3.454,23,5.048,28,3.566,82,3.819,84,4.757,87,3.163,88,3.078,93,4.515,95,5.048,96,5.413,122,4.515,700,4.757,806,6.642,807,6.642,808,5.901,809,6.642]],["t/132",[5,4.907,33,3.283,63,2.868,70,3.74,97,2.06,117,5.35,120,4.576,124,4.907,131,5.892,145,6.553,170,5.35,174,5.35,178,3.905,602,6.253,603,5.35,604,5.35,608,6.142,810,6.021,811,6.021,812,6.021,813,6.021]],["t/134",[4,0.85,21,1.227,22,0.867,28,2.372,34,1.213,46,0.987,51,2.665,54,1.684,87,1.347,88,1.311,89,1.57,93,1.923,94,1.286,97,1.511,107,0.777,134,1.168,138,0.716,155,2.297,156,2.047,198,1.722,219,2.925,236,1.611,247,1.923,248,2.771,262,1.392,283,2.015,284,3.357,305,1.322,306,1.45,307,2.574,310,1.182,312,0.999,318,1.687,330,1.576,336,3.665,345,0.988,346,1.722,347,1.044,348,1.975,382,1.722,386,2.54,424,1.835,518,1.083,586,2.394,617,1.01,622,3.892,649,2.57,674,2.026,714,1.214,741,1.191,814,2.305,815,2.701,816,3.297,817,1.722,818,1.762]],["t/136",[0,3.23,4,1.013,7,0.849,21,1.194,22,0.843,33,1.695,34,1.822,35,1.746,46,0.949,51,2.528,54,1.026,81,3.043,82,2.443,87,3.905,88,3.476,89,1.495,93,1.83,94,1.237,97,1.453,106,1.746,107,1.168,134,0.712,155,2.21,156,1.969,198,1.657,219,2.024,227,1.672,236,1.55,247,1.83,262,1.339,279,1.74,283,1.394,284,2.047,288,2.888,293,2.536,296,1.1,305,0.915,306,1.394,307,1.55,310,1.252,312,0.896,318,1.642,319,3.23,330,1.516,345,0.941,346,1.657,347,1.004,348,1.922,382,1.657,386,2.443,424,1.746,459,3.23,460,1.928,464,2.281,468,2.392,470,2.047,485,1.4,512,2.194,513,3.463,514,0.902,518,0.66,586,2.33,589,2.194,602,2.047,617,0.961,649,1.778,674,1.928,714,0.949,741,0.726,814,2.194,815,1.869,817,1.657,818,1.695,819,2.693,820,2.693,821,2.392,822,2.693,823,2.693,824,2.693,825,4.249,826,4.249,827,4.249,828,2.392,829,2.392]],["t/138",[4,0.879,10,3.568,21,1.739,22,0.826,31,1.938,32,3.185,34,0.935,45,1.772,46,0.487,54,0.831,58,1.777,60,1.938,63,2.518,78,1.355,89,2.534,93,1.482,94,0.635,97,1.226,106,1.414,107,0.599,115,2.268,134,0.577,138,0.74,155,1.865,156,2.451,157,1.171,167,1.938,219,1.708,238,2.75,247,1.482,262,1.13,285,1.809,288,1.482,293,2.725,298,1.482,299,0.85,305,0.983,306,1.177,310,0.879,312,0.876,318,1.453,345,0.762,347,0.847,348,1.153,363,3.429,377,1.925,382,1.398,386,2.062,390,0.795,424,2.961,445,4.5,446,1.482,469,1.938,485,1.865,518,0.535,543,1.465,570,4.31,572,1.658,614,1.938,617,0.778,642,2.863,661,2.922,674,1.562,708,1.938,711,4.698,714,1.02,721,3.185,741,0.588,784,1.577,814,1.777,830,1.938,831,1.938,832,2.181,833,2.181,834,2.181,835,2.181,836,2.181,837,2.181,838,2.181,839,3.586,840,5.288,841,3.586,842,3.586,843,5.288,844,3.586,845,5.288,846,3.586,847,3.586,848,3.586,849,3.586,850,3.586,851,2.181,852,2.181,853,2.181,854,1.134,855,1.938,856,2.181,857,2.181,858,3.185,859,3.185,860,2.181,861,2.181,862,2.181,863,1.414,864,1.99,865,1.99,866,3.586,867,1.482,868,2.181,869,2.181]],["t/140",[4,1.12,10,2.796,16,2.282,21,1.474,22,0.853,24,1.666,28,1.379,30,2.093,33,2.537,54,2.219,84,1.84,89,4.626,107,1.599,138,1.031,155,3.027,156,2.946,219,1.949,236,0.937,239,1.215,262,1.834,283,1.343,293,1.533,299,1.002,306,1.675,307,1.493,310,0.982,312,1.14,317,2.282,318,1.599,345,0.897,346,1.99,347,1.375,348,2.285,377,1.379,382,2.27,386,3.347,394,3.637,397,1.84,445,1.84,464,2.198,487,1.533,491,2.282,543,1.672,617,1.461,631,1.19,659,1.533,695,3.336,700,1.84,702,2.282,712,2.934,714,1.513,715,1.596,794,2.093,815,1.8,870,2.569,871,2.569,872,2.569,873,3.637,874,4.094,875,4.094,876,2.569,877,6.358,878,2.569,879,2.569,880,2.569,881,2.569,882,2.569,883,2.569,884,2.569]],["t/142",[4,0.634,7,1.565,14,2.048,21,0.992,22,0.822,30,2.686,34,1.414,51,2.493,54,1.256,55,4.413,70,2.048,79,4.048,89,2.757,97,1.128,102,2.241,115,2.853,123,2.686,134,0.872,155,2.583,190,2.506,209,2.929,237,5.057,239,1.775,242,2.563,262,1.565,277,2.929,283,1.082,285,1.663,293,1.967,297,4.836,299,2.33,305,1.069,307,2.18,310,1.444,312,0.896,314,5.702,315,4.314,318,1.828,326,1.967,346,1.937,347,1.174,348,1.597,382,1.937,386,2.856,424,3.221,474,2.686,518,0.809,521,2.686,543,2.029,613,2.929,649,2.078,661,4.048,714,1.11,741,0.889,784,1.45,817,1.937,830,4.413,885,3.297,886,3.297,887,4.967,888,2.929,889,3.297,890,3.297,891,3.297,892,3.297]],["t/144",[22,0.647,33,2.212,37,2.501,63,2.64,81,3.97,82,3.187,87,4.123,88,3.876,97,1.896,106,3.595,227,3.443,279,2.082,288,3.768,293,3.308,296,2.264,307,2.021,310,1.376,460,3.97,470,4.213,512,4.517,513,5.827,514,1.857,589,4.517,602,4.213,644,2.501,645,2.716,646,2.569,828,4.925,829,4.925,893,5.543,894,5.543,895,4.925]],["t/146",[34,3.067,63,3.406,66,2.347,87,3.406,88,3.314,97,2.446,310,1.61,622,5.122]],["t/148",[4,1.278,10,2.92,21,1.497,22,0.856,46,1.107,47,1.768,107,1.361,134,1.31,138,0.803,270,1.285,305,1.612,310,1.278,312,1.2,345,1.73,485,2.576,518,1.629,617,1.768,642,2.427,714,1.107,738,1.5,739,1.5,741,1.335,770,1.471,863,3.212,864,2.75,865,2.75,867,3.367,896,4.953,897,6.641,898,4.307,899,2.75,900,3.548]],["t/150",[4,1.158,10,2.647,21,1.389,22,0.863,46,0.959,107,1.18,134,1.136,138,0.696,155,3.131,262,1.897,270,1.114,305,1.497,310,1.158,312,1.13,345,1.5,347,1.422,348,1.936,377,3.232,378,2.717,382,2.347,384,3.461,385,3.739,386,3.461,485,2.233,518,1.477,617,1.532,620,2.166,642,2.103,714,0.959,738,1.3,739,1.3,741,1.157,770,1.275,863,2.784,864,2.383,865,2.383,867,2.918,898,3.997,899,2.383,900,3.075,901,3.075]],["t/152",[4,1.211,10,2.767,21,1.437,22,0.866,46,1.022,107,1.257,134,1.21,138,0.742,270,1.187,305,1.548,310,1.211,312,1.161,345,1.598,377,3.378,393,4.782,485,2.379,518,1.543,617,1.632,620,2.308,642,2.241,714,1.022,738,1.385,739,1.385,741,1.233,744,3.728,745,3.728,746,5.127,747,3.728,770,1.358,863,2.966,864,2.539,865,2.539,867,3.109,898,4.135,899,2.539,900,3.276,901,3.276]],["t/154",[4,1.111,10,2.538,15,3.002,21,1.344,22,0.868,46,0.904,63,1.926,107,1.111,134,1.07,138,0.656,270,1.05,305,1.448,310,1.111,312,1.1,345,1.413,377,3.099,485,2.103,518,1.416,525,3.204,617,1.443,620,2.04,642,1.981,714,0.904,738,1.225,739,1.225,741,1.09,748,3.296,749,5.274,750,5.98,751,4.703,752,3.445,753,3.445,754,4.703,755,3.296,770,1.201,863,2.623,864,2.245,865,2.245,867,2.749,898,3.869,899,2.245,900,2.897,901,2.897]],["t/156",[4,1.167,10,2.224,15,3.75,21,1.345,22,0.856,45,1.131,46,1.13,47,1.205,54,1.287,83,2.418,107,0.928,134,1.338,138,0.983,262,1.594,270,1.312,305,1.629,310,0.973,312,1.081,345,1.179,369,2.418,377,2.715,382,1.972,461,3.622,485,1.756,518,1.652,617,1.205,620,1.703,642,1.654,714,1.355,725,4.493,738,1.022,739,1.022,741,1.363,749,2.295,752,2.015,753,3.018,756,4.577,757,4.577,758,2.751,759,2.751,760,2.751,761,4.121,762,4.121,763,4.121,764,2.751,765,4.121,766,4.121,768,4.121,769,2.751,770,1.502,863,2.189,864,1.874,865,1.874,867,2.295,898,3.486,899,1.874,900,2.418,901,2.418]],["t/158",[15,3.224,17,3.565,22,0.754,26,3.851,70,3.851,72,4.44,397,4.44,528,4.44,534,4.712,610,4.712,645,3.76,752,4.581,753,3.7,756,5.217,757,5.217,771,5.052,772,5.052,773,5.052,774,5.052,775,5.052,776,5.052]],["t/160",[4,1.077,10,2.462,22,0.863,46,1.608,54,1.477,157,3.005,239,1.151,262,1.221,270,1.705,305,1.712,306,2.156,312,1.229,318,2.185,323,3.63,345,1.955,375,5.469,376,4.255,377,3.005,384,3.219,385,3.477,515,3.63,518,1.612,620,1.955,631,3.045,770,1.951,777,3.159,778,3.159,779,4.562,780,3.159,781,3.159,782,3.159,783,4.562,901,2.776,902,6.571]],["t/163",[113,2.417,618,4.118,620,4.241,670,4.004,784,3.697]],["t/166",[7,1.851,21,0.828,22,0.844,37,1.87,45,2.624,46,0.926,47,1.479,51,2.383,66,1.36,94,1.207,134,1.096,138,0.672,198,1.616,236,1.511,239,1.744,248,2.65,270,1.076,279,1.71,283,1.927,296,1.693,299,1.616,305,1.468,310,0.798,312,1.174,318,1.874,330,1.479,347,1.387,389,1.545,390,1.511,514,1.388,518,1.44,586,2.29,628,1.306,646,2.721,649,2.457,714,0.926,738,1.255,739,1.255,741,1.117,770,1.231,817,2.29,818,1.654,854,3.054,903,3.15,904,4.463,905,2.877,906,1.734,907,1.654,908,1.616]],["t/168",[7,2.282,21,0.785,22,0.859,37,1.774,45,2.426,46,0.878,51,2.313,66,1.29,94,1.144,113,1.894,134,1.04,138,0.637,198,1.533,236,1.433,239,1.679,248,2.552,270,1.02,279,1.646,283,1.856,296,1.606,299,1.533,305,1.426,310,0.756,312,1.15,318,1.82,330,1.403,347,1.336,389,1.465,390,1.433,464,3.036,514,1.317,518,1.387,586,2.205,628,1.239,646,2.62,649,2.366,714,0.878,738,1.19,739,1.19,741,1.06,770,1.167,817,2.205,818,1.568,854,2.941,905,2.77,906,1.645,907,1.568,908,1.533,909,2.441,910,1.645]],["t/170",[7,2.268,21,0.774,22,0.862,37,1.749,45,2.557,46,0.866,51,2.295,66,1.272,94,1.129,113,1.875,134,1.025,138,0.628,198,1.511,236,1.413,239,1.662,248,2.526,270,1.006,279,1.63,283,1.837,296,1.583,299,1.511,305,1.414,310,0.746,312,1.144,318,1.805,330,1.383,347,1.323,389,1.445,390,1.413,464,3.005,514,1.298,518,1.373,586,2.183,628,1.221,646,2.594,649,2.342,714,0.866,738,1.174,739,1.174,741,1.045,770,1.151,817,2.183,818,1.547,854,2.911,905,2.742,906,1.622,907,1.547,908,1.511,909,2.408,910,1.622]],["t/173",[628,2.397,784,3.345]],["t/175",[784,3.345,910,3.183]],["t/177",[34,3.067,63,3.406,66,2.347,87,3.406,88,3.314,97,2.446,310,1.61,622,5.122]],["t/179",[4,1.22,21,1.445,22,0.86,46,1.033,47,2.262,54,1.763,107,1.271,134,1.223,138,0.75,270,1.2,305,1.557,310,1.22,312,1.166,345,1.616,485,2.405,518,1.555,617,1.65,642,2.266,714,1.033,738,1.401,739,1.401,740,5.632,741,1.247,770,1.373,864,2.567,865,2.567,898,4.159,899,2.567,911,3.144,912,4.625,913,3.937,914,3.937,915,4.309,916,4.309,917,4.54]],["t/181",[4,1.111,21,1.344,22,0.868,46,0.904,47,1.443,54,1.542,107,1.111,112,2.414,134,1.07,138,0.656,155,3.002,262,1.819,270,1.05,305,1.448,310,1.111,312,1.1,345,1.413,347,1.364,348,1.856,378,2.604,382,2.25,384,3.318,385,3.585,386,3.318,485,2.103,518,1.416,617,1.443,620,2.04,642,1.981,714,0.904,738,1.225,739,1.225,741,1.09,770,1.201,864,2.245,865,2.245,898,3.869,899,2.245,911,2.749,913,3.585,914,3.585,915,3.923,916,3.923,917,4.134]],["t/183",[4,1.158,21,1.389,22,0.871,46,0.959,47,1.532,54,1.636,107,1.18,112,2.562,134,1.136,138,0.696,270,1.114,305,1.497,310,1.158,312,1.13,345,1.5,393,4.576,485,2.233,518,1.477,617,1.532,620,2.166,642,2.103,714,0.959,738,1.3,739,1.3,741,1.157,744,3.499,745,3.499,746,4.906,747,3.499,770,1.275,864,2.383,865,2.383,898,3.997,899,2.383,911,2.918,913,3.739,914,3.739,915,4.092,916,4.092,917,4.312]],["t/185",[4,1.067,15,2.882,21,1.302,22,0.871,46,0.854,47,1.364,54,1.457,63,1.821,107,1.05,112,2.282,134,1.011,138,0.62,270,0.992,305,1.403,310,1.067,312,1.072,345,1.335,485,1.988,518,1.359,525,3.077,617,1.364,620,1.929,642,1.873,714,0.854,738,1.158,739,1.158,741,1.031,748,3.116,749,5.159,750,5.827,751,4.517,752,3.308,753,3.308,754,4.517,755,3.116,770,1.135,864,2.122,865,2.122,898,3.749,899,2.122,911,2.599,913,3.442,914,3.442,915,3.767,916,3.767,917,3.97]],["t/187",[4,1.134,15,3.675,21,1.314,22,0.861,45,1.079,46,1.09,47,1.742,54,1.86,83,2.307,107,0.885,112,1.922,134,1.291,138,0.955,262,1.538,270,1.267,305,1.6,310,0.939,312,1.059,345,1.125,369,2.307,382,1.903,461,3.495,485,1.675,518,1.613,617,1.149,620,1.625,642,1.578,714,1.317,738,0.975,739,0.975,741,1.316,749,2.189,752,1.922,753,2.913,756,4.469,757,4.469,758,2.625,759,2.625,760,2.625,761,3.977,762,3.977,763,3.977,764,2.625,765,3.977,766,3.977,768,3.977,769,2.625,770,1.449,864,1.788,865,1.788,898,3.388,899,1.788,911,2.189,913,3.031,914,3.031,915,3.317,916,3.317,917,3.495,918,4.881]],["t/189",[15,3.224,17,3.565,22,0.754,26,3.851,70,3.851,72,4.44,397,4.44,528,4.44,534,4.712,610,4.712,645,3.76,752,4.581,753,3.7,756,5.217,757,5.217,771,5.052,772,5.052,773,5.052,774,5.052,775,5.052,776,5.052]],["t/191",[4,1.01,22,0.868,46,1.542,47,1.266,54,1.352,112,2.117,157,2.817,239,1.053,262,1.118,270,1.621,305,1.659,306,2.049,312,1.254,318,2.118,323,3.403,345,1.833,375,5.244,376,3.988,384,3.017,385,3.259,515,3.403,518,1.532,620,1.79,631,2.894,770,1.854,777,2.891,778,2.891,779,4.276,780,2.891,781,2.891,782,2.891,783,4.276,911,2.412,913,3.259,914,3.259,915,3.567,916,3.567,919,5.247,920,5.247,921,6.244]],["t/194",[113,2.417,618,4.118,620,4.241,670,4.004,784,3.697]],["t/196",[4,0.724,7,0.729,10,1.655,21,0.462,22,0.858,39,3.924,54,0.882,89,1.284,115,2.039,134,0.612,138,0.61,143,1.758,155,1.203,157,2.941,178,1.5,179,2.055,196,2.055,197,1.885,201,2.055,204,2.055,218,1.437,225,2.055,239,0.687,262,1.726,270,0.6,280,1.657,283,0.759,286,3.876,305,1.179,306,1.561,312,1.1,318,1.034,319,2.86,335,2.695,346,1.467,347,1.124,348,1.21,351,3.066,352,2.055,363,1.5,368,2.734,377,1.242,378,1.698,384,2.734,385,2.954,437,2.695,506,4.867,515,1.5,518,0.567,527,1.885,538,3.876,550,1.885,631,1.744,698,3.066,712,2.163,714,1.586,717,4.225,719,2.055,720,3.343,726,3.343,727,2.055,728,2.055,730,3.343,731,2.055,732,5.356,733,2.055,734,2.055,735,3.343,741,0.624,786,2.695,794,1.885,873,2.055,922,3.763,923,2.313,924,2.313,925,3.763,926,3.763,927,2.055,928,2.313,929,3.763,930,2.313,931,2.313,932,4.756,933,4.225,934,5.479,935,6.028,936,5.479,937,3.763,938,2.313,939,2.313,940,2.313,941,3.763,942,2.313,943,4.756,944,2.313,945,3.763,946,2.313,947,2.313,948,2.313,949,2.313,950,2.313,951,2.313,952,2.313,953,2.313,954,2.313,955,2.313,956,2.313]],["t/199",[7,1.838,21,0.82,22,0.859,45,2.614,46,1.303,47,1.465,66,1.347,94,1.195,134,1.085,138,0.665,198,1.6,236,1.497,248,2.632,270,1.065,279,1.195,283,1.914,305,1.46,306,2.561,307,2.127,310,0.79,312,1.17,318,1.864,330,1.465,347,1.378,389,1.53,390,1.497,514,1.375,518,1.43,586,2.274,631,2.702,714,0.917,738,1.243,739,1.243,741,1.106,770,1.219,815,2.564,816,3.131,817,2.274,818,1.637,903,3.119,904,4.432,906,1.717,907,1.637,908,1.6]],["t/201",[7,2.273,21,0.778,22,0.868,45,2.416,46,1.255,66,1.278,94,1.134,113,1.882,134,1.03,138,0.631,198,1.518,236,1.42,248,2.535,270,1.011,279,1.134,283,1.843,305,1.418,306,2.509,307,2.048,310,0.749,312,1.146,318,1.81,330,1.39,347,1.327,389,1.452,390,1.42,464,3.015,514,1.305,518,1.378,586,2.19,631,2.603,714,0.87,738,1.179,739,1.179,741,1.05,770,1.156,815,2.47,816,3.015,817,2.19,818,1.554,906,1.629,907,1.554,908,1.518,909,2.419,910,1.629]],["t/203",[7,2.258,21,0.767,22,0.869,45,2.547,46,1.242,66,1.26,94,1.118,113,1.863,134,1.016,138,0.623,198,1.497,236,1.401,248,2.509,270,0.997,279,1.118,283,1.825,305,1.407,306,2.495,307,2.028,310,0.739,312,1.14,318,1.796,330,1.371,347,1.314,389,1.432,390,1.401,464,2.985,514,1.287,518,1.364,586,2.168,631,2.577,714,0.858,738,1.163,739,1.163,741,1.035,770,1.14,815,2.445,816,2.985,817,2.168,818,1.532,906,1.607,907,1.532,908,1.497,909,2.385,910,1.607]],["t/206",[784,3.345,910,3.183]],["t/208",[8,4.192,22,0.61,34,2.894,63,3.214,66,2.215,87,3.214,88,3.127,97,2.764,178,4.376,284,5.129,307,2.461,644,3.045,645,3.306,646,3.127,895,5.996]],["t/211",[7,1.812,21,0.804,22,0.847,37,1.816,45,2.778,46,0.899,47,1.436,51,2.344,66,1.321,94,1.172,134,1.065,138,0.653,198,1.569,236,1.468,248,2.595,270,1.045,279,1.675,296,1.644,299,1.569,305,1.445,310,0.775,312,1.161,318,1.844,330,1.436,389,1.5,390,1.468,514,1.348,518,1.411,586,2.242,628,1.268,644,2.595,649,2.407,714,0.899,738,1.219,739,1.219,741,1.085,770,1.195,815,2.529,816,3.088,817,2.242,818,1.606,903,3.059,904,4.372,905,2.818,906,1.684,907,1.606,908,1.569,957,3.088,958,2.665,959,4.119]],["t/213",[7,2.253,21,0.764,22,0.861,37,1.725,45,2.652,46,0.854,51,2.277,66,1.255,94,1.113,113,1.857,134,1.011,138,0.62,198,1.491,236,1.394,248,2.501,270,0.992,279,1.614,296,1.562,299,1.491,305,1.403,310,0.736,312,1.138,318,1.791,330,1.364,389,1.425,390,1.394,464,2.976,514,1.281,518,1.359,586,2.161,628,1.205,644,2.501,649,2.319,714,0.854,738,1.158,739,1.158,741,1.031,770,1.135,815,2.437,816,2.976,817,2.161,818,1.525,905,2.715,906,1.6,907,1.525,908,1.491,909,2.375,910,1.6,957,2.976,958,2.568,959,3.97]],["t/215",[7,2.239,21,0.753,22,0.863,37,1.702,45,2.724,46,0.843,51,2.26,66,1.238,94,1.098,113,1.838,134,0.998,138,0.611,198,1.47,236,1.375,248,2.476,270,0.979,279,1.598,296,1.541,299,1.47,305,1.392,310,0.726,312,1.132,318,1.778,330,1.346,389,1.406,390,1.375,464,2.946,514,1.263,518,1.346,586,2.14,628,1.188,644,2.476,649,2.296,714,0.843,738,1.142,739,1.142,741,1.017,770,1.12,815,2.413,816,2.946,817,2.14,818,1.505,905,2.688,906,1.578,907,1.505,908,1.47,909,2.343,910,1.578,957,2.946,958,2.543,959,3.93]],["t/218",[628,2.397,784,3.345]],["t/220",[784,3.345,910,3.183]],["t/223",[7,1.788,21,0.789,22,0.851,37,1.782,45,2.575,46,0.882,47,1.409,51,2.32,66,1.296,94,1.15,134,1.045,138,0.64,198,1.54,236,1.44,239,1.685,270,1.025,279,1.652,283,1.862,285,2.862,296,1.613,299,1.54,305,1.429,310,0.76,312,1.153,318,1.825,330,1.409,347,1.341,389,1.472,390,1.44,514,1.323,518,1.392,586,2.212,628,1.244,645,2.78,649,2.374,714,0.882,738,1.196,739,1.196,741,1.065,770,1.173,815,2.495,817,2.212,818,1.576,854,2.951,903,3.002,904,4.312,905,2.78,906,1.652,907,1.576,908,1.54,958,2.629,960,4.064]],["t/225",[7,2.234,21,0.75,22,0.863,37,1.694,45,2.375,46,0.839,51,2.254,66,1.232,94,1.093,113,1.832,134,0.993,138,0.609,198,1.464,236,1.369,239,1.624,270,0.974,279,1.593,283,1.795,285,2.759,296,1.534,299,1.464,305,1.389,310,0.722,312,1.13,318,1.773,330,1.34,347,1.292,389,1.399,390,1.369,464,2.937,514,1.258,518,1.342,586,2.133,628,1.183,645,2.68,649,2.289,714,0.839,738,1.137,739,1.137,741,1.012,770,1.115,815,2.405,817,2.133,818,1.498,854,2.845,905,2.68,906,1.571,907,1.498,908,1.464,909,2.332,910,1.571,958,2.535,960,3.918]],["t/227",[7,2.22,21,0.74,22,0.865,37,1.672,45,2.511,46,0.828,51,2.237,66,1.216,94,1.079,113,1.815,134,0.98,138,0.601,198,1.444,236,1.351,239,1.608,270,0.961,279,1.577,283,1.778,285,2.733,296,1.513,299,1.444,305,1.378,310,0.713,312,1.124,318,1.759,330,1.322,347,1.28,389,1.381,390,1.351,464,2.908,514,1.241,518,1.329,586,2.112,628,1.167,645,2.654,649,2.267,714,0.828,738,1.122,739,1.122,741,0.999,770,1.1,815,2.382,817,2.112,818,1.478,854,2.817,905,2.654,906,1.55,907,1.478,908,1.444,909,2.301,910,1.55,958,2.51,960,3.88]],["t/230",[628,2.397,784,3.345]],["t/232",[784,3.345,910,3.183]],["t/234",[97,2.533,279,2.156,487,4.42,514,2.481,961,5.628]],["t/236",[7,1.925,21,0.876,22,0.834,37,1.978,46,0.979,47,1.564,51,2.456,66,1.438,94,1.276,134,1.159,138,0.711,198,1.709,236,1.598,239,1.814,248,2.756,270,1.138,279,1.276,283,2.004,296,1.79,299,1.709,305,1.513,310,1.175,312,1.054,318,1.932,330,1.564,347,1.443,389,1.634,390,1.598,448,3.139,514,1.468,518,1.498,586,2.381,628,1.381,646,2.83,649,2.556,714,0.979,738,1.327,739,1.327,741,1.182,770,1.301,817,2.381,818,1.749,854,3.177,905,2.992,906,1.834,907,1.749,908,1.709,962,4.642]],["t/238",[7,2.333,21,0.824,22,0.855,37,1.861,46,0.921,51,2.376,66,1.353,94,1.201,113,1.96,134,1.091,138,0.669,198,1.608,236,1.504,239,1.738,248,2.641,270,1.07,279,1.201,283,1.92,296,1.685,299,1.608,305,1.464,310,1.126,312,1.02,318,1.869,330,1.472,336,3.493,347,1.383,389,1.537,390,1.504,514,1.382,518,1.435,586,2.282,628,1.3,646,2.712,649,2.449,714,0.921,738,1.249,739,1.249,741,1.112,770,1.225,817,2.282,818,1.646,854,3.044,905,2.867,906,1.726,907,1.646,908,1.608,910,1.726,963,2.954]],["t/241",[628,2.397,784,3.345]],["t/243",[784,3.345,910,3.183]],["t/245",[97,2.533,279,2.156,487,4.42,514,2.481,961,5.628]],["t/247",[7,1.911,21,0.867,22,0.821,37,1.957,45,2.031,46,0.969,47,1.548,51,2.442,66,1.424,94,1.263,134,1.147,138,0.703,198,1.691,236,1.582,248,2.736,270,1.126,279,1.263,296,1.772,299,1.691,305,1.505,310,1.167,312,1.048,318,1.921,330,1.548,389,1.617,390,1.582,448,3.107,514,1.453,518,1.487,586,2.364,628,1.367,644,2.736,649,2.537,714,0.969,738,1.314,739,1.314,741,1.169,770,1.288,815,2.667,816,3.256,817,2.364,818,1.731,905,2.971,906,1.815,907,1.731,908,1.691,957,3.256,958,2.81,959,4.343,962,4.609]],["t/249",[7,2.323,21,0.816,22,0.849,37,1.843,45,1.947,46,0.912,51,2.363,66,1.34,94,1.189,113,1.947,134,1.08,138,0.662,198,1.592,236,1.489,248,2.622,270,1.06,279,1.189,296,1.668,299,1.592,305,1.456,310,1.118,312,1.014,318,1.859,330,1.457,336,3.468,389,1.522,390,1.489,514,1.368,518,1.425,586,2.266,628,1.287,644,2.622,649,2.432,714,0.912,738,1.237,739,1.237,741,1.101,770,1.213,815,2.556,816,3.12,817,2.266,818,1.629,905,2.847,906,1.709,907,1.629,908,1.592,910,1.709,957,3.12,958,2.693,959,4.162,963,2.925]],["t/252",[628,2.397,784,3.345]],["t/254",[784,3.345,910,3.183]],["t/256",[97,2.533,279,2.156,487,4.42,514,2.481,961,5.628]],["t/258",[7,1.925,21,0.876,22,0.85,46,1.365,47,1.564,66,1.438,94,1.276,134,1.159,138,0.711,198,1.709,236,1.598,248,2.756,270,1.138,283,2.004,305,1.513,306,2.624,307,2.227,310,1.175,312,1.054,318,1.932,330,1.564,347,1.443,389,1.634,390,1.598,448,3.139,514,1.468,518,1.498,586,2.381,631,2.83,714,0.979,738,1.327,739,1.327,741,1.182,770,1.301,815,2.686,816,3.279,817,2.381,818,1.749,906,1.834,907,1.749,908,1.709,962,4.642]],["t/260",[7,2.333,21,0.824,22,0.863,46,1.307,66,1.353,94,1.201,113,1.96,134,1.091,138,0.669,198,1.608,236,1.504,248,2.641,270,1.07,283,1.92,305,1.464,306,2.565,307,2.134,310,1.126,312,1.02,318,1.869,330,1.472,336,3.493,347,1.383,389,1.537,390,1.504,514,1.382,518,1.435,586,2.282,631,2.712,714,0.921,738,1.249,739,1.249,741,1.112,770,1.225,815,2.573,816,3.142,817,2.282,818,1.646,906,1.726,907,1.646,908,1.608,910,1.726,963,2.954]],["t/262",[7,2.307,21,0.804,22,0.861,46,1.285,66,1.321,94,1.172,113,1.927,115,2.466,134,1.065,138,0.653,198,1.569,236,1.468,248,2.595,270,1.045,283,1.887,297,2.5,305,1.445,306,2.542,307,2.097,310,1.107,312,1.006,315,3.73,318,1.844,330,1.436,336,3.433,347,1.359,389,1.5,390,1.468,514,1.348,518,1.411,586,2.242,631,2.665,714,0.899,738,1.219,739,1.219,741,1.085,770,1.195,815,2.529,816,3.088,817,2.242,818,1.606,906,1.684,907,1.606,908,1.569,910,1.684,963,2.883]],["t/265",[784,3.345,910,3.183]],["t/267",[97,2.533,279,2.156,487,4.42,514,2.481,961,5.628]],["t/269",[7,1.87,21,0.84,22,0.838,37,1.898,46,0.94,47,1.501,51,2.402,66,1.381,94,1.225,134,1.113,138,0.682,198,1.64,236,1.534,239,1.762,270,1.092,279,1.225,283,1.948,285,2.994,296,1.719,299,1.64,305,1.48,310,1.142,312,1.031,318,1.889,330,1.501,347,1.402,389,1.568,390,1.534,448,3.013,514,1.409,518,1.456,586,2.314,628,1.326,645,2.908,649,2.483,714,0.94,738,1.274,739,1.274,741,1.134,770,1.249,815,2.61,817,2.314,818,1.679,854,3.087,905,2.908,906,1.76,907,1.679,908,1.64,958,2.75,960,4.251,962,4.511]],["t/271",[7,2.292,21,0.793,22,0.856,37,1.791,46,0.886,51,2.326,66,1.302,94,1.155,113,1.907,134,1.049,138,0.643,198,1.547,236,1.447,239,1.69,270,1.03,279,1.155,283,1.868,285,2.872,296,1.621,299,1.547,305,1.433,310,1.096,312,0.998,318,1.829,330,1.416,336,3.398,347,1.345,389,1.479,390,1.447,514,1.329,518,1.396,586,2.22,628,1.25,645,2.789,649,2.382,714,0.886,738,1.202,739,1.202,741,1.07,770,1.178,815,2.503,817,2.22,818,1.583,854,2.961,905,2.789,906,1.66,907,1.583,908,1.547,910,1.66,958,2.638,960,4.077,963,2.842]],["t/274",[628,2.397,784,3.345]],["t/276",[784,3.345,910,3.183]],["t/278",[4,0.692,7,1.669,22,0.858,51,2.198,54,1.37,94,1.046,122,2.443,138,0.583,155,1.869,219,2.523,221,2.928,242,1.541,297,3.29,299,1.401,305,1.354,306,2.065,307,1.31,310,0.692,312,1.161,318,1.455,332,3.794,345,1.255,346,1.401,347,0.849,348,1.155,363,2.33,378,1.622,382,1.401,405,2.928,406,2.928,407,2.928,408,2.928,409,2.928,410,2.928,454,2.928,474,5.658,543,1.468,632,2.33,644,1.622,645,1.76,646,1.665,785,2.731,786,2.574,927,3.193,964,3.594,965,3.193,966,3.193,967,3.594,968,3.193,969,3.193,970,3.193,971,3.193,972,3.193,973,3.193,974,3.594,975,3.193,976,3.193,977,3.193,978,3.594,979,3.594,980,3.594,981,3.193,982,3.193,983,3.594,984,3.594,985,3.594,986,3.594,987,3.594,988,5.297,989,3.594,990,3.594,991,3.594,992,3.594,993,3.594,994,3.594,995,3.594,996,3.594]],["t/280",[10,2.068,21,0.94,22,0.873,138,0.763,155,3.335,238,3.335,262,1.482,305,1.012,306,2.104,310,0.905,312,0.705,318,2.153,347,1.111,348,1.512,378,2.122,382,1.834,386,2.704,455,5.697,515,3.05,631,2.971,642,2.304,785,3.575,786,3.368,858,4.178,859,4.178,933,4.178,997,4.703,998,6.412,999,4.703,1000,4.703,1001,6.412,1002,4.178,1003,4.703,1004,4.703,1005,4.703]],["t/282",[4,0.603,17,3.334,21,0.627,22,0.869,25,3.426,44,2.556,54,1.195,91,2.246,94,0.913,122,2.132,138,0.508,178,2.034,219,2.761,221,3.898,226,3.898,238,2.487,242,1.345,262,0.988,283,1.029,310,0.603,312,1.103,318,1.314,345,1.096,363,2.034,378,1.415,380,2.556,388,3.898,405,2.556,406,2.556,407,2.556,408,2.556,409,3.898,410,4.725,480,2.786,523,2.556,543,1.281,785,2.384,786,2.246,792,2.786,965,2.786,966,2.786,968,2.786,969,2.786,970,2.786,971,2.786,972,2.786,973,2.786,975,2.786,976,2.786,977,4.249,981,2.786,982,2.786,1006,3.136,1007,3.136,1008,3.136,1009,4.783,1010,3.136,1011,4.783,1012,3.136,1013,3.136,1014,3.136,1015,3.136,1016,3.136,1017,3.136,1018,3.136,1019,3.136,1020,3.136,1021,3.136,1022,3.136,1023,4.783,1024,3.136,1025,3.136,1026,3.136,1027,3.136,1028,3.136,1029,3.136,1030,3.136,1031,4.783,1032,3.136,1033,4.783,1034,3.136,1035,3.136,1036,3.136,1037,3.136,1038,3.136,1039,3.136,1040,3.136,1041,3.136,1042,3.136,1043,3.136]],["t/284",[4,0.801,10,1.831,12,2.624,21,0.643,22,0.877,45,0.642,46,1.528,47,0.684,49,0.997,100,1.788,107,1.144,115,2.093,140,0.967,156,1.492,157,1.029,214,2,219,2.324,239,0.569,242,0.822,281,1.703,283,2.056,291,2.088,307,1.984,312,0.732,326,1.144,334,1.029,339,3.738,347,1.716,348,0.616,368,1.102,378,0.865,382,0.747,390,0.699,493,1.19,514,1.079,525,1.064,543,0.783,611,3.495,617,1.149,620,2.745,626,1.19,627,1.729,628,0.604,632,3.165,636,1.922,637,2.088,644,2.967,645,2.391,646,0.888,659,1.922,670,1.064,671,1.144,672,2.861,695,1.562,712,1.102,714,1.216,957,1.029,958,1.492,1044,1.243,1045,1.917,1046,2.088,1047,2.088,1048,1.917,1049,1.917,1050,1.917,1051,1.243,1052,1.917,1053,1.243,1054,1.243,1055,1.243,1056,1.243,1057,1.917,1058,2.088,1059,2.088,1060,2.088,1061,1.243,1062,1.243,1063,1.917,1064,1.243,1065,1.243,1066,1.243,1067,1.457,1068,1.243,1069,1.457,1070,1.917,1071,1.917,1072,4.165,1073,3.22,1074,1.917,1075,1.917,1076,4.165,1077,3.22,1078,1.917,1079,1.917,1080,1.917,1081,1.917,1082,1.917,1083,1.917,1084,6.575,1085,3.22,1086,1.917,1087,3.22,1088,3.22,1089,1.917,1090,3.22,1091,1.917,1092,3.22,1093,3.22]],["t/286",[4,0.434,22,0.875,45,0.756,46,0.824,47,0.806,49,1.174,66,0.741,82,1.298,100,1.253,107,0.62,109,1.716,138,0.366,140,1.139,156,2.502,214,1.402,219,2.571,238,1.174,239,0.67,242,0.968,279,0.657,283,2.212,299,0.88,306,1.21,307,1.345,310,0.434,312,0.957,326,1.347,330,2.124,334,1.212,335,1.617,339,4.022,347,1.768,348,0.726,368,2.121,378,1.019,382,0.88,416,1.534,418,1.534,493,1.402,504,1.716,525,2.596,543,0.922,566,1.84,617,0.806,618,1.807,619,1.464,626,1.402,627,2.51,628,1.473,629,1.617,632,1.464,636,2.201,643,1.617,644,2.436,646,1.709,650,1.617,651,1.617,652,1.617,655,4.4,659,3.222,662,1.84,670,2.047,671,2.201,712,1.298,714,1.571,715,1.402,957,1.212,958,1.709,1044,1.464,1046,1.464,1047,1.464,1051,1.464,1053,1.464,1054,1.464,1055,1.464,1056,1.464,1058,2.392,1059,2.392,1060,2.392,1061,1.464,1062,1.464,1064,1.464,1065,1.464,1066,1.464,1067,1.716,1068,1.464,1069,1.716,1094,2.005,1095,2.005,1096,2.005,1097,2.507,1098,2.507,1099,1.534,1100,4.797,1101,3.277,1102,2.005,1103,2.005,1104,2.005,1105,2.005,1106,2.005,1107,2.005,1108,2.005,1109,2.005]],["t/288",[4,0.425,22,0.876,45,0.74,46,0.81,47,0.789,49,1.149,66,0.725,82,1.27,100,1.227,107,0.607,109,1.679,115,0.948,138,0.358,140,1.115,156,2.47,214,1.372,219,2.539,238,1.885,239,1.076,242,0.948,279,0.643,283,2.191,299,0.862,306,1.189,307,1.322,310,0.425,312,0.948,315,1.433,326,1.319,330,2.1,334,1.186,335,1.583,339,3.985,347,1.755,348,0.711,368,2.084,378,0.997,382,0.862,416,1.502,418,1.502,493,1.372,504,1.679,525,2.558,543,0.903,566,1.801,617,0.789,618,1.775,619,1.433,626,1.372,627,2.474,628,1.452,629,1.583,632,1.433,636,2.163,643,1.583,644,2.405,646,1.679,650,1.583,651,1.583,652,1.583,655,4.344,659,3.181,662,1.801,670,2.012,671,2.163,712,1.27,714,1.557,715,1.372,957,1.186,958,1.679,1044,1.433,1046,1.433,1047,1.433,1051,1.433,1053,1.433,1054,1.433,1055,1.433,1056,1.433,1058,2.35,1059,2.35,1060,2.35,1061,1.433,1062,1.433,1064,1.433,1065,1.433,1066,1.433,1068,1.433,1094,1.963,1095,1.963,1096,1.963,1097,2.463,1098,2.463,1099,1.502,1100,4.736,1101,3.22,1102,1.963,1103,1.963,1104,1.963,1105,1.963,1106,1.963,1107,1.963,1108,1.963,1109,1.963,1110,1.801,1111,1.801]],["t/290",[4,0.571,22,0.875,45,0.995,47,1.06,49,1.544,100,1.648,107,0.816,138,0.481,140,1.498,156,2.125,214,1.844,219,3.002,239,0.882,242,1.273,279,0.865,283,2.463,307,1.083,310,0.571,312,0.945,326,1.772,334,1.594,339,4.48,347,1.92,348,0.955,368,1.707,378,1.34,382,1.158,493,1.844,525,1.648,543,1.213,617,1.06,618,2.247,619,1.926,626,1.844,627,3.009,628,0.936,636,2.737,644,2.844,646,1.376,659,2.737,670,2.546,671,2.737,712,1.707,714,1.609,715,1.844,957,1.594,958,2.125,1044,1.926,1046,1.926,1047,1.926,1051,1.926,1053,1.926,1054,1.926,1055,1.926,1056,1.926,1058,2.974,1059,2.974,1060,2.974,1061,1.926,1062,1.926,1064,1.926,1065,1.926,1066,1.926,1067,2.257,1068,1.926,1069,2.257,1097,2.018,1098,2.018,1099,2.018,1112,2.257]],["t/292",[4,0.532,22,0.875,45,0.926,47,0.986,49,1.437,100,1.534,107,0.759,115,1.185,138,0.448,140,1.394,156,2.01,214,1.717,219,2.888,239,0.821,242,2.6,279,0.805,283,2.484,306,0.907,307,1.582,310,0.532,312,0.909,326,1.649,334,1.484,339,4.363,347,1.882,348,0.889,368,1.589,378,1.247,382,1.078,493,2.694,525,1.534,543,1.129,617,0.986,618,2.125,619,1.792,626,1.717,627,2.874,628,0.871,636,2.589,637,1.792,644,2.736,646,1.281,659,2.589,670,2.408,671,2.589,712,1.589,714,1.562,715,1.717,854,2.256,957,1.484,958,2.01,1044,1.792,1046,1.792,1047,1.792,1051,1.792,1053,1.792,1054,1.792,1055,1.792,1056,1.792,1058,2.813,1059,2.813,1060,2.813,1061,1.792,1062,1.792,1064,2.813,1065,1.792,1066,1.792,1067,2.101,1068,1.792,1069,2.101,1097,1.879,1098,1.879,1099,1.879,1112,2.101,1113,2.455,1114,2.455,1115,2.455]],["t/294",[4,0.556,22,0.876,45,0.967,47,1.03,49,1.502,100,1.603,107,0.793,115,1.238,138,0.468,140,1.457,156,2.08,214,1.794,219,2.957,238,1.502,239,1.333,242,1.238,279,0.841,283,2.438,307,1.053,310,0.556,312,0.931,315,1.872,326,1.723,334,1.55,339,4.435,347,1.906,348,0.928,368,1.66,378,1.303,382,1.126,493,1.794,525,1.603,543,1.18,617,1.03,618,2.199,619,1.872,626,1.794,627,2.956,628,0.91,636,2.679,644,2.802,646,1.338,659,2.679,670,2.491,671,2.679,712,1.66,714,1.591,715,1.794,957,1.55,958,2.08,1044,1.872,1046,1.872,1047,1.872,1051,1.872,1053,1.872,1054,1.872,1055,1.872,1056,1.872,1058,2.91,1059,2.91,1060,2.91,1061,1.872,1062,1.872,1064,1.872,1065,1.872,1066,1.872,1068,1.872,1097,1.963,1098,1.963,1099,1.963,1110,2.353,1111,2.353,1112,2.195]],["t/296",[4,0.518,22,0.876,45,0.902,47,0.961,49,1.4,100,1.495,107,0.74,115,1.822,138,0.437,140,1.358,156,1.969,214,1.672,219,2.846,238,1.4,239,1.262,242,2.563,279,0.784,283,2.462,306,0.884,307,1.55,310,0.518,312,0.896,315,1.746,326,1.607,334,1.446,339,4.32,347,1.868,348,0.866,368,1.548,378,1.215,382,1.05,493,2.639,525,1.495,543,1.1,617,0.961,618,2.082,619,1.746,626,1.672,627,2.826,628,0.849,636,2.536,637,1.746,644,2.697,646,1.248,659,2.536,670,2.359,671,2.536,712,1.548,714,1.545,715,1.672,854,2.21,957,1.446,958,1.969,1044,1.746,1046,1.746,1047,1.746,1051,1.746,1053,1.746,1054,1.746,1055,1.746,1056,1.746,1058,2.755,1059,2.755,1060,2.755,1061,1.746,1062,1.746,1064,2.755,1065,1.746,1066,1.746,1068,1.746,1097,1.83,1098,1.83,1099,1.83,1110,2.194,1111,2.194,1112,2.047,1113,2.392,1114,2.392,1115,2.392]],["t/298",[33,2.629,34,2.826,138,1.068,227,4.093,244,5.854,247,4.479,296,2.692,334,3.538,521,5.37,674,4.72,675,5.854,676,5.854,677,5.854,678,5.854,679,5.854,680,5.854,888,5.854,1116,5.37,1117,6.59]],["t/300",[33,2.65,37,2.997,247,4.515,270,2.077,279,1.934,310,1.278,389,2.476,390,2.422,514,2.225,574,5.048,908,2.59,1118,6.642,1119,6.642,1120,6.642,1121,6.642,1122,6.642,1123,6.642]],["t/302",[4,1.028,8,3.759,10,1.211,21,1.511,22,0.861,46,1.352,239,1.797,243,3.926,262,2.073,270,2.242,279,1.26,305,1.889,306,1.42,310,0.832,312,0.986,345,1.866,346,1.074,347,1.262,348,1.718,377,1.479,382,2.083,389,1.991,390,1.948,399,2.094,431,2.245,487,2.582,574,4.999,631,2.005,742,1.786,770,1.953,907,2.415,908,2.083,913,1.711,914,1.711,1002,2.447,1116,2.245,1124,5.844,1125,2.447,1126,2.447,1127,2.755,1128,2.755,1129,6.053,1130,2.755,1131,2.447,1132,2.447,1133,2.755,1134,2.447,1135,2.447,1136,3.843,1137,2.447,1138,2.447]],["t/304",[4,0.996,10,1.154,21,1.432,22,0.863,107,1.422,134,2.075,239,1.75,243,3.835,249,5.237,262,2.025,270,2.146,279,1.213,305,1.78,306,1.367,310,0.801,312,1.025,346,1.024,347,1.223,348,1.665,377,1.409,382,2.018,389,1.93,390,1.888,487,2.486,518,1.022,574,4.884,617,1.847,631,1.93,714,1.436,741,2.115,770,1.908,863,1.702,907,2.564,908,2.018,913,1.631,914,1.631,1116,2.139,1124,5.709,1125,2.332,1126,2.332,1131,2.332,1132,2.332,1134,2.332,1135,2.332,1136,3.7,1137,2.332,1138,2.332,1139,2.625]],["t/306",[821,6.697,1140,7.538,1141,7.538]],["t/308",[1,3.998,4,1.631,5,3.854,10,2.08,14,4.545,15,2.46,17,3.701,22,0.428,23,3.595,24,4.174,26,2.938,33,3.134,40,4.202,80,4.202,81,3.387,82,2.719,84,4.61,85,2.938,86,4.892,87,2.252,88,2.192,89,2.625,90,3.854,91,3.387,92,3.595,94,1.377,95,3.595,96,3.854,121,4.202,171,3.067,292,3.854,323,3.067,372,3.854,487,2.823,549,4.202,563,4.202,582,4.202,641,3.595,670,2.625,808,4.202,1142,4.73,1143,4.73,1144,4.73,1145,4.73,1146,6.437,1147,4.73,1148,4.73,1149,4.73,1150,4.73,1151,4.73,1152,4.73,1153,4.73,1154,4.73]],["t/310",[4,1.003,18,2.867,25,2.52,26,3.859,73,3.126,86,6.696,107,0.967,113,1.179,123,2.867,138,1.114,143,2.674,166,4.633,171,4.456,195,3.126,218,3.239,230,6.105,231,3.126,236,1.283,243,2.1,262,1.109,271,3.126,280,2.52,292,2.867,295,4.633,298,2.391,333,4.633,347,1.232,353,4.633,446,2.391,465,3.963,554,2.674,559,2.867,573,2.674,641,2.674,642,1.723,666,3.126,700,2.52,831,3.126,855,3.126,899,1.953,1155,3.518,1156,3.518,1157,5.215,1158,7.955,1159,3.518,1160,5.215,1161,3.518,1162,3.518,1163,3.518,1164,3.518,1165,3.518,1166,3.518,1167,3.518,1168,3.518,1169,5.215,1170,6.214,1171,3.518,1172,3.518,1173,3.518,1174,3.518,1175,3.518,1176,3.518,1177,3.518,1178,3.518,1179,3.518,1180,3.518,1181,5.215,1182,3.518,1183,3.518,1184,3.518,1185,3.518,1186,5.215,1187,3.518,1188,3.518,1189,3.518,1190,3.518,1191,3.518,1192,5.215,1193,3.518,1194,3.518,1195,3.518,1196,3.518,1197,3.518,1198,3.518,1199,3.518]]],"invertedIndex":[["",{"_index":22,"t":{"2":{"position":[[216,1]]},"12":{"position":[[254,1],[278,1]]},"22":{"position":[[632,1]]},"26":{"position":[[122,1],[132,1],[191,1],[246,2],[249,2],[252,2]]},"28":{"position":[[49,1],[61,1],[123,2],[170,2]]},"30":{"position":[[7,1],[13,1],[68,1]]},"32":{"position":[[7,1],[27,1],[216,2],[385,2]]},"37":{"position":[[162,1],[462,1],[500,1],[512,1],[525,2],[540,2],[543,1],[545,2],[578,1],[580,1],[582,1],[621,2],[639,1],[641,1],[648,1],[650,1],[652,3],[686,1],[698,1],[705,2],[720,2],[723,1],[725,2],[735,1],[737,1],[739,1],[767,3],[799,1],[811,1],[818,2],[833,2],[836,1],[838,2],[856,1],[865,3],[869,2],[973,1],[975,1],[977,1],[1006,2],[1009,1],[1011,2],[1029,1],[1038,3]]},"39":{"position":[[14,1],[16,1],[68,2],[112,2],[115,1],[117,2],[170,2],[241,2],[244,4],[249,2],[252,3]]},"41":{"position":[[453,2],[562,1],[590,2],[593,2],[619,1],[693,1],[727,1],[776,1],[798,2],[801,2],[816,2],[898,1],[927,1],[965,1],[1052,2],[1055,1],[1057,2],[1096,1],[1149,1],[1238,3],[1242,3],[1246,2],[1249,1],[1285,2],[1288,3],[1379,2]]},"43":{"position":[[10,1],[40,1],[73,1],[111,1],[226,2],[255,3],[592,1],[635,1],[668,1],[759,1],[777,1],[800,1],[834,2],[837,1],[869,1],[871,2],[895,2],[898,3]]},"46":{"position":[[69,1]]},"50":{"position":[[107,2],[255,2],[497,1]]},"55":{"position":[[60,1],[62,1],[64,1],[66,1],[100,2],[103,1],[105,2],[114,1],[116,1],[129,1],[131,1],[133,2],[157,1],[159,1],[161,1],[163,1],[243,3],[247,2],[287,1],[289,1],[291,1],[293,1],[359,1],[361,1],[363,1],[365,1]]},"57":{"position":[[165,1],[167,1],[169,1],[199,2],[202,1],[204,2],[266,3],[295,2],[395,1],[407,2],[423,2],[489,2],[492,1],[494,2],[498,1],[500,1],[502,1],[513,1],[515,1],[517,3],[521,2],[573,2],[683,3]]},"59":{"position":[[22,1]]},"61":{"position":[[63,1],[81,1],[96,1],[114,1],[155,1],[187,1],[230,1],[250,1]]},"63":{"position":[[105,1],[140,1],[201,1],[211,1],[256,2],[259,1],[333,1],[343,1],[388,2],[391,1],[466,1],[476,1],[528,1],[538,1],[583,2],[586,1],[620,1],[622,2],[625,1],[627,2],[630,1],[632,2]]},"67":{"position":[[837,1],[941,1],[968,2],[980,2],[983,1],[1014,1],[1051,2],[1054,1],[1071,1],[1109,2],[1173,2],[1189,2],[1192,1],[1194,2],[1259,3],[1263,2],[1266,2],[1269,2],[1272,3],[1687,1],[1806,2],[1832,2],[1839,1],[1856,3],[1876,1],[1898,2],[1901,1],[1918,1],[1946,2],[1993,2],[2085,3],[2089,1],[2096,1],[2108,1],[2175,2],[2188,1],[2205,1],[2207,2],[2210,3]]},"69":{"position":[[523,1],[674,1],[676,2],[689,3],[727,2],[740,2],[743,1],[780,1],[836,2],[839,2],[867,2],[880,2],[883,1],[920,1],[976,2],[979,2],[1007,2],[1020,2],[1023,1],[1060,1],[1116,2],[1119,2],[1122,2],[1125,3]]},"74":{"position":[[233,1],[266,1]]},"76":{"position":[[14,1],[34,1],[83,1],[85,1],[119,2],[133,1]]},"78":{"position":[[14,1],[28,1],[71,1],[73,1],[107,2],[121,1]]},"80":{"position":[[37,1],[67,2],[70,1],[72,3],[76,1],[85,1],[87,1],[97,1],[99,1],[101,2],[104,3],[131,1],[161,2],[164,1],[166,3],[170,1],[179,1],[181,1],[191,1],[193,1],[195,2],[198,3]]},"83":{"position":[[68,1],[84,1],[112,1],[171,3],[175,2],[223,1],[253,2],[256,1],[277,3],[281,1],[290,1],[292,1],[302,1],[304,1],[306,2],[309,3],[313,2],[390,2],[393,1],[414,3],[418,1],[427,1],[429,1],[454,1],[456,1],[458,2],[461,3],[513,1],[529,1],[557,1],[635,3],[639,2],[688,1],[703,1],[731,2],[734,1],[755,3],[759,1],[768,1],[770,1],[777,1],[779,1],[781,2],[784,1],[786,2],[789,2],[866,2],[869,1],[890,3],[894,1],[903,1],[905,1],[914,1],[916,1],[918,2],[921,3]]},"85":{"position":[[85,1],[101,1],[129,1],[214,3],[228,1],[230,1],[241,1],[263,1],[276,2],[327,2],[330,1],[351,3],[355,1],[364,1],[366,1],[368,1],[378,1],[380,2],[383,1],[385,1],[395,1],[397,1],[399,1],[401,2],[404,3]]},"87":{"position":[[322,1],[340,1],[368,1],[427,3],[441,1],[443,1],[452,1],[457,2],[508,2],[511,1],[534,3],[538,1],[565,1],[618,3],[672,1],[674,2],[677,3]]},"89":{"position":[[173,1],[191,1],[219,1],[304,3],[318,1],[320,1],[329,1],[341,1],[346,2],[400,2],[403,1],[427,3],[431,1],[443,1],[461,1],[514,3],[569,2],[588,1],[641,3],[695,1],[697,1],[699,2],[702,3]]},"91":{"position":[[280,1],[319,1],[347,1],[406,3],[410,3],[430,2],[485,3],[505,2],[565,1],[577,1],[586,3],[590,3],[614,2],[627,1],[720,2],[723,1],[746,3],[750,1],[777,1],[830,3],[884,1],[886,2],[889,3],[1065,3],[1106,2]]},"103":{"position":[[0,2],[18,2],[33,1],[62,2],[136,2],[191,2],[194,2],[210,2],[271,2],[312,1],[356,2],[483,2],[486,1],[498,1],[563,2],[581,2],[584,1],[617,2],[633,2],[636,1],[656,2],[714,3]]},"105":{"position":[[26,1],[40,1],[80,1],[128,3],[153,1],[182,3],[222,1],[250,1],[264,1],[304,1],[340,3],[344,2],[480,3],[534,1]]},"107":{"position":[[12,1],[42,1],[72,2],[75,1],[85,1],[164,3],[179,1],[287,1],[299,4],[319,3]]},"111":{"position":[[103,1],[122,1],[198,2],[201,1],[215,1],[235,1],[249,1],[287,1],[357,2],[398,2],[401,1],[421,3]]},"113":{"position":[[107,1],[126,1],[210,2],[225,2],[238,3],[242,3],[246,1],[260,1],[280,1],[294,1],[332,1],[410,2],[425,2],[438,3],[442,3],[484,2],[487,1],[507,3]]},"115":{"position":[[107,1],[126,1],[159,2],[162,3],[243,2],[246,3],[250,1],[264,1],[284,1],[298,1],[336,1],[363,2],[366,3],[448,3],[490,2],[493,1],[513,3]]},"117":{"position":[[125,1],[144,1],[177,2],[180,3],[189,1],[191,2],[242,2],[338,2],[341,3],[345,1],[359,1],[379,1],[393,1],[431,1],[458,2],[461,3],[470,1],[472,2],[523,2],[619,2],[622,3],[664,2],[667,1],[687,3]]},"119":{"position":[[294,1],[313,1],[346,2],[349,3],[420,3],[424,1],[438,1],[458,1],[472,1],[486,1],[589,1],[603,1],[623,1],[637,1],[675,1],[702,2],[705,3],[776,3],[818,2],[821,1],[841,3],[924,1],[970,1],[998,1],[1018,3]]},"121":{"position":[[13,1],[77,1],[129,1]]},"123":{"position":[[66,1],[109,1],[148,1],[183,3],[204,1],[251,3],[293,2],[296,1],[316,3],[332,1],[375,1],[414,1],[468,2],[471,1],[513,3],[517,2],[520,3],[562,2],[565,1],[585,3],[666,2],[669,1],[697,1],[725,1],[754,3],[825,2],[828,1],[856,1],[884,1],[913,3],[984,2],[987,1],[1015,1],[1043,1],[1072,3]]},"128":{"position":[[35,1],[71,1],[113,1],[157,2],[217,2],[350,2],[355,1],[377,3],[430,2],[433,1],[461,2],[464,2]]},"134":{"position":[[125,2],[179,2],[233,1],[317,3],[321,2],[350,1],[376,1],[410,1],[438,1],[457,1],[463,2],[488,2],[553,2],[616,1],[630,1],[650,1],[652,2],[678,1],[696,1],[730,1],[758,1],[760,1],[772,1],[774,3],[791,2],[816,1],[830,1],[850,1],[852,2],[882,1],[903,2],[957,1],[1035,3],[1039,2],[1090,1],[1118,1],[1137,1],[1176,1],[1200,2],[1265,2],[1328,1],[1330,2],[1333,2],[1381,1],[1409,1],[1411,1],[1423,1],[1425,3],[1467,1],[1491,1],[1493,2]]},"136":{"position":[[415,1],[450,1],[645,1],[647,2],[701,1],[785,3],[789,2],[863,1],[899,1],[927,1],[929,1],[941,1],[943,3],[966,2],[991,2],[1056,2],[1119,1],[1133,1],[1153,1],[1167,1],[1188,2],[1242,1],[1320,3],[1324,2],[1402,1],[1430,1],[1432,1],[1444,1],[1446,3],[1502,1],[1526,2],[1591,2],[1654,1],[1656,2]]},"138":{"position":[[433,2],[519,1],[651,2],[747,2],[881,3],[897,1],[918,2],[1004,1],[1136,2],[1232,2],[1366,3],[1604,1],[1606,2],[1665,1],[1716,2],[1776,1],[1790,1],[1810,1],[1812,2],[1921,1],[1923,2],[1983,3],[2122,2],[2171,1],[2201,2],[2257,3],[2261,4],[2266,2],[2353,2],[2431,1],[2433,2],[2483,3],[2487,4],[2492,2],[2579,3]]},"140":{"position":[[135,1],[137,2],[179,1],[263,3],[267,2],[306,1],[342,1],[370,1],[372,1],[384,1],[386,3],[404,2],[407,1],[528,2],[582,2],[671,2],[742,1],[845,3],[849,2],[888,1],[924,1],[952,1],[954,1],[966,1],[968,3],[986,2],[1163,1],[1165,2],[1195,1],[1267,3],[1271,2],[1340,1],[1358,2],[1412,1],[1451,1],[1582,1],[1603,2],[1639,1],[1717,3],[1779,2],[1782,1],[1803,2],[1835,2]]},"142":{"position":[[424,1],[527,3],[542,1],[639,3],[677,1],[703,1],[781,3],[807,2],[913,2],[937,1],[951,1],[971,1],[985,1],[1044,2],[1079,1],[1103,2],[1209,2],[1233,1],[1235,2]]},"144":{"position":[[105,1],[140,1]]},"148":{"position":[[97,1],[110,1],[192,1],[222,2],[225,3],[262,1],[276,1],[296,1],[310,1],[342,1],[453,1],[481,1],[509,1],[511,2],[514,3],[551,3]]},"150":{"position":[[95,1],[108,1],[180,2],[195,2],[208,3],[212,3],[233,1],[263,2],[266,3],[303,1],[317,1],[337,1],[351,1],[383,1],[455,2],[470,2],[483,3],[487,3],[537,1],[565,1],[593,1],[595,2],[598,3],[635,3]]},"152":{"position":[[95,1],[108,1],[129,2],[132,3],[213,2],[216,3],[237,1],[267,2],[270,3],[307,1],[321,1],[341,1],[355,1],[387,1],[408,2],[411,3],[493,3],[543,1],[571,1],[599,1],[601,2],[604,3],[641,3]]},"154":{"position":[[113,1],[126,1],[147,2],[150,3],[159,1],[161,2],[212,2],[308,2],[311,3],[332,1],[362,2],[365,3],[402,1],[416,1],[436,1],[450,1],[482,1],[503,2],[506,3],[515,1],[517,2],[568,2],[664,2],[667,3],[717,1],[745,1],[773,1],[775,2],[778,3],[815,3]]},"156":{"position":[[282,1],[295,1],[316,2],[319,3],[390,3],[411,1],[441,2],[444,3],[481,1],[495,1],[515,1],[529,1],[543,1],[640,1],[654,1],[674,1],[688,1],[720,1],[741,2],[744,3],[815,3],[865,1],[893,1],[921,1],[923,2],[926,3],[963,3],[1046,1],[1086,1],[1114,1],[1134,3]]},"158":{"position":[[13,1],[77,1],[129,1]]},"160":{"position":[[54,1],[97,1],[136,1],[171,3],[186,1],[227,3],[243,1],[286,1],[319,1],[367,2],[370,1],[412,3],[416,2],[419,3],[494,2],[497,1],[525,1],[553,1],[582,3],[647,2],[650,1],[678,1],[706,1],[735,3],[800,2],[803,1],[831,1],[859,1],[888,3]]},"166":{"position":[[63,1],[75,1],[111,1],[113,1],[138,1],[173,1],[256,1],[270,1],[290,1],[302,1],[338,1],[340,1],[365,1],[431,2],[434,1],[462,1],[490,1],[534,3]]},"168":{"position":[[58,1],[70,1],[106,1],[108,1],[133,1],[168,1],[210,2],[213,3],[231,3],[277,1],[291,1],[311,1],[323,1],[359,1],[361,1],[386,1],[418,1],[433,2],[436,3],[454,2],[479,2],[482,1],[510,1],[538,1],[582,1],[584,2]]},"170":{"position":[[73,1],[85,1],[121,1],[123,1],[148,1],[183,1],[211,1],[218,2],[221,3],[239,2],[249,2],[294,1],[308,1],[328,1],[340,1],[376,1],[378,1],[403,1],[435,1],[442,2],[445,3],[463,2],[496,2],[499,1],[527,1],[555,1],[599,1],[601,2]]},"179":{"position":[[105,1],[125,1],[228,2],[259,7],[284,1],[331,2],[334,3],[371,1],[385,1],[405,1],[419,1],[458,1],[561,2],[592,7],[665,1],[693,1],[721,1],[723,2],[726,3],[763,3]]},"181":{"position":[[103,1],[123,1],[180,1],[233,2],[248,2],[261,3],[265,3],[269,2],[300,7],[325,1],[372,2],[375,3],[412,1],[426,1],[446,1],[460,1],[499,1],[556,1],[609,2],[624,2],[637,3],[641,3],[645,2],[676,7],[749,1],[777,1],[805,1],[807,2],[810,3],[847,3]]},"183":{"position":[[103,1],[123,1],[180,1],[182,2],[185,3],[266,2],[269,3],[273,2],[304,7],[329,1],[376,2],[379,3],[416,1],[430,1],[450,1],[464,1],[503,1],[560,1],[562,2],[565,3],[647,3],[651,2],[682,7],[755,1],[783,1],[811,1],[813,2],[816,3],[853,3]]},"185":{"position":[[121,1],[141,1],[198,1],[200,2],[203,3],[212,1],[214,2],[265,2],[361,2],[364,3],[368,2],[399,7],[424,1],[471,2],[474,3],[511,1],[525,1],[545,1],[559,1],[598,1],[655,1],[657,2],[660,3],[669,1],[671,2],[722,2],[818,2],[821,3],[825,2],[856,7],[929,1],[957,1],[985,1],[987,2],[990,3],[1027,3]]},"187":{"position":[[290,1],[310,1],[367,1],[369,2],[372,3],[443,3],[447,2],[478,7],[503,1],[550,2],[553,3],[590,1],[604,1],[624,1],[638,1],[652,1],[756,1],[770,1],[790,1],[804,1],[843,1],[900,1],[902,2],[905,3],[976,3],[980,2],[1011,7],[1084,1],[1112,1],[1140,1],[1142,2],[1145,3],[1182,3],[1265,1],[1312,1],[1340,1],[1360,3]]},"189":{"position":[[13,1],[77,1],[129,1]]},"191":{"position":[[62,1],[105,1],[144,1],[179,3],[201,1],[258,1],[280,3],[284,2],[315,7],[343,1],[385,1],[428,1],[468,1],[525,1],[554,2],[557,1],[599,3],[603,2],[606,3],[610,2],[641,7],[669,1],[779,2],[782,1],[810,1],[838,1],[867,3],[941,2],[944,1],[972,1],[1000,1],[1029,3],[1103,2],[1106,1],[1134,1],[1162,1],[1191,3]]},"196":{"position":[[63,1],[114,1],[124,1],[238,3],[290,1],[348,1],[371,1],[413,1],[425,1],[464,1],[647,1],[759,2],[762,2],[878,2],[889,1],[953,1],[1055,3],[1155,1],[1267,2],[1270,2],[1323,1],[1379,1],[1397,2],[1400,1],[1423,2],[1439,2],[1442,1],[1483,3],[1513,1],[1551,1],[1581,2],[1584,1],[1594,1],[1678,3],[1693,1],[1801,1],[1813,4],[1833,2],[1851,2],[1854,1],[1877,2],[1902,1],[1933,3],[1937,1],[1983,1],[1985,1],[2050,3],[2085,1],[2130,2],[2141,2],[2154,3],[2192,1],[2216,1],[2218,1]]},"199":{"position":[[63,1],[75,1],[85,1],[113,1],[115,1],[127,1],[129,3],[146,1],[183,1],[264,1],[278,1],[298,1],[310,1],[320,1],[348,1],[350,1],[362,1],[364,3],[381,1],[449,2],[452,1],[480,1],[508,1],[550,3]]},"201":{"position":[[58,1],[70,1],[80,1],[108,1],[110,1],[122,1],[124,3],[141,1],[178,1],[220,2],[223,3],[241,3],[285,1],[299,1],[319,1],[331,1],[341,1],[369,1],[371,1],[383,1],[385,3],[402,1],[438,1],[453,2],[456,3],[474,2],[497,2],[500,1],[528,1],[556,1],[598,1],[600,2]]},"203":{"position":[[73,1],[85,1],[95,1],[123,1],[125,1],[137,1],[139,3],[156,1],[193,1],[221,1],[228,2],[231,3],[249,2],[259,2],[302,1],[316,1],[336,1],[348,1],[358,1],[386,1],[388,1],[400,1],[402,3],[419,1],[455,1],[462,2],[465,3],[483,2],[514,2],[517,1],[545,1],[573,1],[615,1],[617,2]]},"208":{"position":[[45,1]]},"211":{"position":[[63,1],[75,1],[120,3],[124,3],[128,7],[149,1],[200,1],[283,1],[297,1],[317,1],[329,1],[374,3],[378,3],[382,7],[403,1],[485,2],[488,1],[516,1],[544,1],[588,3]]},"213":{"position":[[58,1],[70,1],[115,3],[119,3],[123,7],[144,1],[195,1],[237,2],[240,3],[258,3],[304,1],[318,1],[338,1],[350,1],[395,3],[399,3],[403,7],[424,1],[472,1],[487,2],[490,3],[508,2],[533,2],[536,1],[564,1],[592,1],[636,1],[638,2]]},"215":{"position":[[73,1],[85,1],[130,3],[134,3],[138,7],[159,1],[210,1],[238,1],[245,2],[248,3],[266,2],[276,2],[321,1],[335,1],[355,1],[367,1],[412,3],[416,3],[420,7],[441,1],[489,1],[496,2],[499,3],[517,2],[550,2],[553,1],[581,1],[609,1],[653,1],[655,2]]},"223":{"position":[[63,1],[75,1],[103,1],[105,1],[120,1],[122,1],[147,1],[186,1],[269,1],[283,1],[303,1],[315,1],[343,1],[345,1],[360,1],[362,1],[387,1],[457,2],[460,1],[488,1],[516,1],[560,3]]},"225":{"position":[[58,1],[70,1],[98,1],[100,1],[115,1],[117,1],[142,1],[181,1],[223,2],[226,3],[244,3],[290,1],[304,1],[324,1],[336,1],[364,1],[366,1],[381,1],[383,1],[408,1],[444,1],[459,2],[462,3],[480,2],[505,2],[508,1],[536,1],[564,1],[608,1],[610,2]]},"227":{"position":[[73,1],[85,1],[113,1],[115,1],[130,1],[132,1],[157,1],[196,1],[224,1],[231,2],[234,3],[252,2],[262,2],[307,1],[321,1],[341,1],[353,1],[381,1],[383,1],[398,1],[400,1],[425,1],[461,1],[468,2],[471,3],[489,2],[522,2],[525,1],[553,1],[581,1],[625,1],[627,2]]},"236":{"position":[[46,1],[58,1],[94,1],[136,1],[209,1],[223,1],[243,1],[255,1],[291,1],[354,2],[357,1],[385,1],[413,1],[457,3]]},"238":{"position":[[56,1],[68,1],[104,1],[146,1],[178,2],[181,3],[199,3],[245,1],[259,1],[279,1],[291,1],[327,1],[364,1],[371,2],[374,3],[392,2],[417,2],[420,1],[448,1],[476,1],[520,1],[522,2]]},"247":{"position":[[46,1],[58,1],[155,1],[228,1],[242,1],[262,1],[274,1],[392,2],[395,1],[423,1],[451,1],[495,3]]},"249":{"position":[[56,1],[68,1],[165,1],[197,2],[200,3],[218,3],[264,1],[278,1],[298,1],[310,1],[402,1],[409,2],[412,3],[430,2],[455,2],[458,1],[486,1],[514,1],[558,1],[560,2]]},"258":{"position":[[46,1],[58,1],[68,1],[96,1],[115,1],[143,1],[214,1],[228,1],[248,1],[260,1],[270,1],[298,1],[317,1],[366,2],[369,1],[397,1],[425,1],[467,3]]},"260":{"position":[[56,1],[68,1],[78,1],[106,1],[125,1],[153,1],[185,2],[188,3],[206,3],[250,1],[264,1],[284,1],[296,1],[306,1],[334,1],[353,1],[378,1],[385,2],[388,3],[406,2],[429,2],[432,1],[460,1],[488,1],[530,1],[532,2]]},"262":{"position":[[56,1],[68,1],[78,1],[106,1],[125,1],[153,1],[204,2],[207,3],[225,3],[269,1],[283,1],[303,1],[315,1],[325,1],[353,1],[372,1],[397,1],[423,2],[426,3],[444,2],[467,2],[470,1],[498,1],[526,1],[568,1],[570,2]]},"269":{"position":[[46,1],[58,1],[86,1],[104,1],[146,1],[219,1],[233,1],[253,1],[265,1],[293,1],[311,1],[374,2],[377,1],[405,1],[433,1],[477,3]]},"271":{"position":[[56,1],[68,1],[96,1],[114,1],[156,1],[188,2],[191,3],[209,3],[255,1],[269,1],[289,1],[301,1],[329,1],[347,1],[384,1],[391,2],[394,3],[412,2],[437,2],[440,1],[468,1],[496,1],[540,1],[542,2]]},"278":{"position":[[35,1],[74,1],[132,1],[208,2],[211,1],[395,1],[419,3],[461,2],[464,1],[526,3],[543,1],[652,3],[679,2],[682,1],[756,1],[758,2],[807,2],[881,1],[883,2],[939,1],[963,1],[1076,1],[1083,1],[1085,2],[1147,1],[1216,1],[1218,3],[1222,3],[1267,3]]},"280":{"position":[[34,1],[136,3],[155,2],[158,1],[171,1],[178,1],[188,1],[221,2],[224,1],[253,2],[313,3],[317,1],[319,2],[344,2],[347,1],[360,1],[367,1],[377,1],[408,2],[411,1],[470,2],[473,1],[516,3],[520,3],[524,1],[526,2]]},"282":{"position":[[35,1],[68,1],[124,1],[194,1],[233,1],[277,1],[373,2],[389,1],[401,1],[408,1],[410,2],[464,1],[509,3],[513,1],[515,1],[530,1],[606,2],[609,1],[611,2],[643,2],[693,3],[697,2],[783,2],[856,2],[886,2],[976,3],[1018,2],[1021,1],[1083,3],[1112,2],[1115,1],[1137,1],[1324,2],[1327,3],[1356,4],[1361,3],[1365,10],[1376,7],[1393,4],[1424,7],[1432,4],[1437,8],[1446,6],[1453,11],[1496,3],[1500,3]]},"284":{"position":[[15,3],[19,1],[66,2],[76,1],[90,1],[122,1],[130,1],[185,1],[213,1],[241,1],[243,1],[251,3],[261,3],[275,3],[289,3],[293,2],[303,2],[306,2],[309,1],[323,1],[344,3],[389,2],[450,3],[484,2],[606,2],[609,3],[634,2],[654,1],[723,4],[728,4],[733,6],[775,2],[827,3],[845,2],[862,1],[895,1],[932,2],[962,2],[965,1],[991,3],[1012,2],[1058,3],[1092,5],[1098,3],[1109,1],[1111,1],[1125,1],[1139,1],[1147,1],[1161,1],[1175,1],[1183,1],[1196,1],[1210,1],[1218,1],[1231,1],[1245,1],[1253,1],[1267,2],[1270,3],[1274,1],[1321,2],[1331,1],[1396,1],[1440,1],[1534,1],[1553,1],[1578,1],[1610,1],[1612,3],[1683,2],[1713,1],[1742,1],[1774,1],[1776,3],[1804,2],[1823,1],[1907,1],[1909,3],[1965,2],[1991,1],[2077,1],[2079,3],[2112,2],[2133,1],[2217,1],[2219,3],[2297,2],[2319,1],[2405,1],[2407,3],[2435,2],[2456,1],[2542,1],[2544,3],[2600,2],[2628,1],[2716,1],[2718,3],[2751,2],[2774,1],[2860,1],[2862,3],[2940,2],[2964,1],[3052,1],[3054,3],[3085,2],[3105,1],[3125,1],[3127,1]]},"286":{"position":[[9,3],[13,1],[60,1],[148,2],[165,1],[239,1],[301,1],[329,1],[355,1],[398,2],[401,1],[413,2],[428,3],[467,1],[469,1],[569,2],[596,2],[613,2],[623,2],[626,2],[629,1],[663,1],[665,1],[673,3],[683,3],[697,3],[711,3],[715,2],[729,1],[769,3],[814,2],[885,3],[919,2],[1051,2],[1054,3],[1079,2],[1099,1],[1178,4],[1183,4],[1188,6],[1230,2],[1282,3],[1334,2],[1409,3],[1451,2],[1531,1],[1567,3],[1571,3],[1589,2],[1616,1],[1716,2],[1719,1],[1721,3],[1823,2],[1856,1],[1887,3],[1942,1],[1949,1],[1972,2],[1975,1],[2006,3],[2027,2],[2073,3],[2077,1],[2079,3],[2101,5],[2107,3],[2118,1],[2120,1],[2134,1],[2153,1],[2161,1],[2175,1],[2194,1],[2202,1],[2215,1],[2234,1],[2242,1],[2255,1],[2274,1],[2282,1],[2296,1],[2315,1],[2334,2]]},"288":{"position":[[9,3],[13,1],[60,1],[148,2],[165,1],[239,1],[301,1],[303,3],[310,2],[324,3],[333,2],[347,1],[373,1],[416,2],[419,1],[431,2],[446,3],[485,1],[487,1],[587,2],[614,2],[631,2],[641,2],[644,2],[647,1],[681,1],[683,1],[691,3],[701,3],[715,3],[729,3],[752,2],[766,1],[806,3],[851,2],[922,3],[956,2],[1088,2],[1091,3],[1116,2],[1136,1],[1215,4],[1220,4],[1225,6],[1267,2],[1319,3],[1371,2],[1446,3],[1488,2],[1568,1],[1604,3],[1608,3],[1626,2],[1653,1],[1753,2],[1756,1],[1758,3],[1860,2],[1893,1],[1924,3],[1979,1],[1986,1],[2009,2],[2012,1],[2043,3],[2064,2],[2108,3],[2112,1],[2114,3],[2136,5],[2142,3],[2153,1],[2155,1],[2169,1],[2188,1],[2196,1],[2210,1],[2229,1],[2237,1],[2250,1],[2269,1],[2277,1],[2290,1],[2309,1],[2317,1],[2331,1],[2350,1],[2369,2]]},"290":{"position":[[9,3],[13,1],[60,1],[148,2],[165,1],[218,1],[280,1],[308,1],[317,2],[320,2],[323,1],[357,1],[359,1],[367,3],[377,3],[391,3],[405,3],[409,2],[423,1],[463,3],[508,2],[579,3],[613,2],[745,2],[748,3],[773,2],[793,1],[872,4],[877,4],[882,6],[924,2],[976,3],[994,2],[1011,1],[1047,1],[1084,2],[1108,2],[1111,1],[1137,3],[1158,2],[1204,3],[1226,5],[1232,3],[1243,1],[1245,1],[1259,1],[1273,1],[1281,1],[1295,1],[1309,1],[1317,1],[1330,1],[1344,1],[1352,1],[1365,1],[1379,1],[1387,1],[1401,2]]},"292":{"position":[[9,3],[13,1],[60,1],[148,2],[165,1],[218,1],[280,1],[308,1],[317,2],[320,2],[323,1],[357,1],[359,1],[367,3],[377,3],[391,3],[405,3],[435,2],[449,1],[489,3],[534,2],[605,3],[639,2],[771,2],[774,3],[799,2],[819,1],[898,4],[903,4],[908,6],[950,2],[1002,3],[1020,2],[1036,1],[1066,1],[1076,1],[1130,1],[1194,2],[1197,2],[1221,2],[1224,1],[1247,2],[1250,1],[1276,3],[1297,2],[1343,3],[1347,3],[1369,5],[1375,3],[1386,1],[1388,1],[1402,1],[1416,1],[1424,1],[1438,1],[1452,1],[1460,1],[1473,1],[1487,1],[1495,1],[1508,1],[1522,1],[1530,1],[1544,2]]},"294":{"position":[[9,3],[13,1],[60,1],[148,2],[165,1],[218,1],[280,1],[282,3],[289,2],[303,3],[312,2],[326,1],[335,2],[338,2],[341,1],[375,1],[377,1],[385,3],[395,3],[409,3],[423,3],[446,2],[460,1],[500,3],[545,2],[616,3],[650,2],[782,2],[785,3],[810,2],[830,1],[909,4],[914,4],[919,6],[961,2],[1013,3],[1031,2],[1048,1],[1084,1],[1121,2],[1145,2],[1148,1],[1174,3],[1195,2],[1239,3],[1261,5],[1267,3],[1278,1],[1280,1],[1294,1],[1308,1],[1316,1],[1330,1],[1344,1],[1352,1],[1365,1],[1379,1],[1387,1],[1400,1],[1414,1],[1422,1],[1436,2]]},"296":{"position":[[9,3],[13,1],[60,1],[148,2],[165,1],[218,1],[280,1],[282,3],[289,2],[303,3],[312,2],[326,1],[335,2],[338,2],[341,1],[375,1],[377,1],[385,3],[395,3],[409,3],[423,3],[472,2],[486,1],[526,3],[571,2],[642,3],[676,2],[808,2],[811,3],[836,2],[856,1],[935,4],[940,4],[945,6],[987,2],[1039,3],[1057,2],[1073,1],[1103,1],[1113,1],[1167,1],[1231,2],[1234,2],[1258,2],[1261,1],[1284,2],[1287,1],[1313,3],[1334,2],[1378,3],[1382,3],[1404,5],[1410,3],[1421,1],[1423,1],[1437,1],[1451,1],[1459,1],[1473,1],[1487,1],[1495,1],[1508,1],[1522,1],[1530,1],[1543,1],[1557,1],[1565,1],[1579,2]]},"302":{"position":[[166,1],[198,1],[231,3],[241,3],[255,3],[259,3],[301,2],[304,1],[332,1],[379,1],[381,3],[508,1],[540,1],[567,3],[577,3],[591,3],[595,3],[636,2],[639,1],[667,1],[724,1],[726,3],[860,1],[899,1],[953,1],[961,3],[971,3],[985,3],[989,3],[1046,2],[1049,1],[1077,1],[1141,1],[1143,3],[1280,1],[1298,2],[1301,1],[1329,1],[1375,1],[1396,3],[1613,1],[1631,2],[1634,1],[1662,1],[1706,1],[1727,3]]},"304":{"position":[[184,1],[203,1],[242,3],[252,3],[266,3],[270,3],[274,1],[288,1],[316,1],[336,1],[338,1],[489,1],[516,3],[526,3],[540,3],[544,3],[552,1],[571,1],[601,1],[615,1],[643,1],[663,1],[665,1],[830,1],[884,1],[892,3],[902,3],[916,3],[920,3],[928,1],[972,1],[986,1],[1014,1],[1061,1],[1063,1],[1165,1],[1180,1],[1216,1],[1242,1],[1256,1],[1284,1],[1322,1],[1324,1],[1508,1],[1523,1],[1557,1],[1583,1],[1597,1],[1625,1],[1661,1],[1663,1]]},"308":{"position":[[398,1]]}}}],["0",{"_index":238,"t":{"28":{"position":[[256,2]]},"61":{"position":[[121,2]]},"87":{"position":[[579,2],[596,2],[609,2],[654,2],[670,1]]},"89":{"position":[[475,2],[492,2],[505,2],[551,2],[567,1],[602,2],[619,2],[632,2],[677,2],[693,1]]},"91":{"position":[[791,2],[808,2],[821,2],[866,2],[882,1]]},"128":{"position":[[291,2]]},"138":{"position":[[829,2],[878,2],[1314,2],[1363,2]]},"280":{"position":[[173,2],[362,2]]},"282":{"position":[[1308,2],[1321,2]]},"286":{"position":[[2332,1]]},"288":{"position":[[313,2],[2367,1]]},"294":{"position":[[292,2]]},"296":{"position":[[292,2]]}}}],["0deprec",{"_index":666,"t":{"93":{"position":[[0,11]]},"310":{"position":[[101,11]]}}}],["0xffffff",{"_index":973,"t":{"278":{"position":[[386,8]]},"282":{"position":[[876,9]]}}}],["1",{"_index":239,"t":{"28":{"position":[[259,2]]},"37":{"position":[[517,2],[703,1],[760,3],[764,2],[816,1],[854,1],[858,1],[986,3],[990,3],[1027,1],[1031,1]]},"55":{"position":[[58,1],[155,1],[285,1],[357,1]]},"61":{"position":[[135,1]]},"63":{"position":[[189,3],[222,3],[321,3],[454,3],[516,3]]},"80":{"position":[[35,1],[39,1],[129,1],[133,1]]},"83":{"position":[[221,1],[225,1],[686,1],[690,1]]},"85":{"position":[[239,1],[243,1]]},"87":{"position":[[449,2],[454,2]]},"89":{"position":[[326,2],[331,2]]},"91":{"position":[[562,2],[567,2]]},"123":{"position":[[448,2]]},"128":{"position":[[347,2],[353,1]]},"140":{"position":[[1446,4],[1752,3]]},"142":{"position":[[208,1],[737,1],[1000,1]]},"160":{"position":[[347,2]]},"166":{"position":[[121,3],[348,3]]},"168":{"position":[[116,3],[369,3]]},"170":{"position":[[131,3],[386,3]]},"191":{"position":[[534,2]]},"196":{"position":[[2138,2]]},"223":{"position":[[130,3],[370,3]]},"225":{"position":[[125,3],[391,3]]},"227":{"position":[[140,3],[408,3]]},"236":{"position":[[109,3],[306,3]]},"238":{"position":[[119,3],[342,3]]},"269":{"position":[[119,3],[326,3]]},"271":{"position":[[129,3],[362,3]]},"284":{"position":[[1216,1]]},"286":{"position":[[2240,1]]},"288":{"position":[[336,2],[2275,1]]},"290":{"position":[[1350,1]]},"292":{"position":[[1493,1]]},"294":{"position":[[315,2],[1385,1]]},"296":{"position":[[315,2],[1528,1]]},"302":{"position":[[1278,1],[1282,3],[1611,1],[1615,3]]},"304":{"position":[[1214,1],[1218,4],[1555,1],[1559,4]]}}}],["1+1",{"_index":366,"t":{"43":{"position":[[284,3]]}}}],["1+:toadd",{"_index":733,"t":{"107":{"position":[[269,8]]},"196":{"position":[[1783,8]]}}}],["1,2",{"_index":308,"t":{"37":{"position":[[608,5]]}}}],["1.0.0",{"_index":225,"t":{"26":{"position":[[202,8]]},"196":{"position":[[2026,8]]}}}],["1.1",{"_index":240,"t":{"28":{"position":[[262,4]]}}}],["1.1earli",{"_index":1174,"t":{"310":{"position":[[756,8]]}}}],["1.2",{"_index":241,"t":{"28":{"position":[[267,4]]}}}],["1.2releas",{"_index":1178,"t":{"310":{"position":[[848,10]]}}}],["10",{"_index":363,"t":{"43":{"position":[[237,2]]},"89":{"position":[[532,3]]},"107":{"position":[[296,2]]},"138":{"position":[[634,3],[647,3],[1119,3],[1132,3]]},"196":{"position":[[1810,2]]},"278":{"position":[[280,3]]},"282":{"position":[[754,3]]}}}],["1000",{"_index":1001,"t":{"280":{"position":[[322,6],[529,6]]}}}],["1045",{"_index":1019,"t":{"282":{"position":[[504,4]]}}}],["1080",{"_index":387,"t":{"43":{"position":[[864,4]]}}}],["12",{"_index":457,"t":{"55":{"position":[[126,2]]}}}],["120",{"_index":800,"t":{"128":{"position":[[335,4]]}}}],["123",{"_index":792,"t":{"128":{"position":[[152,4]]},"282":{"position":[[689,3]]}}}],["1234",{"_index":971,"t":{"278":{"position":[[330,5]]},"282":{"position":[[817,5]]}}}],["137",{"_index":826,"t":{"136":{"position":[[956,5],[1459,5]]}}}],["14",{"_index":875,"t":{"140":{"position":[[400,3],[982,3]]}}}],["16000",{"_index":497,"t":{"59":{"position":[[86,5]]}}}],["18.x",{"_index":146,"t":{"20":{"position":[[60,5]]}}}],["19",{"_index":959,"t":{"211":{"position":[[160,3],[414,3]]},"213":{"position":[[155,3],[435,3]]},"215":{"position":[[170,3],[452,3]]},"247":{"position":[[112,4],[328,4]]},"249":{"position":[[122,4],[364,4]]}}}],["1998",{"_index":1140,"t":{"306":{"position":[[12,5]]}}}],["1experiment",{"_index":271,"t":{"34":{"position":[[144,13]]},"310":{"position":[[642,13]]}}}],["2",{"_index":242,"t":{"28":{"position":[[272,1]]},"37":{"position":[[523,1]]},"57":{"position":[[293,1],[464,3]]},"80":{"position":[[95,1],[189,1]]},"83":{"position":[[300,1],[701,1],[705,1],[772,2]]},"85":{"position":[[261,1],[265,1],[376,1]]},"87":{"position":[[636,2]]},"89":{"position":[[338,2],[343,2],[659,2]]},"91":{"position":[[574,2],[579,2],[848,2]]},"105":{"position":[[195,3],[199,4]]},"142":{"position":[[220,1],[749,1],[1012,1]]},"278":{"position":[[349,2]]},"282":{"position":[[836,2]]},"284":{"position":[[1181,1]]},"286":{"position":[[2200,1]]},"288":{"position":[[2235,1]]},"290":{"position":[[1315,1]]},"292":{"position":[[1117,4],[1171,1],[1180,4],[1458,1]]},"294":{"position":[[1350,1]]},"296":{"position":[[1154,4],[1208,1],[1217,4],[1493,1]]}}}],["2+3",{"_index":937,"t":{"196":{"position":[[785,3],[1292,3]]}}}],["2.0",{"_index":327,"t":{"41":{"position":[[238,3]]}}}],["2.rds.amazonaws.com",{"_index":763,"t":{"119":{"position":[[379,21],[735,21]]},"156":{"position":[[349,21],[774,21]]},"187":{"position":[[402,21],[935,21]]}}}],["20",{"_index":960,"t":{"223":{"position":[[149,4],[389,4]]},"225":{"position":[[144,4],[410,4]]},"227":{"position":[[159,4],[427,4]]},"269":{"position":[[88,2],[295,2]]},"271":{"position":[[98,2],[331,2]]}}}],["2113931265",{"_index":1025,"t":{"282":{"position":[[907,11]]}}}],["2119",{"_index":773,"t":{"121":{"position":[[71,5]]},"158":{"position":[[71,5]]},"189":{"position":[[71,5]]}}}],["2130",{"_index":771,"t":{"121":{"position":[[7,5]]},"158":{"position":[[7,5]]},"189":{"position":[[7,5]]}}}],["2131",{"_index":776,"t":{"121":{"position":[[123,5]]},"158":{"position":[[123,5]]},"189":{"position":[[123,5]]}}}],["2181036031",{"_index":1026,"t":{"282":{"position":[[936,11]]}}}],["2282",{"_index":1141,"t":{"306":{"position":[[18,5]]}}}],["253",{"_index":1039,"t":{"282":{"position":[[1296,4]]}}}],["2stabl",{"_index":243,"t":{"28":{"position":[[289,7],[297,7]]},"83":{"position":[[0,7]]},"85":{"position":[[0,7]]},"87":{"position":[[0,7]]},"89":{"position":[[0,7]]},"91":{"position":[[0,7]]},"302":{"position":[[17,7],[396,7],[748,7],[1155,7],[1492,7]]},"304":{"position":[[17,7],[351,7],[685,7],[1073,7],[1418,7]]},"310":{"position":[[1114,7]]}}}],["3",{"_index":140,"t":{"18":{"position":[[39,2]]},"28":{"position":[[278,2]]},"37":{"position":[[646,1]]},"57":{"position":[[511,1]]},"63":{"position":[[232,3],[354,3],[364,3],[549,3],[559,3]]},"69":{"position":[[292,3]]},"105":{"position":[[388,1]]},"284":{"position":[[1251,1]]},"286":{"position":[[2280,1]]},"288":{"position":[[2315,1]]},"290":{"position":[[1385,1]]},"292":{"position":[[1528,1]]},"294":{"position":[[1420,1]]},"296":{"position":[[1563,1]]}}}],["33",{"_index":1035,"t":{"282":{"position":[[1261,3]]}}}],["3306",{"_index":385,"t":{"43":{"position":[[829,4]]},"113":{"position":[[219,5],[419,5]]},"123":{"position":[[178,4],[508,4]]},"150":{"position":[[189,5],[464,5]]},"160":{"position":[[166,4],[407,4]]},"181":{"position":[[242,5],[618,5]]},"191":{"position":[[174,4],[594,4]]},"196":{"position":[[163,5],[980,5],[1633,5]]}}}],["384",{"_index":1037,"t":{"282":{"position":[[1279,4]]}}}],["3legaci",{"_index":1188,"t":{"310":{"position":[[1181,7]]}}}],["4",{"_index":636,"t":{"83":{"position":[[775,1]]},"85":{"position":[[393,1]]},"284":{"position":[[1123,1],[1145,1]]},"286":{"position":[[2132,1],[2159,1]]},"288":{"position":[[2167,1],[2194,1]]},"290":{"position":[[1257,1],[1279,1]]},"292":{"position":[[1400,1],[1422,1]]},"294":{"position":[[1292,1],[1314,1]]},"296":{"position":[[1435,1],[1457,1]]}}}],["4.5.2",{"_index":612,"t":{"72":{"position":[[224,8]]}}}],["45",{"_index":816,"t":{"134":{"position":[[459,3],[787,3],[1139,4],[1438,4]]},"199":{"position":[[157,4],[392,4]]},"201":{"position":[[152,4],[413,4]]},"203":{"position":[[167,4],[430,4]]},"211":{"position":[[172,4],[426,4]]},"213":{"position":[[167,4],[447,4]]},"215":{"position":[[182,4],[464,4]]},"247":{"position":[[126,5],[342,5]]},"249":{"position":[[136,5],[378,5]]},"258":{"position":[[117,4],[319,4]]},"260":{"position":[[127,4],[355,4]]},"262":{"position":[[127,4],[374,4]]}}}],["5",{"_index":455,"t":{"55":{"position":[[80,3]]},"280":{"position":[[180,2],[369,2]]}}}],["5.6.10",{"_index":1024,"t":{"282":{"position":[[773,9]]}}}],["53",{"_index":827,"t":{"136":{"position":[[962,3],[1465,4]]}}}],["6",{"_index":456,"t":{"55":{"position":[[84,3]]}}}],["6.9.0",{"_index":956,"t":{"196":{"position":[[2207,8]]}}}],["60000",{"_index":845,"t":{"138":{"position":[[740,6],[811,5],[1225,6],[1296,5]]}}}],["8",{"_index":972,"t":{"278":{"position":[[366,2]]},"282":{"position":[[853,2]]}}}],["8bb6118f8fd6935ad0876a3be34a717d32708ffd",{"_index":745,"t":{"115":{"position":[[193,43]]},"152":{"position":[[163,43]]},"183":{"position":[[216,43]]}}}],["_err",{"_index":624,"t":{"80":{"position":[[54,6],[148,6]]},"83":{"position":[[240,6],[377,6],[718,6],[853,6]]},"85":{"position":[[314,6]]},"87":{"position":[[493,6]]},"89":{"position":[[384,6]]},"91":{"position":[[705,6]]}}}],["a,b,c,d",{"_index":313,"t":{"39":{"position":[[31,7]]}}}],["a.j",{"_index":777,"t":{"123":{"position":[[44,4]]},"160":{"position":[[32,4]]},"191":{"position":[[40,4]]}}}],["abov",{"_index":711,"t":{"103":{"position":[[708,5]]},"138":{"position":[[1638,5],[1844,5],[2154,5],[2385,5]]}}}],["accept",{"_index":392,"t":{"43":{"position":[[976,6]]}}}],["access",{"_index":334,"t":{"41":{"position":[[357,6]]},"76":{"position":[[57,7]]},"78":{"position":[[51,7]]},"97":{"position":[[77,6]]},"284":{"position":[[221,7]]},"286":{"position":[[637,7]]},"288":{"position":[[655,7]]},"290":{"position":[[331,7]]},"292":{"position":[[331,7]]},"294":{"position":[[349,7]]},"296":{"position":[[349,7]]},"298":{"position":[[145,6]]}}}],["accord",{"_index":575,"t":{"67":{"position":[[2435,9]]}}}],["accordingli",{"_index":539,"t":{"67":{"position":[[760,12]]}}}],["ack",{"_index":488,"t":{"57":{"position":[[641,3]]}}}],["acquir",{"_index":861,"t":{"138":{"position":[[2044,9]]}}}],["action",{"_index":268,"t":{"34":{"position":[[101,7],[238,7],[335,7],[530,7]]}}}],["activ",{"_index":1190,"t":{"310":{"position":[[1289,6]]}}}],["ad",{"_index":1127,"t":{"302":{"position":[[122,6]]}}}],["add(group",{"_index":911,"t":{"179":{"position":[[0,10]]},"181":{"position":[[0,10]]},"183":{"position":[[0,10]]},"185":{"position":[[0,10]]},"187":{"position":[[0,10]]},"191":{"position":[[0,10]]}}}],["addit",{"_index":85,"t":{"8":{"position":[[228,10]]},"41":{"position":[[3,8]]},"43":{"position":[[905,8]]},"52":{"position":[[251,8]]},"67":{"position":[[599,10]]},"69":{"position":[[245,10],[296,10]]},"101":{"position":[[3,8]]},"308":{"position":[[370,10]]}}}],["addition",{"_index":868,"t":{"138":{"position":[[2583,13]]}}}],["address",{"_index":1199,"t":{"310":{"position":[[1520,10]]}}}],["advanc",{"_index":668,"t":{"95":{"position":[[80,8]]}}}],["affect",{"_index":1109,"t":{"286":{"position":[[2317,8]]},"288":{"position":[[2352,8]]}}}],["affectedrow",{"_index":416,"t":{"50":{"position":[[222,13]]},"87":{"position":[[242,12],[582,13]]},"89":{"position":[[478,13],[605,13]]},"91":{"position":[[794,13]]},"286":{"position":[[485,15]]},"288":{"position":[[503,15]]}}}],["ag",{"_index":815,"t":{"134":{"position":[[451,5],[766,5],[1131,5],[1417,5]]},"136":{"position":[[935,5],[1438,5]]},"140":{"position":[[378,5],[960,5]]},"199":{"position":[[121,5],[356,5]]},"201":{"position":[[116,5],[377,5]]},"203":{"position":[[131,5],[394,5]]},"211":{"position":[[106,6],[360,6]]},"213":{"position":[[101,6],[381,6]]},"215":{"position":[[116,6],[398,6]]},"223":{"position":[[97,5],[337,5]]},"225":{"position":[[92,5],[358,5]]},"227":{"position":[[107,5],[375,5]]},"247":{"position":[[89,6],[305,6]]},"249":{"position":[[99,6],[341,6]]},"258":{"position":[[109,5],[311,5]]},"260":{"position":[[119,5],[347,5]]},"262":{"position":[[119,5],[366,5]]},"269":{"position":[[80,5],[287,5]]},"271":{"position":[[90,5],[323,5]]}}}],["again",{"_index":589,"t":{"69":{"position":[[396,6]]},"136":{"position":[[1693,6]]},"144":{"position":[[245,6]]}}}],["aim",{"_index":75,"t":{"8":{"position":[[7,4]]}}}],["algorithm",{"_index":577,"t":{"67":{"position":[[2592,9]]}}}],["algoritm",{"_index":590,"t":{"69":{"position":[[502,9]]}}}],["allow",{"_index":206,"t":{"24":{"position":[[181,6]]}}}],["alongsid",{"_index":222,"t":{"26":{"position":[[90,9]]}}}],["altern",{"_index":860,"t":{"138":{"position":[[1987,14]]}}}],["alway",{"_index":109,"t":{"12":{"position":[[192,6]]},"67":{"position":[[1488,6],[2239,6]]},"286":{"position":[[1793,6]]},"288":{"position":[[1830,6]]}}}],["amazon",{"_index":756,"t":{"119":{"position":[[56,6],[113,6],[406,7],[762,7]]},"121":{"position":[[36,6],[138,6]]},"156":{"position":[[44,6],[101,6],[376,7],[801,7]]},"158":{"position":[[36,6],[138,6]]},"187":{"position":[[52,6],[109,6],[429,7],[962,7]]},"189":{"position":[[36,6],[138,6]]}}}],["anoth",{"_index":529,"t":{"67":{"position":[[372,7]]}}}],["answer",{"_index":1116,"t":{"298":{"position":[[22,7]]},"302":{"position":[[84,7]]},"304":{"position":[[84,7]]}}}],["api",{"_index":24,"t":{"2":{"position":[[240,3]]},"6":{"position":[[17,3]]},"8":{"position":[[76,3]]},"67":{"position":[[1303,3]]},"101":{"position":[[79,3]]},"140":{"position":[[28,4]]},"308":{"position":[[102,3],[279,3]]}}}],["appli",{"_index":55,"t":{"6":{"position":[[233,7]]},"142":{"position":[[291,8],[339,8]]}}}],["approach",{"_index":1175,"t":{"310":{"position":[[817,11]]}}}],["arg",{"_index":986,"t":{"278":{"position":[[772,5]]}}}],["argument",{"_index":57,"t":{"6":{"position":[[252,10]]},"46":{"position":[[89,9]]}}}],["arguments[1",{"_index":988,"t":{"278":{"position":[[941,13],[1149,13]]}}}],["arguments[2",{"_index":989,"t":{"278":{"position":[[965,13]]}}}],["array",{"_index":297,"t":{"37":{"position":[[398,5],[942,5]]},"39":{"position":[[139,5],[148,6]]},"50":{"position":[[536,5]]},"57":{"position":[[230,5],[318,5]]},"83":{"position":[[11,5]]},"142":{"position":[[80,5],[844,5],[853,6],[875,5],[1140,5],[1149,6],[1171,5]]},"262":{"position":[[614,5]]},"278":{"position":[[824,7],[840,7]]}}}],["array.isarray(arguments[1",{"_index":987,"t":{"278":{"position":[[851,29]]}}}],["asc",{"_index":1064,"t":{"284":{"position":[[926,5]]},"286":{"position":[[1558,4]]},"288":{"position":[[1595,4]]},"290":{"position":[[1078,5]]},"292":{"position":[[1107,3],[1161,3]]},"294":{"position":[[1115,5]]},"296":{"position":[[1144,3],[1198,3]]}}}],["ascertain",{"_index":1182,"t":{"310":{"position":[[1045,9]]}}}],["ask",{"_index":521,"t":{"67":{"position":[[43,3]]},"142":{"position":[[1262,3]]},"298":{"position":[[42,5]]}}}],["assur",{"_index":1156,"t":{"310":{"position":[[162,6]]}}}],["async",{"_index":712,"t":{"105":{"position":[[0,5],[224,5]]},"140":{"position":[[64,5],[113,5],[1141,5]]},"196":{"position":[[92,5],[1962,5]]},"284":{"position":[[296,6]]},"286":{"position":[[616,6]]},"288":{"position":[[634,6]]},"290":{"position":[[310,6]]},"292":{"position":[[310,6]]},"294":{"position":[[328,6]]},"296":{"position":[[328,6]]}}}],["asynchron",{"_index":537,"t":{"67":{"position":[[703,14]]}}}],["attach",{"_index":449,"t":{"52":{"position":[[499,6]]}}}],["attack",{"_index":824,"t":{"136":{"position":[[302,7]]}}}],["auth",{"_index":523,"t":{"67":{"position":[[83,4],[801,4],[952,6],[1869,6]]},"69":{"position":[[702,5],[842,5],[982,5]]},"282":{"position":[[119,4]]}}}],["auth.doublesha1('pass123",{"_index":1010,"t":{"282":{"position":[[235,27]]}}}],["auth.verifytoken",{"_index":1012,"t":{"282":{"position":[[279,17]]}}}],["authcallback",{"_index":1027,"t":{"282":{"position":[[948,13]]}}}],["authent",{"_index":91,"t":{"8":{"position":[[285,14]]},"67":{"position":[[211,14],[610,14]]},"69":{"position":[[34,14],[159,14],[256,14],[412,14]]},"282":{"position":[[962,13]]},"308":{"position":[[558,14]]}}}],["authenticate(param",{"_index":1007,"t":{"282":{"position":[[169,20]]}}}],["authentication::native41",{"_index":576,"t":{"67":{"position":[[2448,24]]}}}],["authnextfactor",{"_index":583,"t":{"69":{"position":[[90,14]]}}}],["author",{"_index":952,"t":{"196":{"position":[[2144,9]]}}}],["authplugin",{"_index":524,"t":{"67":{"position":[[103,11],[928,12],[2480,11]]},"69":{"position":[[661,12]]}}}],["authswitchhandl",{"_index":555,"t":{"67":{"position":[[1318,17],[1778,18],[2508,17]]}}}],["authswitchrequest",{"_index":567,"t":{"67":{"position":[[2130,17]]}}}],["auto",{"_index":188,"t":{"22":{"position":[[709,4]]}}}],["auto_incr",{"_index":1054,"t":{"284":{"position":[[548,15]]},"286":{"position":[[993,15]]},"288":{"position":[[1030,15]]},"290":{"position":[[687,15]]},"292":{"position":[[713,15]]},"294":{"position":[[724,15]]},"296":{"position":[[750,15]]}}}],["automat",{"_index":858,"t":{"138":{"position":[[1733,13],[1940,13]]},"280":{"position":[[270,13]]}}}],["avail",{"_index":236,"t":{"28":{"position":[[238,9]]},"43":{"position":[[1080,10]]},"134":{"position":[[606,9],[1318,9]]},"136":{"position":[[1109,9],[1644,9]]},"140":{"position":[[443,9]]},"166":{"position":[[704,9]]},"168":{"position":[[753,9]]},"170":{"position":[[770,9]]},"199":{"position":[[639,9]]},"201":{"position":[[688,9]]},"203":{"position":[[705,9]]},"211":{"position":[[758,9]]},"213":{"position":[[807,9]]},"215":{"position":[[824,9]]},"223":{"position":[[730,9]]},"225":{"position":[[779,9]]},"227":{"position":[[796,9]]},"236":{"position":[[627,9]]},"238":{"position":[[691,9]]},"247":{"position":[[665,9]]},"249":{"position":[[729,9]]},"258":{"position":[[556,9]]},"260":{"position":[[620,9]]},"262":{"position":[[667,9]]},"269":{"position":[[647,9]]},"271":{"position":[[711,9]]},"310":{"position":[[1330,10]]}}}],["avg",{"_index":53,"t":{"6":{"position":[[212,5]]}}}],["avoid",{"_index":60,"t":{"6":{"position":[[292,5]]},"138":{"position":[[219,5]]}}}],["await",{"_index":714,"t":{"105":{"position":[[82,5],[155,5],[204,5],[398,5],[516,5]]},"107":{"position":[[356,5]]},"111":{"position":[[124,5]]},"113":{"position":[[128,5]]},"115":{"position":[[128,5]]},"117":{"position":[[146,5]]},"119":{"position":[[315,5],[488,5],[547,5]]},"134":{"position":[[235,5],[378,5],[698,5]]},"136":{"position":[[703,5],[865,5]]},"138":{"position":[[1667,5],[2173,5],[2237,5]]},"140":{"position":[[70,6],[181,5],[308,5],[744,5],[890,5],[1414,5]]},"142":{"position":[[426,5],[705,5]]},"148":{"position":[[194,5]]},"150":{"position":[[235,5]]},"152":{"position":[[239,5]]},"154":{"position":[[334,5]]},"156":{"position":[[413,5],[545,5],[604,5]]},"166":{"position":[[175,5]]},"168":{"position":[[170,5]]},"170":{"position":[[185,5]]},"179":{"position":[[286,5]]},"181":{"position":[[327,5]]},"183":{"position":[[331,5]]},"185":{"position":[[426,5]]},"187":{"position":[[505,5],[654,5],[713,5]]},"196":{"position":[[126,5],[292,5],[373,5],[675,5],[930,5],[1183,5],[1364,5],[2007,7]]},"199":{"position":[[185,5]]},"201":{"position":[[180,5]]},"203":{"position":[[195,5]]},"211":{"position":[[202,5]]},"213":{"position":[[197,5]]},"215":{"position":[[212,5]]},"223":{"position":[[188,5]]},"225":{"position":[[183,5]]},"227":{"position":[[198,5]]},"236":{"position":[[138,5]]},"238":{"position":[[148,5]]},"247":{"position":[[157,5]]},"249":{"position":[[167,5]]},"258":{"position":[[145,5]]},"260":{"position":[[155,5]]},"262":{"position":[[155,5]]},"269":{"position":[[148,5]]},"271":{"position":[[158,5]]},"284":{"position":[[392,5],[487,5],[656,5],[864,5],[1062,5]]},"286":{"position":[[731,5],[817,5],[922,5],[1101,5],[1337,5],[1454,5],[1618,5],[2083,5]]},"288":{"position":[[768,5],[854,5],[959,5],[1138,5],[1374,5],[1491,5],[1655,5],[2118,5]]},"290":{"position":[[425,5],[511,5],[616,5],[795,5],[1013,5],[1208,5]]},"292":{"position":[[451,5],[537,5],[642,5],[821,5],[1038,5],[1351,5]]},"294":{"position":[[462,5],[548,5],[653,5],[832,5],[1050,5],[1243,5]]},"296":{"position":[[488,5],[574,5],[679,5],[858,5],[1075,5],[1386,5]]},"304":{"position":[[205,5],[573,5],[930,5],[1182,5],[1525,5]]}}}],["await.j",{"_index":922,"t":{"196":{"position":[[0,8],[2062,11]]}}}],["b",{"_index":184,"t":{"22":{"position":[[622,1]]},"39":{"position":[[197,1]]}}}],["b.j",{"_index":778,"t":{"123":{"position":[[49,4]]},"160":{"position":[[37,4]]},"191":{"position":[[45,4]]}}}],["babel",{"_index":955,"t":{"196":{"position":[[2194,6]]}}}],["babelrc",{"_index":924,"t":{"196":{"position":[[15,8]]}}}],["back",{"_index":535,"t":{"67":{"position":[[659,4]]}}}],["backend",{"_index":686,"t":{"99":{"position":[[118,8],[166,8]]}}}],["backward",{"_index":1157,"t":{"310":{"position":[[169,8],[281,8]]}}}],["badg",{"_index":231,"t":{"28":{"position":[[18,6]]},"310":{"position":[[14,6]]}}}],["bar",{"_index":379,"t":{"43":{"position":[[730,6]]},"103":{"position":[[241,6],[528,6]]}}}],["base",{"_index":18,"t":{"2":{"position":[[170,5]]},"101":{"position":[[73,5]]},"310":{"position":[[983,5]]}}}],["basi",{"_index":74,"t":{"6":{"position":[[517,6]]}}}],["basic",{"_index":673,"t":{"95":{"position":[[608,5]]}}}],["befor",{"_index":281,"t":{"34":{"position":[[474,6]]},"284":{"position":[[1651,6]]}}}],["begin",{"_index":662,"t":{"91":{"position":[[552,5]]},"286":{"position":[[1518,5]]},"288":{"position":[[1555,5]]}}}],["behavior",{"_index":442,"t":{"52":{"position":[[363,8]]}}}],["below",{"_index":961,"t":{"234":{"position":[[13,5]]},"245":{"position":[[13,5]]},"256":{"position":[[13,5]]},"267":{"position":[[13,5]]}}}],["benchmark",{"_index":133,"t":{"16":{"position":[[63,10],[85,10],[115,10]]}}}],["beta",{"_index":1033,"t":{"282":{"position":[[1222,7],[1239,7]]}}}],["better",{"_index":81,"t":{"8":{"position":[[170,6]]},"55":{"position":[[449,6]]},"136":{"position":[[153,6],[1783,6]]},"144":{"position":[[335,6]]},"308":{"position":[[400,6]]}}}],["between",{"_index":580,"t":{"67":{"position":[[2648,7]]},"72":{"position":[[107,7]]}}}],["bin.000007",{"_index":798,"t":{"128":{"position":[[311,12]]}}}],["binari",{"_index":95,"t":{"8":{"position":[[364,6]]},"50":{"position":[[584,6]]},"130":{"position":[[102,6]]},"308":{"position":[[445,6]]}}}],["bind",{"_index":124,"t":{"14":{"position":[[99,8],[173,8]]},"61":{"position":[[4,4]]},"132":{"position":[[27,8]]}}}],["binlog",{"_index":129,"t":{"14":{"position":[[249,6]]}}}],["binlogpo",{"_index":799,"t":{"128":{"position":[[324,10]]}}}],["binlogstream",{"_index":789,"t":{"128":{"position":[[100,12]]}}}],["binlogstream.pip",{"_index":802,"t":{"128":{"position":[[381,18]]}}}],["blob",{"_index":562,"t":{"67":{"position":[[1607,4]]}}}],["block",{"_index":249,"t":{"30":{"position":[[177,6]]},"128":{"position":[[362,8]]},"304":{"position":[[137,6],[435,6],[769,6],[1154,6],[1497,6]]}}}],["bluebird",{"_index":877,"t":{"140":{"position":[[629,8],[645,8],[659,11],[705,8],[835,9]]}}}],["boolean",{"_index":434,"t":{"52":{"position":[[146,7]]},"61":{"position":[[105,7]]}}}],["both",{"_index":1136,"t":{"302":{"position":[[1417,4],[1748,4]]},"304":{"position":[[1343,4],[1682,4]]}}}],["bound",{"_index":1159,"t":{"310":{"position":[[230,5]]}}}],["branch",{"_index":158,"t":{"22":{"position":[[154,6]]}}}],["browser",{"_index":169,"t":{"22":{"position":[[399,7]]}}}],["buffer",{"_index":509,"t":{"61":{"position":[[222,6]]},"67":{"position":[[630,8],[1667,8]]}}}],["buffer.from",{"_index":744,"t":{"115":{"position":[[180,12]]},"152":{"position":[[150,12]]},"183":{"position":[[203,12]]}}}],["buffer.from('8bb6118f8fd6935ad0876a3be34a717d32708ffd",{"_index":747,"t":{"115":{"position":[[384,55]]},"152":{"position":[[429,55]]},"183":{"position":[[583,55]]}}}],["bug",{"_index":1198,"t":{"310":{"position":[[1488,4]]}}}],["build",{"_index":275,"t":{"34":{"position":[[266,5],[306,5]]}}}],["built",{"_index":137,"t":{"18":{"position":[[16,5]]}}}],["bun",{"_index":775,"t":{"121":{"position":[[119,3]]},"158":{"position":[[119,3]]},"189":{"position":[[119,3]]}}}],["byte",{"_index":438,"t":{"52":{"position":[[242,5]]}}}],["bytes/sec",{"_index":364,"t":{"43":{"position":[[240,9]]}}}],["c",{"_index":319,"t":{"39":{"position":[[214,1]]},"107":{"position":[[83,1]]},"136":{"position":[[954,1],[1457,1]]},"196":{"position":[[122,1],[1592,1]]}}}],["c.end",{"_index":735,"t":{"107":{"position":[[310,8]]},"196":{"position":[[936,8],[1824,8]]}}}],["c.execute('select",{"_index":732,"t":{"107":{"position":[[251,17]]},"196":{"position":[[484,17],[569,17],[695,17],[727,17],[1765,17]]}}}],["c.query('show",{"_index":730,"t":{"107":{"position":[[187,13]]},"196":{"position":[[298,13],[1701,13]]}}}],["c.query('som",{"_index":928,"t":{"196":{"position":[[379,13]]}}}],["ca",{"_index":753,"t":{"117":{"position":[[294,3],[575,3]]},"119":{"position":[[202,2],[214,2]]},"121":{"position":[[153,2]]},"154":{"position":[[264,3],[620,3]]},"156":{"position":[[190,2],[202,2]]},"158":{"position":[[153,2]]},"185":{"position":[[317,3],[774,3]]},"187":{"position":[[198,2],[210,2]]},"189":{"position":[[153,2]]}}}],["cach",{"_index":460,"t":{"55":{"position":[[215,6],[256,6],[322,5],[416,5],[480,5]]},"57":{"position":[[52,5]]},"59":{"position":[[36,6],[63,6],[173,5]]},"136":{"position":[[1729,5]]},"144":{"position":[[281,5]]}}}],["call",{"_index":459,"t":{"55":{"position":[[209,5]]},"67":{"position":[[520,4],[560,4],[1549,5],[2556,6]]},"91":{"position":[[89,4],[629,5],[1033,5]]},"136":{"position":[[816,4],[1351,4]]}}}],["callback",{"_index":424,"t":{"50":{"position":[[453,9]]},"57":{"position":[[598,8]]},"67":{"position":[[1443,9]]},"134":{"position":[[116,8]]},"136":{"position":[[596,8]]},"138":{"position":[[388,8],[1591,8],[2113,8]]},"142":{"position":[[404,8],[664,8]]}}}],["callback'",{"_index":1129,"t":{"302":{"position":[[470,10],[822,10],[1226,10],[1561,10]]}}}],["callback(nul",{"_index":564,"t":{"67":{"position":[[1646,14]]}}}],["callback.j",{"_index":739,"t":{"111":{"position":[[51,11]]},"113":{"position":[[55,11]]},"115":{"position":[[55,11]]},"117":{"position":[[55,11]]},"119":{"position":[[242,11]]},"148":{"position":[[45,11]]},"150":{"position":[[43,11]]},"152":{"position":[[43,11]]},"154":{"position":[[43,11]]},"156":{"position":[[230,11]]},"166":{"position":[[47,11]]},"168":{"position":[[42,11]]},"170":{"position":[[57,11]]},"179":{"position":[[53,11]]},"181":{"position":[[51,11]]},"183":{"position":[[51,11]]},"185":{"position":[[51,11]]},"187":{"position":[[238,11]]},"199":{"position":[[47,11]]},"201":{"position":[[42,11]]},"203":{"position":[[57,11]]},"211":{"position":[[47,11]]},"213":{"position":[[42,11]]},"215":{"position":[[57,11]]},"223":{"position":[[47,11]]},"225":{"position":[[42,11]]},"227":{"position":[[57,11]]},"236":{"position":[[30,11]]},"238":{"position":[[40,11]]},"247":{"position":[[30,11]]},"249":{"position":[[40,11]]},"258":{"position":[[30,11]]},"260":{"position":[[40,11]]},"262":{"position":[[40,11]]},"269":{"position":[[30,11]]},"271":{"position":[[40,11]]}}}],["candid",{"_index":1179,"t":{"310":{"position":[[859,9]]}}}],["capabilityflag",{"_index":410,"t":{"50":{"position":[[91,15]]},"278":{"position":[[369,16]]},"282":{"position":[[859,16],[889,16],[919,16]]}}}],["case",{"_index":369,"t":{"43":{"position":[[352,4]]},"67":{"position":[[1461,5]]},"119":{"position":[[148,4]]},"156":{"position":[[136,4]]},"187":{"position":[[144,4]]}}}],["catalog",{"_index":1029,"t":{"282":{"position":[[1139,8]]}}}],["catch",{"_index":741,"t":{"111":{"position":[[203,5]]},"113":{"position":[[248,5]]},"115":{"position":[[252,5]]},"117":{"position":[[347,5]]},"119":{"position":[[426,5],[591,5]]},"134":{"position":[[618,5],[818,5]]},"136":{"position":[[1121,5]]},"138":{"position":[[1778,5]]},"142":{"position":[[939,5]]},"148":{"position":[[264,5]]},"150":{"position":[[305,5]]},"152":{"position":[[309,5]]},"154":{"position":[[404,5]]},"156":{"position":[[483,5],[642,5]]},"166":{"position":[[258,5]]},"168":{"position":[[279,5]]},"170":{"position":[[296,5]]},"179":{"position":[[373,5]]},"181":{"position":[[414,5]]},"183":{"position":[[418,5]]},"185":{"position":[[513,5]]},"187":{"position":[[592,5],[758,5]]},"196":{"position":[[415,5]]},"199":{"position":[[266,5]]},"201":{"position":[[287,5]]},"203":{"position":[[304,5]]},"211":{"position":[[285,5]]},"213":{"position":[[306,5]]},"215":{"position":[[323,5]]},"223":{"position":[[271,5]]},"225":{"position":[[292,5]]},"227":{"position":[[309,5]]},"236":{"position":[[211,5]]},"238":{"position":[[247,5]]},"247":{"position":[[230,5]]},"249":{"position":[[266,5]]},"258":{"position":[[216,5]]},"260":{"position":[[252,5]]},"262":{"position":[[271,5]]},"269":{"position":[[221,5]]},"271":{"position":[[257,5]]},"304":{"position":[[131,5],[276,5],[429,5],[603,5],[763,5],[974,5],[1148,5],[1244,5],[1491,5],[1585,5]]}}}],["catch((err",{"_index":550,"t":{"67":{"position":[[1176,12]]},"103":{"position":[[620,12]]},"196":{"position":[[1426,12]]}}}],["catch(console.log",{"_index":884,"t":{"140":{"position":[[1806,19]]}}}],["catch(funct",{"_index":948,"t":{"196":{"position":[[1880,15]]}}}],["caus",{"_index":1193,"t":{"310":{"position":[[1407,5]]}}}],["caution",{"_index":195,"t":{"22":{"position":[[816,7]]},"310":{"position":[[387,7]]}}}],["cb",{"_index":380,"t":{"43":{"position":[[754,4]]},"67":{"position":[[1835,3]]},"282":{"position":[[190,3]]}}}],["cb(err",{"_index":569,"t":{"67":{"position":[[2196,8]]}}}],["cb(null",{"_index":388,"t":{"43":{"position":[[874,8]]},"67":{"position":[[2065,8]]},"282":{"position":[[391,9],[455,8]]}}}],["cd",{"_index":160,"t":{"22":{"position":[[189,2],[643,2]]}}}],["cert",{"_index":752,"t":{"117":{"position":[[245,5],[526,5]]},"119":{"position":[[217,4]]},"121":{"position":[[26,5],[156,4]]},"154":{"position":[[215,5],[571,5]]},"156":{"position":[[205,4]]},"158":{"position":[[26,5],[156,4]]},"185":{"position":[[268,5],[725,5]]},"187":{"position":[[213,4]]},"189":{"position":[[26,5],[156,4]]}}}],["cert.pem",{"_index":749,"t":{"117":{"position":[[76,8],[283,10],[326,11],[564,10],[607,11]]},"119":{"position":[[205,8]]},"154":{"position":[[64,8],[253,10],[296,11],[609,10],[652,11]]},"156":{"position":[[193,8]]},"185":{"position":[[72,8],[306,10],[349,11],[763,10],[806,11]]},"187":{"position":[[201,8]]}}}],["certs/ca",{"_index":748,"t":{"117":{"position":[[67,8]]},"154":{"position":[[55,8]]},"185":{"position":[[63,8]]}}}],["chang",{"_index":171,"t":{"22":{"position":[[420,7]]},"26":{"position":[[39,7],[106,8],[211,8],[227,6],[304,7],[344,7],[364,6]]},"87":{"position":[[24,7]]},"89":{"position":[[24,7]]},"91":{"position":[[24,7]]},"308":{"position":[[106,7]]},"310":{"position":[[301,7],[471,7],[747,8],[930,7]]}}}],["changedrow",{"_index":643,"t":{"87":{"position":[[148,11],[657,12]]},"89":{"position":[[554,12],[680,12]]},"91":{"position":[[869,12]]},"286":{"position":[[554,14]]},"288":{"position":[[572,14]]}}}],["changeus",{"_index":391,"t":{"43":{"position":[[963,12]]},"57":{"position":[[749,13]]}}}],["characterset",{"_index":409,"t":{"50":{"position":[[77,13]]},"278":{"position":[[352,13]]},"282":{"position":[[839,13],[1247,13]]}}}],["check",{"_index":35,"t":{"4":{"position":[[44,5]]},"10":{"position":[[7,5]]},"12":{"position":[[57,5]]},"34":{"position":[[13,5],[119,5],[158,6]]},"80":{"position":[[374,5]]},"95":{"position":[[13,5],[372,8],[477,8]]},"136":{"position":[[222,5]]}}}],["checkout",{"_index":183,"t":{"22":{"position":[[612,8]]}}}],["choos",{"_index":876,"t":{"140":{"position":[[475,6]]}}}],["ci",{"_index":162,"t":{"22":{"position":[[240,2],[679,2]]}}}],["clash",{"_index":885,"t":{"142":{"position":[[129,9]]}}}],["class",{"_index":12,"t":{"2":{"position":[[124,5]]},"95":{"position":[[628,5]]},"284":{"position":[[1428,5],[1669,5]]}}}],["classif",{"_index":1185,"t":{"310":{"position":[[1098,15]]}}}],["classifi",{"_index":1169,"t":{"310":{"position":[[618,10],[1354,10]]}}}],["clear",{"_index":274,"t":{"34":{"position":[[256,5],[292,5]]}}}],["cli",{"_index":179,"t":{"22":{"position":[[541,3]]},"196":{"position":[[2201,5]]}}}],["client",{"_index":28,"t":{"2":{"position":[[273,7]]},"8":{"position":[[384,6]]},"14":{"position":[[68,6],[143,7],[220,6]]},"37":{"position":[[171,6]]},"50":{"position":[[276,6],[383,7]]},"52":{"position":[[318,7]]},"67":{"position":[[51,6],[1577,6],[2656,6]]},"69":{"position":[[68,6]]},"99":{"position":[[237,6],[281,6]]},"130":{"position":[[6,6]]},"134":{"position":[[136,6],[863,6]]},"140":{"position":[[539,6]]}}}],["clientflag",{"_index":964,"t":{"278":{"position":[[62,11]]}}}],["clientflags.compress",{"_index":974,"t":{"278":{"position":[[397,21]]}}}],["clientplugindata(password1",{"_index":597,"t":{"69":{"position":[[789,27]]}}}],["clientplugindata(password2",{"_index":599,"t":{"69":{"position":[[929,27]]}}}],["clientplugindata(password3",{"_index":601,"t":{"69":{"position":[[1069,27]]}}}],["clone",{"_index":181,"t":{"22":{"position":[[557,5]]}}}],["close",{"_index":446,"t":{"52":{"position":[[405,5]]},"55":{"position":[[250,5]]},"57":{"position":[[72,6],[635,5]]},"59":{"position":[[187,7]]},"138":{"position":[[138,7]]},"310":{"position":[[895,5]]}}}],["co",{"_index":726,"t":{"107":{"position":[[39,2],[353,2]]},"196":{"position":[[1548,2],[2004,2]]}}}],["co(funct",{"_index":728,"t":{"107":{"position":[[59,12]]},"196":{"position":[[1568,12]]}}}],["co.j",{"_index":923,"t":{"196":{"position":[[9,5]]}}}],["code",{"_index":17,"t":{"2":{"position":[[165,4],[192,5]]},"30":{"position":[[172,4]]},"52":{"position":[[230,4]]},"67":{"position":[[821,4]]},"95":{"position":[[24,4]]},"121":{"position":[[98,4]]},"158":{"position":[[98,4]]},"189":{"position":[[98,4]]},"282":{"position":[[425,5],[498,5],[683,5]]},"308":{"position":[[66,4],[217,4]]}}}],["collat",{"_index":1154,"t":{"308":{"position":[[512,9]]}}}],["column",{"_index":474,"t":{"57":{"position":[[239,6],[334,6],[480,8]]},"142":{"position":[[16,7]]},"278":{"position":[[832,7],[955,7],[1029,9],[1066,9]]}}}],["columnlength",{"_index":1036,"t":{"282":{"position":[[1265,13]]}}}],["columntyp",{"_index":1038,"t":{"282":{"position":[[1284,11]]}}}],["come",{"_index":469,"t":{"57":{"position":[[37,5]]},"138":{"position":[[250,5]]}}}],["command",{"_index":280,"t":{"34":{"position":[[466,7]]},"50":{"position":[[203,8]]},"52":{"position":[[6,7],[162,7],[222,7],[291,8]]},"196":{"position":[[842,8]]},"310":{"position":[[547,7]]}}}],["commandcod",{"_index":435,"t":{"52":{"position":[[190,13]]}}}],["commit",{"_index":282,"t":{"34":{"position":[[495,7]]}}}],["commonli",{"_index":1117,"t":{"298":{"position":[[33,8]]}}}],["compat",{"_index":26,"t":{"2":{"position":[[250,10]]},"6":{"position":[[21,10]]},"30":{"position":[[188,10]]},"121":{"position":[[103,10]]},"158":{"position":[[103,10]]},"189":{"position":[[103,10]]},"308":{"position":[[283,10]]},"310":{"position":[[178,14],[290,10],[1122,13]]}}}],["compil",{"_index":203,"t":{"24":{"position":[[121,8]]},"99":{"position":[[101,9]]}}}],["complet",{"_index":177,"t":{"22":{"position":[[500,8]]},"24":{"position":[[52,8]]}}}],["complianc",{"_index":266,"t":{"34":{"position":[[49,10]]}}}],["compon",{"_index":199,"t":{"24":{"position":[[12,9],[165,11],[273,10]]},"26":{"position":[[12,9],[286,10]]},"28":{"position":[[204,10]]},"30":{"position":[[122,9],[230,10]]},"34":{"position":[[173,10]]}}}],["compress",{"_index":23,"t":{"2":{"position":[[218,10]]},"8":{"position":[[352,11]]},"130":{"position":[[123,12]]},"308":{"position":[[538,11]]}}}],["concept",{"_index":669,"t":{"95":{"position":[[89,9]]}}}],["config",{"_index":112,"t":{"12":{"position":[[239,6]]},"37":{"position":[[75,6]]},"67":{"position":[[126,6],[345,6],[1347,6]]},"69":{"position":[[354,6]]},"181":{"position":[[19,7]]},"183":{"position":[[19,7]]},"185":{"position":[[19,7]]},"187":{"position":[[19,7]]},"191":{"position":[[19,7]]}}}],["confirm",{"_index":1125,"t":{"302":{"position":[[59,9]]},"304":{"position":[[59,9]]}}}],["conn",{"_index":543,"t":{"67":{"position":[[832,4],[1682,4]]},"69":{"position":[[518,4]]},"76":{"position":[[128,4]]},"78":{"position":[[116,4]]},"83":{"position":[[107,4],[552,4]]},"85":{"position":[[124,4]]},"87":{"position":[[363,4]]},"89":{"position":[[214,4]]},"91":{"position":[[342,4]]},"105":{"position":[[75,4]]},"138":{"position":[[2166,4],[2425,5]]},"140":{"position":[[1634,4],[1721,4]]},"142":{"position":[[419,4],[537,4]]},"278":{"position":[[201,6]]},"282":{"position":[[599,6]]},"284":{"position":[[1450,5]]},"286":{"position":[[724,4]]},"288":{"position":[[761,4]]},"290":{"position":[[418,4]]},"292":{"position":[[444,4]]},"294":{"position":[[455,4]]},"296":{"position":[[481,4]]}}}],["conn.clos",{"_index":1023,"t":{"282":{"position":[[700,13],[1482,13]]}}}],["conn.end",{"_index":715,"t":{"105":{"position":[[210,11]]},"140":{"position":[[1838,12]]},"286":{"position":[[2089,11]]},"288":{"position":[[2124,11]]},"290":{"position":[[1214,11]]},"292":{"position":[[1357,11]]},"294":{"position":[[1249,11]]},"296":{"position":[[1392,11]]}}}],["conn.execute('select",{"_index":625,"t":{"80":{"position":[[108,20]]},"105":{"position":[[161,20]]}}}],["conn.execute>(sql",{"_index":663,"t":{"91":{"position":[[651,53]]}}}],["conn.query>('cal",{"_index":1102,"t":{"286":{"position":[[1624,45]]},"288":{"position":[[1661,45]]}}}],["conn.query('drop",{"_index":1097,"t":{"286":{"position":[[823,33],[1343,33]]},"288":{"position":[[860,33],[1380,33]]},"290":{"position":[[517,33]]},"292":{"position":[[543,33]]},"294":{"position":[[554,33]]},"296":{"position":[[580,33]]}}}],["conn.query(sql",{"_index":648,"t":{"87":{"position":[[460,32]]}}}],["conn.query(sql",{"_index":654,"t":{"89":{"position":[[349,34]]}}}],["conn.query('select",{"_index":630,"t":{"83":{"position":[[185,35]]}}}],["conn.query('show",{"_index":633,"t":{"83":{"position":[[321,33],[797,33]]}}}],["conn.query(sql",{"_index":638,"t":{"85":{"position":[[279,34]]}}}],["conn.query 45' ); console.log(results); // 结果集 console.log(fields); // 额外的元数据(如果有的话) } catch (err) { console.log(err); } // 使用占位符 try { const [results] = await connection.query( 'SELECT * FROM `table` WHERE `name` = ? AND `age` > ?', ['Page', 45] ); console.log(results); } catch (err) { console.log(err); } // 导入模块 const mysql = require('mysql2'); // 创建一个数据库连接 const connection = mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', }); // 简单查询 connection.query( 'SELECT * FROM `table` WHERE `name` = \"Page\" AND `age` > 45', function (err, results, fields) { console.log(results); // 结果集 console.log(fields); // 额外的元数据(如果有的话) } ); // 使用占位符 connection.query( 'SELECT * FROM `table` WHERE `name` = ? AND `age` > ?', ['Page', 45], function (err, results) { console.log(results); } );","s":"查询数据","u":"/node-mysql2/zh-CN/docs","h":"#查询数据","p":311},{"i":318,"t":"使用 MySQL2,您还可以提前准备好SQL预处理语句。 使用准备好的SQL预处理语句,MySQL 不必每次都为相同的查询做准备,这会带来更好的性能。 如果您不知道为什么它们很重要,请查看这些讨论: 如何防止预处理语句SQL注入攻击 MySQL2 提供了 execute 辅助函数,它将准备和查询语句。 您还可以使用 prepare / unprepare 方法手动准备/取消准备。 To explore more Prepared Statements and Placeholders examples, please visit the example section Prepared Statements. Promise Callback import mysql from 'mysql2/promise'; try { // 创建一个数据库连接 const connection = await mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', }); // execute 将在内部调用 prepare 和 query const [results, fields] = await connection.execute( 'SELECT * FROM `table` WHERE `name` = ? AND `age` > ?', ['Rick C-137', 53] ); console.log(results); // 结果集 console.log(fields); // 额外的元数据(如果有的话) } catch (err) { console.log(err); } const mysql = require('mysql2'); // 创建一个数据库连接 const connection = mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', }); // execute 将在内部调用 prepare 和 query connection.execute( 'SELECT * FROM `table` WHERE `name` = ? AND `age` > ?', ['Rick C-137', 53], function (err, results, fields) { console.log(results); // 结果集 console.log(fields); // 额外的元数据(如果有的话) } ); 提示 如果再次执行相同的语句,他将从缓存中选取,这能有效的节省准备查询时间获得更好的性能。","s":"SQL预处理的使用","u":"/node-mysql2/zh-CN/docs","h":"#sql预处理的使用","p":311},{"i":320,"t":"连接池通过重用以前的连接来帮助减少连接到 MySQL 服务器所花费的时间,当你完成它们时让它们保持打开而不是关闭。 这改善了查询的延迟,因为您避免了建立新连接所带来的所有开销。 To explore more Connection Pools examples, please visit the example section createPool. Promise Callback import mysql from 'mysql2/promise'; // 创建连接池,设置连接池的参数 const pool = mysql.createPool({ host: 'localhost', user: 'root', database: 'test', waitForConnections: true, connectionLimit: 10, maxIdle: 10, // max idle connections, the default value is the same as `connectionLimit` idleTimeout: 60000, // idle connections timeout, in milliseconds, the default value 60000 queueLimit: 0, enableKeepAlive: true, keepAliveInitialDelay: 0, }); const mysql = require('mysql2'); // 创建连接池,设置连接池的参数 const pool = mysql.createPool({ host: 'localhost', user: 'root', database: 'test', waitForConnections: true, connectionLimit: 10, maxIdle: 10, // max idle connections, the default value is the same as `connectionLimit` idleTimeout: 60000, // idle connections timeout, in milliseconds, the default value 60000 queueLimit: 0, enableKeepAlive: true, keepAliveInitialDelay: 0, }); 备注 该池不会预先创建所有连接,而是根据需要创建它们,直到达到连接限制。 您可以像直接连接一样使用池(使用 pool.query() 和 pool.execute()): Promise Callback try { // For pool initialization, see above const [rows, fields] = await pool.query('SELECT `field` FROM `table`'); // Connection is automatically released when query resolves } catch (err) { console.log(err); } // For pool initialization, see above pool.query('SELECT `field` FROM `table`', function (err, rows, fields) { // Connection is automatically released when query resolves }); 或者,也可以手动从池中获取连接并稍后返回: Promise Callback // For pool initialization, see above const conn = await pool.getConnection(); // Do something with the connection await conn.query(/* ... */); // Don't forget to release the connection when finished! pool.releaseConnection(conn); // For pool initialization, see above pool.getConnection(function (err, conn) { // Do something with the connection conn.query(/* ... */); // Don't forget to release the connection when finished! pool.releaseConnection(conn); }); Additionally, directly release the connection using the connection object: conn.release();","s":"连接池的使用","u":"/node-mysql2/zh-CN/docs","h":"#using-connection-pools","p":311},{"i":322,"t":"MySQL2 也支持 Promise API。 这与 ES7 异步等待非常有效。 import mysql from 'mysql2/promise'; async function main() { // create the connection const connection = await mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', }); // query database const [rows, fields] = await connection.execute( 'SELECT * FROM `table` WHERE `name` = ? AND `age` > ?', ['Morty', 14] ); } MySQL2 使用范围内可用的默认 Promise 对象。 但是你可以选择你想使用的 Promise 实现。 // 导入模块 import mysql from 'mysql2/promise'; // get the promise implementation, we will use bluebird import bluebird from 'bluebird'; // create the connection, specify bluebird as Promise const connection = await mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', Promise: bluebird, }); // query database const [rows, fields] = await connection.execute( 'SELECT * FROM `table` WHERE `name` = ? AND `age` > ?', ['Morty', 14] ); MySQL2 还在 Pools 上公开了一个 .promise()函数,因此您可以从同一个池创建一个 promise/non-promise 连接。 import mysql from 'mysql2'; async function main() { // create the pool const pool = mysql.createPool({ host: 'localhost', user: 'root', database: 'test', }); // now get a Promise wrapped instance of that pool const promisePool = pool.promise(); // query database using promises const [rows, fields] = await promisePool.query('SELECT 1'); } MySQL2 在 Connections 上公开了一个 .promise()函数,以“升级”现有的 non-promise 连接以使用 Promise。 const mysql = require('mysql2'); // create the connection const conn = mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', }); conn .promise() .query('SELECT 1') .then(([rows, fields]) => { console.log(rows); }) .catch(console.log) .then(() => conn.end());","s":"Promise封装","u":"/node-mysql2/zh-CN/docs","h":"#promise封装","p":311},{"i":324,"t":"如果你有两个相同名称的列,你可能希望以数组而不是对象的形式获取结果,为了防止冲突,这是与 Node MySQL 库的区别。 例如: SELECT 1 AS `foo`, 2 AS `foo`. 您可以在连接级别(适用于所有查询)或查询级别(仅适用于该特定查询)启用此设置。 连接级别 Promise Callback const conn = await mysql.createConnection({ host: 'localhost', database: 'test', user: 'root', rowsAsArray: true, }); const conn = mysql.createConnection({ host: 'localhost', database: 'test', user: 'root', rowsAsArray: true, }); 查询级别 Promise Callback try { const [results, fields] = await conn.query({ sql: 'SELECT 1 AS `foo`, 2 AS `foo`', rowsAsArray: true, }); console.log(results); // 返回数组而不是数组对象 console.log(fields); // 无变化 } catch (err) { console.log(err); } conn.query( { sql: 'SELECT 1 AS `foo`, 2 AS `foo`', rowsAsArray: true, }, function (err, results, fields) { console.log(results); // in this query, results will be an array of arrays rather than an array of objects console.log(fields); // fields are unchanged } ); Getting Help Need help? Ask your question on Stack Overflow or GitHub. If you've encountered an issue, please file it on GitHub.","s":"结果返回","u":"/node-mysql2/zh-CN/docs","h":"#结果返回","p":311},{"i":326,"t":"内部协议由@sidorares编写 MySQL-Native 常量、SQL参数插值、连接池、ConnectionConfig 类取自node-mysql 基于@TooTallNate的SSL代码升级代码地址 与MariaSQL客户端兼容安全连接/压缩连接 API。 贡献者","s":"鸣谢","u":"/node-mysql2/zh-CN/docs/acknowledgements","h":"","p":325},{"i":328,"t":"MySQL2大部分的API与 Node MySQL 基本上相同,你应该查看他们的API文档来知道更多的API选项。 One known incompatibility is that DECIMAL values are returned as strings whereas in Node MySQL they are returned as numbers. This includes the result of SUM() and AVG() functions when applied to INTEGER arguments. This is done deliberately to avoid loss of precision - see https://github.com/sidorares/node-mysql2/issues/935. 信息 如果您发现与 Node MySQL 的任何不兼容问题,请通过issue报告。 我们将优先修复报告的不兼容问题。","s":"API配置项","u":"/node-mysql2/zh-CN/docs/api-and-configurations","h":"","p":327},{"i":330,"t":"如果要为node-mysql2做些贡献.请查阅 Contributing.md 来获得更多详细信息。","s":"贡献","u":"/node-mysql2/zh-CN/docs/contributing","h":"","p":329},{"i":332,"t":"This website is built using Docusaurus 3, a modern static website generator.","s":"Website Contributing Guidelines","u":"/node-mysql2/zh-CN/docs/contributing/website","h":"","p":331},{"i":334,"t":"You will need these tools installed on your system: Node.js (18.x or higher)","s":"Environment","u":"/node-mysql2/zh-CN/docs/contributing/website","h":"#environment","p":331},{"i":336,"t":"Fork the MySQL2 repository. Download your forked repository locally. The website's workspace is the \"website\" directory in node-mysql2 root. Create a new branch from master (optional). Run cd website to enter the website workspace. Run npm ci to install the dependecies from package-lock.json. Run npm start to starting the local development. It will start a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. For Docusaurus complete documentation, please see here. CLI example git clone https://github.com/sidorares/node-mysql2.git git checkout -b website # optional cd /path-to/node-mysql2/website npm ci npm start Documentation is auto-generated from MDX files placed in these directories: ./docs/documentation ./docs/examples ./docs/faq Caution Note that the website has its own package.json. Please, do not install dependencies for the website in node-mysql2 root.","s":"Development","u":"/node-mysql2/zh-CN/docs/contributing/website","h":"#development","p":331},{"i":338,"t":"Every extra component is thoroughly documented with complete typings descriptions. Docusaurus Markdown Features: The MDX compiler transforms Markdown files to React components, and allows you to use JSX in your Markdown content. This enables you to easily interleave React components within your content, and create delightful learning experiences.","s":"Extras Components","u":"/node-mysql2/zh-CN/docs/contributing/website","h":"#extras-components","p":331},{"i":340,"t":"The History component displays version changes in a table format, listing version numbers alongside their changes. import { History } from '@site/src/components/History'; 提示 You can also utilize React components in the changes option. Example History Version Changes v1.0.0 Some change message.","s":"History","u":"/node-mysql2/zh-CN/docs/contributing/website","h":"#history","p":331},{"i":342,"t":"See the Stability Badges for more detais. import { Stability } from '@site/src/components/Stability'; 提示 You can also utilize React components in the message option. Available levels: 0, 1, 1.1, 1.2, 2 and 3. Example 2Stable 2Stable Some message.","s":"Stability","u":"/node-mysql2/zh-CN/docs/contributing/website","h":"#stability","p":331},{"i":344,"t":"import { FAQ } from '@site/src/components/FAQ'; > Some markdown (**MDX**) content. 提示 The FAQ component can be utilized in any section or page. Code blocks are compatible and can be used within the FAQ component. Example Title Some markdown (MDX) content.","s":"FAQ","u":"/node-mysql2/zh-CN/docs/contributing/website","h":"#faq","p":331},{"i":346,"t":"import { ExternalCodeEmbed } from '@site/src/components/ExternalCodeEmbed'; Example","s":"ExternalCodeEmbed","u":"/node-mysql2/zh-CN/docs/contributing/website","h":"#externalcodeembed","p":331},{"i":348,"t":"npm run test Check Prettier and ESLint rules for compliance npm run lintcheck Included in the GitHub Actions workflow. Check for typings errors 1Experimental Checks for MDX components are missing. npm run typecheck Included in the GitHub Actions workflow. Clear and build the website npm run clear npm run build Included in the GitHub Actions workflow. Fix issues from Prettier and ESLint rules npm run lint To prevent lint issues, it is recommended to execute this command before creating your commit. Not included in the GitHub Actions workflow.","s":"Running Tests","u":"/node-mysql2/zh-CN/docs/contributing/website","h":"#running-tests","p":331},{"i":350,"t":"MySQL2 aims to be a drop in replacement for Node MySQL. 备注 If you see any API incompatibilities with Node MySQL, please report via github issue. Not only MySQL2 offers better performance over Node MySQL, we also support these additional features: Prepared Statements Promise Wrapper Authentication Switch More Features MySQL Server Pooling SSL MySQL Compression Binary Log Protocol Client","s":"Documentation","u":"/node-mysql2/zh-CN/docs/documentation","h":"","p":349},{"i":352,"t":"Please check these examples for MySQL2.","s":"Examples","u":"/node-mysql2/zh-CN/docs/documentation","h":"#examples","p":349},{"i":354,"t":"zeroFill flag is ignored in type conversion. You need to check corresponding field's zeroFill flag and convert to string manually if this is of importance to you. DECIMAL and NEWDECIMAL types always returned as string unless you pass this config option: { decimalNumbers: true, } 备注 This option could lose precision on the number as Javascript Number is a Float!","s":"Known incompatibilities with Node MySQL","u":"/node-mysql2/zh-CN/docs/documentation","h":"#known-incompatibilities-with-node-mysql","p":349},{"i":356,"t":"Wire protocol documentation Node MySQL - Most popular node.js mysql client library node-mariasql - Bindings to libmariasql. One of the fastest clients node-libmysqlclient - Bindings to libmysqlclient go-mysql - MySQL Go client (prepared statements, binlog protocol, server)","s":"Other Resources","u":"/node-mysql2/zh-CN/docs/documentation","h":"#other-resources","p":349},{"i":358,"t":"https://gist.github.com/sidorares/ffe9ee9c423f763e3b6b npm run benchmarks node-mysql-benchmarks try to run example benchmarks on your system","s":"Benchmarks","u":"/node-mysql2/zh-CN/docs/documentation","h":"#benchmarks","p":349},{"i":360,"t":"During the connection phase the server may ask the client to switch to a different auth method. If the authPlugins connection config option is set, it must be an object where each key is the name of a potential authentication plugin requested by the server, and the corresponding value must be a function that optionally receives the connection config options and returns another function, which in turn, optionally receives the switch request data. The plugin is loaded with a ({user,password,...}) signature, and each call has a (pluginData) signature. Each call should make the plugin return any additional authentication data (Buffer) that should be sent back to the server, either synchronously or asynchronously using a Promise, or should yield an error accordingly. Example: (imaginary ssh-key-auth plugin) pseudo code const conn = mysql.createConnection({ user: 'test_user', password: 'test', database: 'test_database', authPlugins: { 'ssh-key-auth': function ({ password }) { return function (pluginData) { return getPrivate(key) .then((key) => { const response = encrypt(key, password, pluginData); // continue handshake by sending response data return response; }) .catch((err) => { // throw error to propagate error to connect/changeUser handlers }); }; }, }, }); There is also a deprecated API where if a authSwitchHandler connection config option is set it must be a function that receives switch request data and responds via a callback. In this case, the first invocation always has a ({pluginName, pluginData}) signature, following calls - ({pluginData}). The client replies with an opaque blob matching the requested plugin via callback(null, data: Buffer). const conn = mysql.createConnection({ user: 'test_user', password: 'test', database: 'test_database', authSwitchHandler: function ({ pluginName, pluginData }, cb) { if (pluginName === 'ssh-key-auth') { getPrivateKey((key) => { const response = encrypt(key, pluginData); // continue handshake by sending response data // respond with error to propagate error to connect/changeUser handlers cb(null, response); }); } else { const err = new Error( `Unknown AuthSwitchRequest plugin name ${pluginName}` ); err.fatal = true; cb(err); } }, }); The initial handshake is always performed using mysql_native_password plugin. This will be possible to override in future versions. Note that if the mysql_native_password method is requested it will be handled internally according to Authentication::Native41 and no authPlugins function or the authSwitchHandler will be invoked. These MAY be called multiple times if the plugin algorithm requires multiple roundtrips of data exchange between client and server.","s":"Authentication Switch Request","u":"/node-mysql2/zh-CN/docs/documentation/authentication-switch","h":"","p":359},{"i":362,"t":"If the user requires multi-factor authentication in the server, the client will receive a AuthNextFactor request, which is similar in structure to the regular authentication switch request and contains the name and possible initial data for the additional authentication factor plugin (up to 3). Additional passwords can be provided using the connection config options - password2 and password3. Again, for each authentication factor, multiple roundtrips of data exchange can be required by the plugin algoritm. const conn = mysql.createConnection({ user: 'test_user', password: 'secret1', password2: 'secret2', password3: 'secret3', database: 'test_database', authPlugins: { // password1 === password 'auth-plugin1': function ({ password1 }) { return function (serverPluginData) { return clientPluginData(password1, serverPluginData); }; }, 'auth-plugin2': function ({ password2 }) { return function (serverPluginData) { return clientPluginData(password2, serverPluginData); }; }, 'auth-plugin3': function ({ password3 }) { return function (serverPluginData) { return clientPluginData(password3, serverPluginData); }; }, }, });","s":"Multi-factor authentication","u":"/node-mysql2/zh-CN/docs/documentation/authentication-switch","h":"#multi-factor-authentication","p":359},{"i":365,"t":"You can use named placeholders for parameters by setting namedPlaceholders config value or query/execute time option. Named placeholders are converted to unnamed ? on the client (mysql protocol does not support named parameters). If you reference parameter multiple times under the same name it is sent to server multiple times. Unnamed placeholders can still be used by providing the values as an array instead of an object. connection.config.namedPlaceholders = true; connection.execute('select :x + :y as z', { x: 1, y: 2 }, (err, rows) => { // statement prepared as \"select ? + ? as z\" and executed with [1,2] values // rows returned: [ { z: 3 } ] }); connection.execute('select :x + :x as z', { x: 1 }, (err, rows) => { // select ? + ? as z, execute with [1, 1] }); connection.query('select :x + :x as z', { x: 1 }, (err, rows) => { // query select 1 + 1 as z }); // unnamed placeholders are still valid if the values are provided in an array connection.query('select ? + ? as z', [1, 1], (err, rows) => { // query select 1 + 1 as z });","s":"Named placeholders","u":"/node-mysql2/zh-CN/docs/documentation/extras","h":"#named-placeholders","p":363},{"i":367,"t":"const options = { sql: 'select A,B,C,D from foo', rowsAsArray: true }; connection.query(options, (err, results) => { /* results will be an array of arrays like this now: [[ 'field A value', 'field B value', 'field C value', 'field D value', ], ...] */ });","s":"Receiving rows as array of columns instead of hash with column name as key:","u":"/node-mysql2/zh-CN/docs/documentation/extras","h":"#receiving-rows-as-array-of-columns-instead-of-hash-with-column-name-as-key","p":363},{"i":369,"t":"In addition to sending local fs files you can send any stream using infileStreamFactory query option. If set, it has to be a function that return a readable stream. It gets file path from query as a parameter. Note: starting from version 2.0 infileStreamFactory is required parameter for LOAD DATA LOCAL INFILE. Response from server indicates that it wants access to a local file and no infileStreamFactory option is provided the query ends with error. // local file connection.query( 'LOAD DATA LOCAL INFILE \"/tmp/data.csv\" INTO TABLE test FIELDS TERMINATED BY ? (id, title)', onInserted1 ); // local stream const sql = 'LOAD DATA LOCAL INFILE \"mystream\" INTO TABLE test FIELDS TERMINATED BY ? (id, title)'; connection.query( { sql: sql, infileStreamFactory: function (path) { return getStream(); }, }, onInserted2 ); The infileStreamFactory option may also be set at a connection-level: const fs = require('fs'); const mysql = require('mysql2'); const connection = mysql.createConnection({ user: 'test', database: 'test', infileStreamFactory: (path) => { // Validate file path const validPaths = ['/tmp/data.csv']; if (!validPaths.includes(path)) { throw new Error( `invalid file path: ${path}: expected to be one of ${validPaths.join( ',' )}` ); } return fs.createReadStream(path); }, }); connection.query( 'LOAD DATA LOCAL INFILE \"/tmp/data.csv\" INTO TABLE test', onInserted );","s":"Sending tabular data with 'load infile' and local stream:","u":"/node-mysql2/zh-CN/docs/documentation/extras","h":"#sending-tabular-data-with-load-infile-and-local-stream","p":363},{"i":371,"t":"const net = require('net'); const mysql = require('mysql2'); const shape = require('shaper'); const connection = mysql.createConnection({ user: 'test', database: 'test', stream: net.connect('/tmp/mysql.sock').pipe(shape(10)), // emulate 10 bytes/sec link }); connection.query('SELECT 1+1 as test1', console.log); stream also can be a function. In that case function result has to be duplex stream, and it is used for connection transport. This is required if you connect pool using custom transport as new pooled connection needs new stream. Example connecting over socks5 proxy: const mysql = require('mysql2'); const SocksConnection = require('socksjs'); const pool = mysql.createPool({ database: 'test', user: 'foo', password: 'bar', stream: function (cb) { const newStream = new SocksConnection( { host: 'remote.host', port: 3306 }, { host: 'localhost', port: 1080 } ); cb(null, newStream); }, }); In addition to password createConnection(), createPool() and changeUser() accept passwordSha1 option. This is useful when implementing proxies as plaintext password might be not available.","s":"Connecting using custom stream:","u":"/node-mysql2/zh-CN/docs/documentation/extras","h":"#connecting-using-custom-stream","p":363},{"i":374,"t":"createServer() - creates server instance Server.listen - listen port / unix socket (same arguments as net.Server.listen)","s":"Server","u":"/node-mysql2/zh-CN/docs/documentation/mysql-server","h":"#server","p":372},{"i":376,"t":"connect new incoming connection.","s":"Events","u":"/node-mysql2/zh-CN/docs/documentation/mysql-server","h":"#events","p":372},{"i":378,"t":"serverHandshake({ serverVersion, protocolVersion, connectionId, statusFlags, characterSet, capabilityFlags }) send server handshake initialisation packet, wait handshake response and start listening for commands writeOk({ affectedRows: num, insertId: num }) send OK packet to client writeEof(warnings, statusFlags) send EOF packet writeTextResult(rows, fields) write query result to client. Rows and fields are in the same format as in connection.query callback. writeColumns(fields) write fields + EOF packets. writeTextRow(row) write array (not hash!) of values as result row TODO: binary protocol","s":"Connection","u":"/node-mysql2/zh-CN/docs/documentation/mysql-server","h":"#connection","p":372},{"i":380,"t":"Every command packet received by the server will be emitted as a packet event with the parameters: packet: Packet The packet itself knownCommand: boolean is this command known to the server *commandCode: number the parsed command code (first byte) In addition special events are emitted for commands received from the client. If no listener is present a fallback behavior will be invoked. quit() Default: close the connection init_db(schemaName: string) Default: return OK query(sql: string) Please attach a listener to this. Default: return HA_ERR_INTERNAL_ERROR field_list(table: string, fields: string) Default: return ER_WARN_DEPRECATED_SYNTAX ping() - Default: return OK","s":"Events","u":"/node-mysql2/zh-CN/docs/documentation/mysql-server","h":"#events-1","p":372},{"i":383,"t":"Similar to connection.query(). connection.execute('select 1 + ? + ? as result', [5, 6], (err, rows) => { // rows: [ { result: 12 } ] // internally 'select 1 + ? + ? as result' is prepared first. On subsequent calls cached statement is re-used }); // close cached statement for 'select 1 + ? + ? as result'. noop if not in cache connection.unprepare('select 1 + ? + ? as result'); Note that connection.execute() will cache the prepared statement for better performance, remove the cache with connection.unprepare() when you're done.","s":"Automatic creation, cached and re-used by connection","u":"/node-mysql2/zh-CN/docs/documentation/prepared-statements","h":"#automatic-creation-cached-and-re-used-by-connection","p":381},{"i":385,"t":"Manually prepared statements doesn't comes with LRU cache and SHOULD be closed using statement.close() instead of connection.unprepare(). connection.prepare('select ? + ? as tests', (err, statement) => { // statement.parameters - array of column definitions, length === number of params, here 2 // statement.columns - array of result column definitions. Can be empty if result schema is dynamic / not known // statement.id // statement.query statement.execute([1, 2], (err, rows, columns) => { // -> [ { tests: 3 } ] }); // don't use connection.unprepare(), it won't work! // note that there is no callback here. There is no statement close ack at protocol level. statement.close(); }); Note that you should not use statement after connection reset (changeUser() or disconnect). Statement scope is connection, you need to prepare statement for each new connection in order to use it.","s":"Manual prepare / execute","u":"/node-mysql2/zh-CN/docs/documentation/prepared-statements","h":"#manual-prepare--execute","p":381},{"i":387,"t":"maxPreparedStatements : We keep the cached statements in a lru-cache. Default size is 16000 but you can use this option to override it. Any statements that are dropped from cache will be closed.","s":"Configuration","u":"/node-mysql2/zh-CN/docs/documentation/prepared-statements","h":"#configuration","p":381},{"i":389,"t":"The bind parameter values passed to execute are serialized JS -> MySQL as: null -> NULL number -> DOUBLE boolean -> TINY (0 for false, 1 for true) object -> depending on prototype: Date -> DATETIME JSON like object - JSON Buffer -> VAR_STRING Other -> VAR_STRING Passing in undefined or a function will result in an error.","s":"Serialization of bind parameters","u":"/node-mysql2/zh-CN/docs/documentation/prepared-statements","h":"#serialization-of-bind-parameters","p":381},{"i":391,"t":"MySQL2 provides execute helper which will prepare and query the statement. You can also manually prepare / unprepare statement with prepare / unprepare methods. connection.execute( 'select ?+1 as qqq, ? as rrr, ? as yyy', [1, null, 3], (err, rows, fields) => { console.log(err, rows, fields); connection.execute( 'select ?+1 as qqq, ? as rrr, ? as yyy', [3, null, 3], (err, rows, fields) => { console.log(err, rows, fields); connection.unprepare('select ?+1 as qqq, ? as rrr, ? as yyy'); connection.execute( 'select ?+1 as qqq, ? as rrr, ? as yyy', [3, null, 3], (err, rows, fields) => { console.log(err, rows, fields); } ); } ); } );","s":"Prepared Statements Helper","u":"/node-mysql2/zh-CN/docs/documentation/prepared-statements","h":"#prepared-statements-helper","p":381},{"i":393,"t":"For Prepared Statements examples, please see here.","s":"Examples","u":"/node-mysql2/zh-CN/docs/documentation/prepared-statements","h":"#examples","p":381},{"i":395,"t":"In addition to errback interface there is thin wrapper to expose Promise-based api","s":"Promise Wrappers","u":"/node-mysql2/zh-CN/docs/documentation/promise-wrapper","h":"","p":394},{"i":397,"t":"/* eslint-env es6 */ const mysql = require('mysql2/promise'); // or require('mysql2').createConnectionPromise mysql .createConnection({ /* same parameters as for non-promise createConnection */ }) .then((conn) => conn.query('select foo from bar')) .then(([rows, fields]) => console.log(rows[0].foo)); const pool = require('mysql2/promise').createPool({}); // or require('mysql2').createPoolPromise({}) or require('mysql2').createPool({}).promise() pool .getConnection() .then((conn) => { const res = conn.query('select foo from bar'); conn.release(); return res; }) .then((result) => { console.log(result[0][0].foo); }) .catch((err) => { console.log(err); // any of connection time or query time errors from above });","s":"Basic Promise","u":"/node-mysql2/zh-CN/docs/documentation/promise-wrapper","h":"#basic-promise","p":394},{"i":399,"t":"async function example1() { const mysql = require('mysql2/promise'); const conn = await mysql.createConnection({ database: test }); const [rows, fields] = await conn.execute('select ?+? as sum', [2, 2]); await conn.end(); } async function example2() { const mysql = require('mysql2/promise'); const pool = mysql.createPool({ database: test }); // execute in parallel, next console.log in 3 seconds await Promise.all([ pool.query('select sleep(2)'), pool.query('select sleep(3)'), ]); console.log('3 seconds after'); await pool.end(); }","s":"ES7 Async Await","u":"/node-mysql2/zh-CN/docs/documentation/promise-wrapper","h":"#es7-async-await","p":394},{"i":401,"t":"const mysql = require('mysql2'); const co = require('co'); co(function* () { const c = yield mysql.createConnectionPromise({ user: 'root', namedPlaceholders: true, }); const rows = yield c.query('show databases'); console.log(rows); console.log(yield c.execute('select 1+:toAdd as qqq', { toAdd: 10 })); yield c.end(); }); Examples in /examples/promise-co-await","s":"With CO","u":"/node-mysql2/zh-CN/docs/documentation/promise-wrapper","h":"#with-co","p":394},{"i":404,"t":"npm install --save mysql2 npm install --save-dev @types/node The @types/node ensure the proper interaction between TypeScript and the Node.js modules used by MySQL2 (net, events, stream, tls, etc.). 信息 Requires TypeScript >=4.5.2.","s":"Installation","u":"/node-mysql2/zh-CN/docs/documentation/typescript-examples","h":"#installation","p":402},{"i":406,"t":"You can import MySQL2 in two ways: By setting the esModuleInterop option to true in tsconfig.json import mysql from 'mysql2'; import mysql from 'mysql2/promise'; By setting the esModuleInterop option to false in tsconfig.json import * as mysql from 'mysql2'; import * as mysql from 'mysql2/promise';","s":"Usage","u":"/node-mysql2/zh-CN/docs/documentation/typescript-examples","h":"#usage","p":402},{"i":408,"t":"import mysql, { ConnectionOptions } from 'mysql2'; const access: ConnectionOptions = { user: 'test', database: 'test', }; const conn = mysql.createConnection(access);","s":"Connection","u":"/node-mysql2/zh-CN/docs/documentation/typescript-examples","h":"#connection","p":402},{"i":410,"t":"import mysql, { PoolOptions } from 'mysql2'; const access: PoolOptions = { user: 'test', database: 'test', }; const conn = mysql.createPool(access);","s":"Pool Connection","u":"/node-mysql2/zh-CN/docs/documentation/typescript-examples","h":"#pool-connection","p":402},{"i":412,"t":"A simple query conn.query('SELECT 1 + 1 AS `test`;', (_err, rows) => { /** * @rows: [ { test: 2 } ] */ }); conn.execute('SELECT 1 + 1 AS `test`;', (_err, rows) => { /** * @rows: [ { test: 2 } ] */ }); The rows output will be these possible types: RowDataPacket[] RowDataPacket[][] ResultSetHeader ResultSetHeader[] ProcedureCallPacket In this example, you need to manually check the output types","s":"Query and Execute","u":"/node-mysql2/zh-CN/docs/documentation/typescript-examples","h":"#query-and-execute","p":402},{"i":415,"t":"2Stable An array with the returned rows, for example: import mysql, { RowDataPacket } from 'mysql2'; const conn = mysql.createConnection({ user: 'test', database: 'test', }); // SELECT conn.query('SELECT 1 + 1 AS `test`;', (_err, rows) => { console.log(rows); /** * @rows: [ { test: 2 } ] */ }); // SHOW conn.query('SHOW TABLES FROM `test`;', (_err, rows) => { console.log(rows); /** * @rows: [ { Tables_in_test: 'test' } ] */ }); Using rowsAsArray option as true: import mysql, { RowDataPacket } from 'mysql2'; const conn = mysql.createConnection({ user: 'test', database: 'test', rowsAsArray: true, }); // SELECT conn.query( 'SELECT 1 + 1 AS test, 2 + 2 AS test;', (_err, rows) => { console.log(rows); /** * @rows: [ [ 2, 4 ] ] */ } ); // SHOW conn.query('SHOW TABLES FROM `test`;', (_err, rows) => { console.log(rows); /** * @rows: [ [ 'test' ] ] */ });","s":"RowDataPacket[]","u":"/node-mysql2/zh-CN/docs/documentation/typescript-examples","h":"#rowdatapacket","p":402},{"i":417,"t":"2Stable Using multipleStatements option as true with multiple queries: import mysql, { RowDataPacket } from 'mysql2'; const conn = mysql.createConnection({ user: 'test', database: 'test', multipleStatements: true, }); const sql = ` SELECT 1 + 1 AS test; SELECT 2 + 2 AS test; `; conn.query(sql, (_err, rows) => { console.log(rows); /** * @rows: [ [ { test: 2 } ], [ { test: 4 } ] ] */ });","s":"RowDataPacket[][]","u":"/node-mysql2/zh-CN/docs/documentation/typescript-examples","h":"#rowdatapacket-1","p":402},{"i":419,"t":"2Stable History Version Changes v3.5.1 OkPacket is deprecated and might be removed in the future major release. Please use ResultSetHeader instead. changedRows option is deprecated and might be removed in the future major release. Please use affectedRows instead. For INSERT, UPDATE, DELETE, TRUNCATE, etc.: import mysql, { ResultSetHeader } from 'mysql2'; const conn = mysql.createConnection({ user: 'test', database: 'test', }); const sql = ` SET @1 = 1; `; conn.query(sql, (_err, result) => { console.log(result); /** * @result: ResultSetHeader { fieldCount: 0, affectedRows: 0, insertId: 0, info: '', serverStatus: 2, warningStatus: 0, changedRows: 0 } */ });","s":"ResultSetHeader","u":"/node-mysql2/zh-CN/docs/documentation/typescript-examples","h":"#resultsetheader","p":402},{"i":421,"t":"2Stable History Version Changes v3.5.1 Introduce ResultSetHeader[] For multiples INSERT, UPDATE, DELETE, TRUNCATE, etc. when using multipleStatements as true: import mysql, { ResultSetHeader } from 'mysql2'; const conn = mysql.createConnection({ user: 'test', database: 'test', multipleStatements: true, }); const sql = ` SET @1 = 1; SET @2 = 2; `; conn.query(sql, (_err, results) => { console.log(results); /** * @results: [ ResultSetHeader { fieldCount: 0, affectedRows: 0, insertId: 0, info: '', serverStatus: 10, warningStatus: 0, changedRows: 0 }, ResultSetHeader { fieldCount: 0, affectedRows: 0, insertId: 0, info: '', serverStatus: 2, warningStatus: 0, changedRows: 0 } ] */ });","s":"ResultSetHeader[]","u":"/node-mysql2/zh-CN/docs/documentation/typescript-examples","h":"#resultsetheader-1","p":402},{"i":423,"t":"2Stable History Version Changes v3.5.1 Introduce ProcedureCallPacket 提示 By performing a Call Procedure using INSERT, UPDATE, etc., the return will be a ProcedureCallPacket (even if you perform multiples queries and set multipleStatements to true): import mysql, { ProcedureCallPacket, ResultSetHeader } from 'mysql2'; const conn = mysql.createConnection({ user: 'test', database: 'test', }); /** ResultSetHeader */ conn.query('DROP PROCEDURE IF EXISTS myProcedure'); /** ResultSetHeader */ conn.query(` CREATE PROCEDURE myProcedure() BEGIN SET @1 = 1; SET @2 = 2; END `); /** ProcedureCallPacket */ const sql = 'CALL myProcedure()'; conn.query>(sql, (_err, result) => { console.log(result); /** * @result: ResultSetHeader { fieldCount: 0, affectedRows: 0, insertId: 0, info: '', serverStatus: 2, warningStatus: 0, changedRows: 0 } */ }); For CREATE PROCEDURE and DROP PROCEDURE, these returns will be the default ResultSetHeader. By using SELECT and SHOW queries in a Procedure Call, it groups the results as: /** ProcedureCallPacket */ [RowDataPacket[], ResultSetHeader] For ProcedureCallPacket, please see the following examples.","s":"ProcedureCallPacket","u":"/node-mysql2/zh-CN/docs/documentation/typescript-examples","h":"#procedurecallpacket","p":402},{"i":425,"t":"0Deprecated OkPacket is deprecated and might be removed in the future major release. Please use ResultSetHeader instead.","s":"OkPacket","u":"/node-mysql2/zh-CN/docs/documentation/typescript-examples","h":"#okpacket","p":402},{"i":427,"t":"You can also check some code examples using MySQL2 and TypeScript to understand advanced concepts: Extending and using Interfaces with RowDataPacket Extending and using Interfaces with RowDataPacket and rowAsArray Extending and using Interfaces with RowDataPacket and multipleStatements Extending and using Interfaces with RowDataPacket, rowAsArray and multipleStatements Checking for ResultSetHeader, extending and using Interfaces with RowDataPacket from ProcedureCallPacket Checking for ResultSetHeader, extending and using Interfaces with RowDataPacket and rowAsArray from ProcedureCallPacket Creating a basic custom MySQL2 Class","s":"Examples","u":"/node-mysql2/zh-CN/docs/documentation/typescript-examples","h":"#examples","p":402},{"i":429,"t":"提示 To explore the examples, please use the sidebar navigation on desktop or access the menu on mobile devices.","s":"Examples","u":"/node-mysql2/zh-CN/docs/examples","h":"","p":428},{"i":431,"t":"MySQL-pg-proxy - MySQL to Postgres proxy server. MySQLite.js - MySQL server with JS-only (emscripten compiled) sqlite backend. SQL-engine - MySQL server with LevelDB backend. MySQL-osquery-proxy - Connect to facebook osquery using MySQL client PlyQL - Connect to Druid using MySQL client","s":"Examples using MySQL server API","u":"/node-mysql2/zh-CN/docs/examples","h":"#examples-using-mysql-server-api","p":428},{"i":433,"t":"index.js 'use strict'; const mysql = require('mysql2'); const through2 = require('through2'); const binlogStream = mysql.createBinlogStream({ serverId: 123, // slave ID, first field in \"show slave hosts\" sql response // you can also specify slave host, username, password and port masterId: 0, filename: 'mysql-bin.000007', binlogPos: 120, flags: 1, // 1 = \"non-blocking mode\" }); binlogStream.pipe( through2.obj((obj, enc, next) => { console.log(obj); next(); }) );","s":"Binlog Watcher","u":"/node-mysql2/zh-CN/docs/examples/binlog-watcher","h":"","p":432},{"i":435,"t":"信息 For queries please see the Simple Queries and Prepared Statements examples.","s":"createConnection","u":"/node-mysql2/zh-CN/docs/examples/connections/create-connection","h":"","p":434},{"i":437,"t":"createConnection(connectionUri: string) promise.js callback.js import mysql from 'mysql2/promise'; try { const connection = await mysql.createConnection( 'mysql://root:password@localhost:3306/test' ); } catch (err) { console.log(err); } const mysql = require('mysql2'); const connection = mysql.createConnection( 'mysql://root:password@localhost:3306/test' ); connection.addListener('error', (err) => { console.log(err); });","s":"createConnection(connectionUri)","u":"/node-mysql2/zh-CN/docs/examples/connections/create-connection","h":"#createconnectionconnectionuri","p":434},{"i":439,"t":"createConnection(config: ConnectionOptions) promise.js callback.js import mysql from 'mysql2/promise'; try { const connection = await mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', // port: 3306, // password: '', }); } catch (err) { console.log(err); } const mysql = require('mysql2'); const connection = mysql.createConnection({ host: 'localhost', user: 'root', database: 'test', // port: 3306, // password: '', }); connection.addListener('error', (err) => { console.log(err); });","s":"createConnection(config)","u":"/node-mysql2/zh-CN/docs/examples/connections/create-connection","h":"#createconnectionconfig","p":434},{"i":441,"t":"createConnection(config: ConnectionOptions) promise.js callback.js import mysql from 'mysql2/promise'; try { const connection = await mysql.createConnection({ // ... passwordSha1: Buffer.from( '8bb6118f8fd6935ad0876a3be34a717d32708ffd', 'hex' ), }); } catch (err) { console.log(err); } const mysql = require('mysql2'); const connection = mysql.createConnection({ // ... passwordSha1: Buffer.from('8bb6118f8fd6935ad0876a3be34a717d32708ffd', 'hex'), }); connection.addListener('error', (err) => { console.log(err); });","s":"createConnection(config) — SHA1","u":"/node-mysql2/zh-CN/docs/examples/connections/create-connection","h":"#createconnectionconfig--sha1","p":434},{"i":443,"t":"createConnection(config: ConnectionOptions) promise.js callback.js certs/ca-cert.pem import mysql from 'mysql2/promise'; try { const connection = await mysql.createConnection({ // ... ssl: { // key: fs.readFileSync('./certs/client-key.pem'), // cert: fs.readFileSync('./certs/client-cert.pem') ca: fs.readFileSync('./certs/ca-cert.pem'), }, }); } catch (err) { console.log(err); } const mysql = require('mysql2'); const connection = mysql.createConnection({ // ... ssl: { // key: fs.readFileSync('./certs/client-key.pem'), // cert: fs.readFileSync('./certs/client-cert.pem') ca: fs.readFileSync('./certs/ca-cert.pem'), }, }); connection.addListener('error', (err) => { console.log(err); }); See ssl/certs.","s":"createConnection(config) — SSL","u":"/node-mysql2/zh-CN/docs/examples/connections/create-connection","h":"#createconnectionconfig--ssl","p":434},{"i":445,"t":"createConnection(config: ConnectionOptions) You can use Amazon RDS string as value to ssl property to connect to Amazon RDS MySQL over SSL. In that case https://s3.amazonaws.com/rds-downloads/mysql-ssl-ca-cert.pem CA cert is used: promise.js callback.js import mysql from 'mysql2/promise'; try { const connection = await mysql.createConnection({ // ... host: 'db.id.ap-southeast-2.rds.amazonaws.com', ssl: 'Amazon RDS', }); } catch (err) { console.log(err); } Testing try { const [res] = await connection.query('SHOW `status` LIKE \"Ssl_cipher\"'); await connection.end(); console.log(res); } catch (err) { console.log(err); } const mysql = require('mysql2'); const connection = mysql.createConnection({ // ... host: 'db.id.ap-southeast-2.rds.amazonaws.com', ssl: 'Amazon RDS', }); connection.addListener('error', (err) => { console.log(err); }); Testing connectionquery('SHOW `status` LIKE \"Ssl_cipher\"', function (err, res) { connection.end(); if (err instanceof Error) { console.log(err); return; } console.log(res); });","s":"createConnection(config) — RDS SSL","u":"/node-mysql2/zh-CN/docs/examples/connections/create-connection","h":"#createconnectionconfig--rds-ssl","p":434},{"i":447,"t":"Issues #2130 — Update TLS certs for Amazon RDS instances Pull Requests #2119 — fix: make startTls code compatible with Bun #2131 — Update Amazon RDS SSL CA cert","s":"Related Links","u":"/node-mysql2/zh-CN/docs/examples/connections/create-connection","h":"#related-links","p":434},{"i":449,"t":"createConnection(config: ConnectionOptions) A.js B.js const mysql = require('mysql2'); const SocksConnection = require('socksjs'); const socksProxy = new SocksConnection({ port: 3306 }); const connection = mysql.createConnection({ stream: socksProxy, }); connection.addListener('error', (err) => { console.log(err); }); const mysql = require('mysql2'); const SocksConnection = require('socksjs'); const connection = mysql.createConnection({ debug: 1, stream: function () { return new SocksConnection({ port: 3306 }); }, }); connection.addListener('error', (err) => { console.log(err); }); Testing connection.execute('SELECT SLEEP(1.1) AS `www`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); }); connection.execute('SELECT SLEEP(1) AS `qqq`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); }); connection.execute('SELECT SLEEP(1) AS `qqq`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); });","s":"createConnection(config) — Socks","u":"/node-mysql2/zh-CN/docs/examples/connections/create-connection","h":"#createconnectionconfig--socks","p":434},{"i":452,"t":"ConnectionOptions Specification","s":"ConnectionOptions","u":"/node-mysql2/zh-CN/docs/examples/connections/create-connection","h":"#connectionoptions","p":434},{"i":454,"t":"信息 For queries please see the Simple Queries and Prepared Statements examples.","s":"createPool","u":"/node-mysql2/zh-CN/docs/examples/connections/create-pool","h":"","p":453},{"i":456,"t":"createPool(connectionUri: string) promise.js callback.js import mysql from 'mysql2/promise'; try { const pool = mysql.createPool('mysql://root:password@localhost:3306/test'); const connection = await pool.getConnection(); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const pool = mysql.createPool('mysql://root:password@localhost:3306/test'); pool.getConnection(function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); 注意 Don't forget to release the connection when finished by using: pool.releaseConnection(connection) connection.release()","s":"createPool(connectionUri)","u":"/node-mysql2/zh-CN/docs/examples/connections/create-pool","h":"#createpoolconnectionuri","p":453},{"i":458,"t":"createPool(config: PoolOptions) promise.js callback.js import mysql from 'mysql2/promise'; try { const pool = mysql.createPool({ host: 'localhost', user: 'root', database: 'test', // port: 3306, // password: '', }); const connection = await pool.getConnection(); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const pool = mysql.createPool({ host: 'localhost', user: 'root', database: 'test', // port: 3306, // password: '', }); pool.getConnection(function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); 注意 Don't forget to release the connection when finished by using: pool.releaseConnection(connection) connection.release()","s":"createPool(config)","u":"/node-mysql2/zh-CN/docs/examples/connections/create-pool","h":"#createpoolconfig","p":453},{"i":460,"t":"createPool(config: PoolOptions) promise.js callback.js import mysql from 'mysql2/promise'; try { const pool = mysql.createPool({ // ... passwordSha1: Buffer.from( '8bb6118f8fd6935ad0876a3be34a717d32708ffd', 'hex' ), }); const connection = await pool.getConnection(); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const pool = mysql.createPool({ // ... passwordSha1: Buffer.from('8bb6118f8fd6935ad0876a3be34a717d32708ffd', 'hex'), }); pool.getConnection(function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); 注意 Don't forget to release the connection when finished by using: pool.releaseConnection(connection) connection.release()","s":"createPool(config) — SHA1","u":"/node-mysql2/zh-CN/docs/examples/connections/create-pool","h":"#createpoolconfig--sha1","p":453},{"i":462,"t":"createPool(config: PoolOptions) promise.js callback.js certs/ca-cert.pem import mysql from 'mysql2/promise'; try { const pool = mysql.createPool({ // ... ssl: { // key: fs.readFileSync('./certs/client-key.pem'), // cert: fs.readFileSync('./certs/client-cert.pem') ca: fs.readFileSync('./certs/ca-cert.pem'), }, }); const connection = await pool.getConnection(); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const pool = mysql.createPool({ // ... ssl: { // key: fs.readFileSync('./certs/client-key.pem'), // cert: fs.readFileSync('./certs/client-cert.pem') ca: fs.readFileSync('./certs/ca-cert.pem'), }, }); pool.getConnection(function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); See ssl/certs. 注意 Don't forget to release the connection when finished by using: pool.releaseConnection(connection) connection.release()","s":"createPool(config) — SSL","u":"/node-mysql2/zh-CN/docs/examples/connections/create-pool","h":"#createpoolconfig--ssl","p":453},{"i":464,"t":"createPool(config: PoolOptions) You can use Amazon RDS string as value to ssl property to connect to Amazon RDS MySQL over SSL. In that case https://s3.amazonaws.com/rds-downloads/mysql-ssl-ca-cert.pem CA cert is used: promise.js callback.js import mysql from 'mysql2/promise'; try { const pool = mysql.createPool({ // ... host: 'db.id.ap-southeast-2.rds.amazonaws.com', ssl: 'Amazon RDS', }); const connection = await pool.getConnection(); // ... some query connection.release(); } catch (err) { console.log(err); } Testing try { const [res] = await connection.query('SHOW `status` LIKE \"Ssl_cipher\"'); await pool.end(); console.log(res); } catch (err) { console.log(err); } const mysql = require('mysql2'); const pool = mysql.createPool({ // ... host: 'db.id.ap-southeast-2.rds.amazonaws.com', ssl: 'Amazon RDS', }); pool.getConnection(function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); Testing connectionquery('SHOW `status` LIKE \"Ssl_cipher\"', function (err, res) { pool.end(); if (err instanceof Error) { console.log(err); return; } console.log(res); }); 注意 Don't forget to release the connection when finished by using: pool.releaseConnection(connection) connection.release()","s":"createPool(config) — RDS SSL","u":"/node-mysql2/zh-CN/docs/examples/connections/create-pool","h":"#createpoolconfig--rds-ssl","p":453},{"i":466,"t":"Issues #2130 — Update TLS certs for Amazon RDS instances Pull Requests #2119 — fix: make startTls code compatible with Bun #2131 — Update Amazon RDS SSL CA cert","s":"Related Links","u":"/node-mysql2/zh-CN/docs/examples/connections/create-pool","h":"#related-links","p":453},{"i":468,"t":"createPool(config: PoolOptions) A.js B.js const mysql = require('mysql2'); const SocksConnection = require('socksjs'); const socksProxy = new SocksConnection({ port: 3306 }); const pool = mysql.createPool({ stream: socksProxy, }); const mysql = require('mysql2'); const SocksConnection = require('socksjs'); const pool = mysql.createPool({ debug: 1, stream: function () { return new SocksConnection({ port: 3306 }); }, }); Testing pool.execute('SELECT SLEEP(1.1) AS `www`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); }); pool.execute('SELECT SLEEP(1) AS `qqq`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); }); pool.execute('SELECT SLEEP(1) AS `qqq`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); });","s":"createPool(config) — Socks","u":"/node-mysql2/zh-CN/docs/examples/connections/create-pool","h":"#createpoolconfig--socks","p":453},{"i":471,"t":"PoolOptions extends all options from ConnectionOptions: ConnectionOptions Specification PoolOptions Specification","s":"PoolOptions","u":"/node-mysql2/zh-CN/docs/examples/connections/create-pool","h":"#pooloptions","p":453},{"i":473,"t":"信息 For queries please see the Simple Queries and Prepared Statements examples.","s":"createPoolCluster","u":"/node-mysql2/zh-CN/docs/examples/connections/createPoolCluster","h":"","p":472},{"i":475,"t":"add(group: string, connectionUri: string) promise.js callback.js import mysql from 'mysql2/promise'; try { const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', 'mysql://root:password@localhost:3306/test'); // poolCluster.add('clusterB', '...'); const connection = await poolCluster.getConnection('clusterA'); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', 'mysql://root:password@localhost:3306/test'); // poolCluster.add('clusterB', '...'); poolCluster.getConnection('clusterA', function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); 注意 Don't forget to release the connection when finished by using: connection.release()","s":"add(group, connectionUri)","u":"/node-mysql2/zh-CN/docs/examples/connections/createPoolCluster","h":"#addgroup-connectionuri","p":472},{"i":477,"t":"add(group: string, config: PoolOptions) promise.js callback.js import mysql from 'mysql2/promise'; try { const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { host: 'localhost', user: 'root', database: 'test', // port: 3306, // password: '', }); // poolCluster.add('clusterB', '...'); const connection = await poolCluster.getConnection('clusterA'); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { host: 'localhost', user: 'root', database: 'test', // port: 3306, // password: '', }); // poolCluster.add('clusterB', '...'); poolCluster.getConnection('clusterA', function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); 注意 Don't forget to release the connection when finished by using: connection.release()","s":"add(group, config)","u":"/node-mysql2/zh-CN/docs/examples/connections/createPoolCluster","h":"#addgroup-config","p":472},{"i":479,"t":"add(group: string, config: PoolOptions) promise.js callback.js import mysql from 'mysql2/promise'; try { const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { // ... passwordSha1: Buffer.from( '8bb6118f8fd6935ad0876a3be34a717d32708ffd', 'hex' ), }); // poolCluster.add('clusterB', '...'); const connection = await poolCluster.getConnection('clusterA'); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { // ... passwordSha1: Buffer.from('8bb6118f8fd6935ad0876a3be34a717d32708ffd', 'hex'), }); // poolCluster.add('clusterB', '...'); poolCluster.getConnection('clusterA', function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); 注意 Don't forget to release the connection when finished by using: connection.release()","s":"add(group, config) — SHA1","u":"/node-mysql2/zh-CN/docs/examples/connections/createPoolCluster","h":"#addgroup-config--sha1","p":472},{"i":481,"t":"add(group: string, config: PoolOptions) promise.js callback.js certs/ca-cert.pem import mysql from 'mysql2/promise'; try { const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { // ... ssl: { // key: fs.readFileSync('./certs/client-key.pem'), // cert: fs.readFileSync('./certs/client-cert.pem') ca: fs.readFileSync('./certs/ca-cert.pem'), }, }); // poolCluster.add('clusterB', '...'); const connection = await poolCluster.getConnection('clusterA'); // ... some query connection.release(); } catch (err) { console.log(err); } const mysql = require('mysql2'); const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { // ... ssl: { // key: fs.readFileSync('./certs/client-key.pem'), // cert: fs.readFileSync('./certs/client-cert.pem') ca: fs.readFileSync('./certs/ca-cert.pem'), }, }); // poolCluster.add('clusterB', '...'); poolCluster.getConnection('clusterA', function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); See ssl/certs. 注意 Don't forget to release the connection when finished by using: connection.release()","s":"add(group, config) — SSL","u":"/node-mysql2/zh-CN/docs/examples/connections/createPoolCluster","h":"#addgroup-config--ssl","p":472},{"i":483,"t":"add(group: string, config: PoolOptions) You can use Amazon RDS string as value to ssl property to connect to Amazon RDS MySQL over SSL. In that case https://s3.amazonaws.com/rds-downloads/mysql-ssl-ca-cert.pem CA cert is used: promise.js callback.js import mysql from 'mysql2/promise'; try { const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { // ... host: 'db.id.ap-southeast-2.rds.amazonaws.com', ssl: 'Amazon RDS', }); // poolCluster.add('clusterB', '...'); const connection = await poolCluster.getConnection('clusterA'); // ... some query connection.release(); } catch (err) { console.log(err); } Testing try { const [res] = await connection.query('SHOW `status` LIKE \"Ssl_cipher\"'); await poolCluster.end(); console.log(res); } catch (err) { console.log(err); } const mysql = require('mysql2'); const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { // ... host: 'db.id.ap-southeast-2.rds.amazonaws.com', ssl: 'Amazon RDS', }); // poolCluster.add('clusterB', '...'); poolCluster.getConnection('clusterA', function (err, connection) { if (err instanceof Error) { console.log(err); return; } // ... some query connection.release(); }); Testing connectionquery('SHOW `status` LIKE \"Ssl_cipher\"', function (err, res) { poolCluster.end(); if (err instanceof Error) { console.log(err); return; } console.log(res); }); 注意 Don't forget to release the connection when finished by using: connection.release()","s":"add(group, config) — RDS SSL","u":"/node-mysql2/zh-CN/docs/examples/connections/createPoolCluster","h":"#addgroup-config--rds-ssl","p":472},{"i":485,"t":"Issues #2130 — Update TLS certs for Amazon RDS instances Pull Requests #2119 — fix: make startTls code compatible with Bun #2131 — Update Amazon RDS SSL CA cert","s":"Related Links","u":"/node-mysql2/zh-CN/docs/examples/connections/createPoolCluster","h":"#related-links","p":472},{"i":487,"t":"add(group: string, config: PoolOptions) A.js B.js const mysql = require('mysql2'); const SocksConnection = require('socksjs'); const socksProxy = new SocksConnection({ port: 3306 }); const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { stream: socksProxy, }); // poolCluster.add('clusterB', '...'); const poolNamespace = poolCluster.of('clusterA'); const mysql = require('mysql2'); const SocksConnection = require('socksjs'); const poolCluster = mysql.createPoolCluster(); poolCluster.add('clusterA', { debug: 1, stream: function () { return new SocksConnection({ port: 3306 }); }, }); // poolCluster.add('clusterB', '...'); const poolNamespace = poolCluster.of('clusterA'); Testing poolNamespace.execute('SELECT SLEEP(1.1) AS `www`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); }); poolNamespace.execute('SELECT SLEEP(1) AS `qqq`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); }); poolNamespace.execute('SELECT SLEEP(1) AS `qqq`', (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows, fields); });","s":"add(group, config) — Socks","u":"/node-mysql2/zh-CN/docs/examples/connections/createPoolCluster","h":"#addgroup-config--socks","p":472},{"i":490,"t":"PoolOptions extends all options from ConnectionOptions: ConnectionOptions Specification PoolOptions Specification","s":"PoolOptions","u":"/node-mysql2/zh-CN/docs/examples/connections/createPoolCluster","h":"#pooloptions","p":472},{"i":492,"t":"await.js co.js .babelrc package.json 'use strict'; const mysql = require('mysql2/promise'); async function test() { const c = await mysql.createConnection({ port: 3306, user: 'testuser', namedPlaceholders: true, password: 'testpassword', }); console.log('connected!'); const [rows, fields] = await c.query('show databases'); console.log(rows); try { const [rows, fields] = await c.query('some invalid sql here'); } catch (e) { console.log('caught exception!', e); } console.log(await c.execute('select sleep(0.5)')); console.log('after first sleep'); console.log(await c.execute('select sleep(0.5)')); console.log('after second sleep'); let start = +new Date(); console.log( await Promise.all([ c.execute('select sleep(2.5)'), c.execute('select sleep(2.5)'), ]) ); console.log( 'after 2+3 parallel sleep which is in fact not parallel because commands are queued per connection' ); let end = +new Date(); console.log(end - start); await c.end(); const p = mysql.createPool({ port: 3306, user: 'testuser', namedPlaceholders: true, password: 'testpassword', }); console.log(await p.execute('select sleep(0.5)')); console.log('after first pool sleep'); start = +new Date(); console.log( await Promise.all([ p.execute('select sleep(2.5)'), p.execute('select sleep(2.5)'), ]) ); console.log('after 2+3 parallel pool sleep'); end = +new Date(); console.log(end - start); await p.end(); } test() .then(() => { console.log('done'); }) .catch((err) => { console.log('error!', err); throw err; }); 'use strict'; const mysql = require('mysql2/promise'); const co = require('co'); co(function* () { const c = yield mysql.createConnection({ port: 3306, user: 'root', namedPlaceholders: true, }); const rows = yield c.query('show databases'); console.log(rows); console.log(yield c.execute('select 1+:toAdd as qqq', { toAdd: 10 })); yield c.end(); }) .then(function () { console.log('done'); }) .catch(function (err) { console.log(err); throw err; }); { \"plugins\": [\"transform-async-to-generator\"] } { \"name\": \"promise-co-await\", \"version\": \"1.0.0\", \"description\": \"\", \"main\": \"await.js\", \"scripts\": { \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\" }, \"author\": \"\", \"license\": \"ISC\", \"dependencies\": { \"babel-cli\": \"^6.9.0\" } }","s":"await — co","u":"/node-mysql2/zh-CN/docs/examples/promise-wrapper/co-await","h":"","p":491},{"i":494,"t":"MySQL2 provides execute helper which will prepare and query the statement. You can also manually prepare / unprepare statement with prepare / unprepare methods. See detailed documentaion in Prepared Statements. 提示 If you execute same statement again, it will be picked form a LRU cache which will save query preparation time and give better performance. Usage examples: INSERT SELECT UPDATE DELETE","s":"Prepared Statements","u":"/node-mysql2/zh-CN/docs/examples/queries/prepared-statements","h":"","p":493},{"i":497,"t":"execute(sql: string, values: any[]) promise.js callback.js try { const sql = 'DELETE FROM `users` WHERE `name` = ? LIMIT 1'; const values = ['Page']; const [result, fields] = await connection.execute(sql, values); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'DELETE FROM `users` WHERE `name` = ? LIMIT 1'; const values = ['Page']; connection.execute(sql, values, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); }); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available 信息 The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(sql, values)","u":"/node-mysql2/zh-CN/docs/examples/queries/prepared-statements/delete","h":"#executesql-values","p":495},{"i":499,"t":"execute(options: QueryOptions) promise.js callback.js try { const sql = 'DELETE FROM `users` WHERE `name` = ? LIMIT 1'; const values = ['Page']; const [result, fields] = await connection.execute({ sql, values, // ... other options }); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'DELETE FROM `users` WHERE `name` = ? LIMIT 1'; const values = ['Page']; connection.execute( { sql, values, // ... other options }, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available 信息 The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options)","u":"/node-mysql2/zh-CN/docs/examples/queries/prepared-statements/delete","h":"#executeoptions","p":495},{"i":501,"t":"execute(options: QueryOptions, values: any[]) promise.js callback.js try { const sql = 'DELETE FROM `users` WHERE `name` = ? LIMIT 1'; const values = ['Page']; const [result, fields] = await connection.execute( { sql, // ... other options }, values ); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'DELETE FROM `users` WHERE `name` = ? LIMIT 1'; const values = ['Page']; connection.execute( { sql, // ... other options }, values, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available 信息 The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options, values)","u":"/node-mysql2/zh-CN/docs/examples/queries/prepared-statements/delete","h":"#executeoptions-values","p":495},{"i":504,"t":"ResultSetHeader Specification","s":"ResultSetHeader","u":"/node-mysql2/zh-CN/docs/examples/queries/prepared-statements/delete","h":"#resultsetheader","p":495},{"i":506,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/zh-CN/docs/examples/queries/prepared-statements/delete","h":"#queryoptions","p":495},{"i":509,"t":"execute(sql: string, values: any[]) promise.js callback.js try { const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (?, ?), (?,?)'; const values = ['Josh', 19, 'Page', 45]; const [result, fields] = await connection.execute(sql, values); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (?, ?), (?,?)'; const values = ['Josh', 19, 'Page', 45]; connection.execute(sql, values, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); }); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available 信息 The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(sql, values)","u":"/node-mysql2/zh-CN/docs/examples/queries/prepared-statements/insert","h":"#executesql-values","p":507},{"i":511,"t":"execute(options: QueryOptions) promise.js callback.js try { const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (?, ?), (?,?)'; const values = ['Josh', 19, 'Page', 45]; const [result, fields] = await connection.execute({ sql, values, // ... other options }); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (?, ?), (?,?)'; const values = ['Josh', 19, 'Page', 45]; connection.execute( { sql, values, // ... other options }, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available 信息 The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options)","u":"/node-mysql2/zh-CN/docs/examples/queries/prepared-statements/insert","h":"#executeoptions","p":507},{"i":513,"t":"execute(options: QueryOptions, values: any[]) promise.js callback.js try { const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (?, ?), (?,?)'; const values = ['Josh', 19, 'Page', 45]; const [result, fields] = await connection.execute( { sql, // ... other options }, values ); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (?, ?), (?,?)'; const values = ['Josh', 19, 'Page', 45]; connection.execute( { sql, // ... other options }, values, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available 信息 The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options, values)","u":"/node-mysql2/zh-CN/docs/examples/queries/prepared-statements/insert","h":"#executeoptions-values","p":507},{"i":516,"t":"ResultSetHeader Specification","s":"ResultSetHeader","u":"/node-mysql2/zh-CN/docs/examples/queries/prepared-statements/insert","h":"#resultsetheader","p":507},{"i":518,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/zh-CN/docs/examples/queries/prepared-statements/insert","h":"#queryoptions","p":507},{"i":521,"t":"execute(sql: string, values: any[]) promise.js callback.js try { const sql = 'SELECT * FROM `users` WHERE `name` = ? AND `age` > ?'; const values = ['Page', 45]; const [rows, fields] = await connection.execute(sql, values); console.log(rows); console.log(fields); } catch (err) { console.log(err); } const sql = 'SELECT * FROM `users` WHERE `name` = ? AND `age` > ?'; const values = ['Page', 45]; connection.execute(sql, values, (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows); console.log(fields); }); rows contains rows returned by server fields contains extra meta data about rows, if available 信息 The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(sql, values)","u":"/node-mysql2/zh-CN/docs/examples/queries/prepared-statements/select","h":"#executesql-values","p":519},{"i":523,"t":"execute(options: QueryOptions) promise.js callback.js try { const sql = 'SELECT * FROM `users` WHERE `name` = ? AND `age` > ?'; const values = ['Page', 45]; const [rows, fields] = await connection.execute({ sql, values, // ... other options }); console.log(rows); console.log(fields); } catch (err) { console.log(err); } const sql = 'SELECT * FROM `users` WHERE `name` = ? AND `age` > ?'; const values = ['Page', 45]; connection.execute( { sql, values, // ... other options }, (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows); console.log(fields); } ); rows contains rows returned by server fields contains extra meta data about rows, if available 信息 The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options)","u":"/node-mysql2/zh-CN/docs/examples/queries/prepared-statements/select","h":"#executeoptions","p":519},{"i":525,"t":"execute(options: QueryOptions, values: any[]) promise.js callback.js try { const sql = 'SELECT * FROM `users` WHERE `name` = ? AND `age` > ?'; const values = ['Page', 45]; const [rows, fields] = await connection.execute( { sql, // ... other options }, values ); console.log(rows); console.log(fields); } catch (err) { console.log(err); } const sql = 'SELECT * FROM `users` WHERE `name` = ? AND `age` > ?'; const values = ['Page', 45]; connection.execute( { sql, // ... other options }, values, (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows); console.log(fields); } ); rows contains rows returned by server fields contains extra meta data about rows, if available 信息 The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options, values)","u":"/node-mysql2/zh-CN/docs/examples/queries/prepared-statements/select","h":"#executeoptions-values","p":519},{"i":528,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/zh-CN/docs/examples/queries/prepared-statements/select","h":"#queryoptions","p":519},{"i":531,"t":"execute(sql: string, values: any[]) promise.js callback.js try { const sql = 'UPDATE `users` SET `age` = ? WHERE `name` = ? LIMIT 1'; const values = [20, 'Josh']; const [result, fields] = await connection.execute(sql, values); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'UPDATE `users` SET `age` = ? WHERE `name` = ? LIMIT 1'; const values = [20, 'Josh']; connection.execute(sql, values, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); }); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available 信息 The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(sql, values)","u":"/node-mysql2/zh-CN/docs/examples/queries/prepared-statements/update","h":"#executesql-values","p":529},{"i":533,"t":"execute(options: QueryOptions) promise.js callback.js try { const sql = 'UPDATE `users` SET `age` = ? WHERE `name` = ? LIMIT 1'; const values = [20, 'Josh']; const [result, fields] = await connection.execute({ sql, values, // ... other options }); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'UPDATE `users` SET `age` = ? WHERE `name` = ? LIMIT 1'; const values = [20, 'Josh']; connection.execute( { sql, values, // ... other options }, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available 信息 The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options)","u":"/node-mysql2/zh-CN/docs/examples/queries/prepared-statements/update","h":"#executeoptions","p":529},{"i":535,"t":"execute(options: QueryOptions, values: any[]) promise.js callback.js try { const sql = 'UPDATE `users` SET `age` = ? WHERE `name` = ? LIMIT 1'; const values = [20, 'Josh']; const [result, fields] = await connection.execute( { sql, // ... other options }, values ); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'UPDATE `users` SET `age` = ? WHERE `name` = ? LIMIT 1'; const values = [20, 'Josh']; connection.execute( { sql, // ... other options }, values, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available 信息 The connection used for the query (execute) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"execute(options, values)","u":"/node-mysql2/zh-CN/docs/examples/queries/prepared-statements/update","h":"#executeoptions-values","p":529},{"i":538,"t":"ResultSetHeader Specification","s":"ResultSetHeader","u":"/node-mysql2/zh-CN/docs/examples/queries/prepared-statements/update","h":"#resultsetheader","p":529},{"i":540,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/zh-CN/docs/examples/queries/prepared-statements/update","h":"#queryoptions","p":529},{"i":542,"t":"信息 For Prepared Statements or Placeholders / Parameters examples, please see here. Usage examples: INSERT SELECT UPDATE DELETE","s":"Simple Queries","u":"/node-mysql2/zh-CN/docs/examples/queries/simple-queries","h":"","p":541},{"i":544,"t":"The examples below also work for the execute method.","s":"DELETE","u":"/node-mysql2/zh-CN/docs/examples/queries/simple-queries/delete","h":"","p":543},{"i":546,"t":"query(sql: string) promise.js callback.js try { const sql = 'DELETE FROM `users` WHERE `name` = \"Page\" LIMIT 1'; const [result, fields] = await connection.query(sql); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'DELETE FROM `users` WHERE `name` = \"Page\" LIMIT 1'; connection.query(sql, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); }); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available 信息 The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(sql)","u":"/node-mysql2/zh-CN/docs/examples/queries/simple-queries/delete","h":"#querysql","p":543},{"i":548,"t":"query(options: QueryOptions) promise.js callback.js try { const sql = 'DELETE FROM `users` WHERE `name` = \"Page\" LIMIT 1'; const [result, fields] = await connection.query({ sql, // ... other options }); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'DELETE FROM `users` WHERE `name` = \"Page\" LIMIT 1'; connection.query( { sql, // ... other options }, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available 信息 The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(options)","u":"/node-mysql2/zh-CN/docs/examples/queries/simple-queries/delete","h":"#queryoptions","p":543},{"i":551,"t":"ResultSetHeader Specification","s":"ResultSetHeader","u":"/node-mysql2/zh-CN/docs/examples/queries/simple-queries/delete","h":"#resultsetheader","p":543},{"i":553,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/zh-CN/docs/examples/queries/simple-queries/delete","h":"#queryoptions-1","p":543},{"i":555,"t":"The examples below also work for the execute method.","s":"INSERT","u":"/node-mysql2/zh-CN/docs/examples/queries/simple-queries/insert","h":"","p":554},{"i":557,"t":"query(sql: string) promise.js callback.js try { const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (\"Josh\", 19), (\"Page\", 45)'; const [result, fields] = await connection.query(sql); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (\"Josh\", 19), (\"Page\", 45)'; connection.query(sql, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); }); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available 信息 The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(sql)","u":"/node-mysql2/zh-CN/docs/examples/queries/simple-queries/insert","h":"#querysql","p":554},{"i":559,"t":"query(options: QueryOptions) promise.js callback.js try { const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (\"Josh\", 19), (\"Page\", 45)'; const [result, fields] = await connection.query({ sql, // ... other options }); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'INSERT INTO `users`(`name`, `age`) VALUES (\"Josh\", 19), (\"Page\", 45)'; connection.query( { sql, // ... other options }, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available 信息 The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(options)","u":"/node-mysql2/zh-CN/docs/examples/queries/simple-queries/insert","h":"#queryoptions","p":554},{"i":562,"t":"ResultSetHeader Specification","s":"ResultSetHeader","u":"/node-mysql2/zh-CN/docs/examples/queries/simple-queries/insert","h":"#resultsetheader","p":554},{"i":564,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/zh-CN/docs/examples/queries/simple-queries/insert","h":"#queryoptions-1","p":554},{"i":566,"t":"The examples below also work for the execute method.","s":"SELECT","u":"/node-mysql2/zh-CN/docs/examples/queries/simple-queries/select","h":"","p":565},{"i":568,"t":"query(sql: string) promise.js callback.js try { const sql = 'SELECT * FROM `users` WHERE `name` = \"Page\" AND `age` > 45'; const [rows, fields] = await connection.query(sql); console.log(rows); console.log(fields); } catch (err) { console.log(err); } const sql = 'SELECT * FROM `users` WHERE `name` = \"Page\" AND `age` > 45'; connection.query(sql, (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows); console.log(fields); }); rows contains rows returned by server fields contains extra meta data about rows, if available 信息 The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(sql)","u":"/node-mysql2/zh-CN/docs/examples/queries/simple-queries/select","h":"#querysql","p":565},{"i":570,"t":"query(options: QueryOptions) promise.js callback.js try { const sql = 'SELECT * FROM `users` WHERE `name` = \"Page\" AND `age` > 45'; const [rows, fields] = await connection.query({ sql, // ... other options }); console.log(rows); console.log(fields); } catch (err) { console.log(err); } const sql = 'SELECT * FROM `users` WHERE `name` = \"Page\" AND `age` > 45'; connection.query( { sql, // ... other options }, (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows); console.log(fields); } ); rows contains rows returned by server fields contains extra meta data about rows, if available 信息 The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(options)","u":"/node-mysql2/zh-CN/docs/examples/queries/simple-queries/select","h":"#queryoptions","p":565},{"i":572,"t":"query(options: QueryOptions) promise.js callback.js try { const sql = 'SELECT * FROM `users` WHERE `name` = \"Page\" AND `age` > 45'; const [rows, fields] = await connection.query({ sql, rowsAsArray: true, // ... other options }); console.log(rows); console.log(fields); } catch (err) { console.log(err); } const sql = 'SELECT * FROM `users` WHERE `name` = \"Page\" AND `age` > 45'; connection.query( { sql, rowsAsArray: true, // ... other options }, (err, rows, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(rows); console.log(fields); } ); rows contains rows returned by server as array fields contains extra meta data about rows, if available 信息 The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(options) — Row as Array","u":"/node-mysql2/zh-CN/docs/examples/queries/simple-queries/select","h":"#queryoptions--row-as-array","p":565},{"i":575,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/zh-CN/docs/examples/queries/simple-queries/select","h":"#queryoptions-1","p":565},{"i":577,"t":"The examples below also work for the execute method.","s":"UPDATE","u":"/node-mysql2/zh-CN/docs/examples/queries/simple-queries/update","h":"","p":576},{"i":579,"t":"query(sql: string) promise.js callback.js try { const sql = 'UPDATE `users` SET `age` = 20 WHERE `name` = \"Josh\" LIMIT 1'; const [result, fields] = await connection.query(sql); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'UPDATE `users` SET `age` = 20 WHERE `name` = \"Josh\" LIMIT 1'; connection.query(sql, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); }); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available 信息 The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(sql)","u":"/node-mysql2/zh-CN/docs/examples/queries/simple-queries/update","h":"#querysql","p":576},{"i":581,"t":"query(options: QueryOptions) promise.js callback.js try { const sql = 'UPDATE `users` SET `age` = 20 WHERE `name` = \"Josh\" LIMIT 1'; const [result, fields] = await connection.query({ sql, // ... other options }); console.log(result); console.log(fields); } catch (err) { console.log(err); } const sql = 'UPDATE `users` SET `age` = 20 WHERE `name` = \"Josh\" LIMIT 1'; connection.query( { sql, // ... other options }, (err, result, fields) => { if (err instanceof Error) { console.log(err); return; } console.log(result); console.log(fields); } ); result: contains a ResultSetHeader object, which provides details about the operation executed by the server. fields contains extra meta data about the operation, if available 信息 The connection used for the query (.query()) can be obtained through the createConnection, createPool or createPoolCluster methods.","s":"query(options)","u":"/node-mysql2/zh-CN/docs/examples/queries/simple-queries/update","h":"#queryoptions","p":576},{"i":584,"t":"ResultSetHeader Specification","s":"ResultSetHeader","u":"/node-mysql2/zh-CN/docs/examples/queries/simple-queries/update","h":"#resultsetheader","p":576},{"i":586,"t":"QueryOptions Specification","s":"QueryOptions","u":"/node-mysql2/zh-CN/docs/examples/queries/simple-queries/update","h":"#queryoptions-1","p":576},{"i":588,"t":"index.js 'use strict'; const mysql = require('mysql2'); const ClientFlags = require('mysql2/lib/constants/client.js'); const server = mysql.createServer(); server.listen(3307); server.on('connection', (conn) => { console.log('connection'); conn.serverHandshake({ protocolVersion: 10, serverVersion: 'node.js rocks', connectionId: 1234, statusFlags: 2, characterSet: 8, capabilityFlags: 0xffffff ^ ClientFlags.COMPRESS, }); conn.on('field_list', (table, fields) => { console.log('field list:', table, fields); conn.writeEof(); }); const remote = mysql.createConnection({ user: 'root', database: 'dbname', host: 'server.example.com', password: 'secret', }); conn.on('query', (sql) => { console.log(`proxying query: ${sql}`); remote.query(sql, function (err) { // overloaded args, either (err, result :object) // or (err, rows :array, columns :array) if (Array.isArray(arguments[1])) { // response to a 'select', 'show' or similar const rows = arguments[1], columns = arguments[2]; console.log('rows', rows); console.log('columns', columns); conn.writeTextResult(rows, columns); } else { // response to an 'insert', 'update' or 'delete' const result = arguments[1]; console.log('result', result); conn.writeOk(result); } }); }); conn.on('end', remote.end.bind(remote)); });","s":"MySQL Proxy","u":"/node-mysql2/zh-CN/docs/examples/tests/mysql-proxy","h":"","p":587},{"i":590,"t":"index.js 'use strict'; const pool = require('mysql2').createPool({ host: 'localhost', user: 'root', database: 'test', password: 'root', }); setInterval(() => { for (let i = 0; i < 5; ++i) { pool.query((err, rows, fields) => { console.log(rows, fields); // Connection is automatically released once query resolves }); } }, 1000); setInterval(() => { for (let i = 0; i < 5; ++i) { pool.getConnection((err, db) => { db.query('select sleep(0.5) as qqq', (err, rows, fields) => { console.log(rows, fields); db.release(); }); }); } }, 1000);","s":"Pool","u":"/node-mysql2/zh-CN/docs/examples/tests/pool","h":"","p":589},{"i":592,"t":"index.js 'use strict'; const mysql = require('mysql2'); const flags = require('mysql2/lib/constants/client.js'); const auth = require('mysql2/lib/auth_41.js'); function authenticate(params, cb) { console.log(params); const doubleSha = auth.doubleSha1('pass123'); const isValid = auth.verifyToken( params.authPluginData1, params.authPluginData2, params.authToken, doubleSha ); if (isValid) { cb(null); } else { // for list of codes lib/constants/errors.js cb(null, { message: 'wrong password dude', code: 1045 }); } } const server = mysql.createServer(); server.listen(3333); server.on('connection', (conn) => { // we can deny connection here: // conn.writeError({ message: 'secret', code: 123 }); // conn.close(); conn.serverHandshake({ protocolVersion: 10, serverVersion: '5.6.10', // 'node.js rocks', connectionId: 1234, statusFlags: 2, characterSet: 8, // capabilityFlags: 0xffffff, // capabilityFlags: -2113931265, capabilityFlags: 2181036031, authCallback: authenticate, }); conn.on('field_list', (table, fields) => { console.log('FIELD LIST:', table, fields); conn.writeEof(); }); conn.on('query', (query) => { conn.writeColumns([ { catalog: 'def', schema: 'test', table: 'test_table', orgTable: 'test_table', name: 'beta', orgName: 'beta', characterSet: 33, columnLength: 384, columnType: 253, flags: 0, decimals: 0, }, ]); conn.writeTextRow(['test тест テスト փորձարկում পরীক্ষা kiểm tra ']); conn.writeTextRow(['ტესტი પરીક્ષણ מבחן פּרובירן اختبار परीक्षण']); conn.writeEof(); conn.close(); }); });","s":"Server","u":"/node-mysql2/zh-CN/docs/examples/tests/server","h":"","p":591},{"i":594,"t":"index.ts db.ts /** * The types are explicity for learning purpose */ import { PoolOptions } from 'mysql2/promise'; import { MySQL } from './db.js'; interface User extends RowDataPacket { id: number; name: string; } const access: PoolOptions = { host: '', user: '', password: '', database: '', }; (async () => { const mysql = new MySQL(access); /** Deleting the `users` table, if it exists */ await mysql.queryResult('DROP TABLE IF EXISTS `users`;'); /** Creating a minimal user table */ await mysql.queryResult( 'CREATE TABLE `users` (`id` INT(11) AUTO_INCREMENT, `name` VARCHAR(50), PRIMARY KEY (`id`));' ); /** Inserting some users */ const [inserted] = await mysql.executeResult( 'INSERT INTO `users`(`name`) VALUES(?), (?), (?), (?);', ['Josh', 'John', 'Marie', 'Gween'] ); console.log('Inserted:', inserted.affectedRows); /** Getting users */ const [users] = await mysql.queryRows( 'SELECT * FROM `users` ORDER BY `name` ASC;' ); users.forEach((user: User) => { console.log('-----------'); console.log('id: ', user.id); console.log('name:', user.name); }); await mysql.connection.end(); })(); /** Output * * Inserted: 4 * ----------- * id: 4 * name: Gween * ----------- * id: 2 * name: John * ----------- * id: 1 * name: Josh * ----------- * id: 3 * name: Marie */ /** * The types are explicity for learning purpose */ import { createPool, PoolOptions, Pool, ResultSetHeader, RowDataPacket, } from 'mysql2/promise'; export class MySQL { private conn: Pool; private credentials: PoolOptions; constructor(credentials: PoolOptions) { this.credentials = credentials; this.conn = createPool(this.credentials); } /** A random method to simulate a step before to get the class methods */ private ensureConnection() { if (!this?.conn) this.conn = createPool(this.credentials); } /** For `SELECT` and `SHOW` */ get queryRows() { this.ensureConnection(); return this.conn.query.bind(this.conn); } /** For `SELECT` and `SHOW` with `rowAsArray` as `true` */ get queryRowsAsArray() { this.ensureConnection(); return this.conn.query.bind(this.conn); } /** For `INSERT`, `UPDATE`, etc. */ get queryResult() { this.ensureConnection(); return this.conn.query.bind(this.conn); } /** For multiple `INSERT`, `UPDATE`, etc. with `multipleStatements` as `true` */ get queryResults() { this.ensureConnection(); return this.conn.query.bind(this.conn); } /** For `SELECT` and `SHOW` */ get executeRows() { this.ensureConnection(); return this.conn.execute.bind(this.conn); } /** For `SELECT` and `SHOW` with `rowAsArray` as `true` */ get executeRowsAsArray() { this.ensureConnection(); return this.conn.execute.bind(this.conn); } /** For `INSERT`, `UPDATE`, etc. */ get executeResult() { this.ensureConnection(); return this.conn.execute.bind(this.conn); } /** For multiple `INSERT`, `UPDATE`, etc. with `multipleStatements` as `true` */ get executeResults() { this.ensureConnection(); return this.conn.execute.bind(this.conn); } /** Expose the Pool Connection */ get connection() { return this.conn; } }","s":"Basic Custom Class","u":"/node-mysql2/zh-CN/docs/examples/typescript/basic-custom-class","h":"","p":593},{"i":596,"t":"index.ts /** * The types are explicity for learning purpose * By extending the `RowDataPacket`, you can use your Interface in `query` and `execute` */ import mysql, { ConnectionOptions, ProcedureCallPacket, ResultSetHeader, RowDataPacket, } from 'mysql2/promise'; interface User extends RowDataPacket { id: number; name: string; } const isResultSetHeader = (data: unknown): data is ResultSetHeader => { if (!data || typeof data !== 'object') return false; const keys = [ 'fieldCount', 'affectedRows', 'insertId', 'info', 'serverStatus', 'warningStatus', 'changedRows', ]; return keys.every((key) => key in data); }; (async () => { const access: ConnectionOptions = { host: '', user: '', password: '', database: '', }; const conn = await mysql.createConnection(access); /** Deleting the `users` table, if it exists */ await conn.query('DROP TABLE IF EXISTS `users`;'); /** Creating a minimal user table */ await conn.query( 'CREATE TABLE `users` (`id` INT(11) AUTO_INCREMENT, `name` VARCHAR(50), PRIMARY KEY (`id`));' ); /** Inserting some users */ const [inserted] = await conn.execute( 'INSERT INTO `users`(`name`) VALUES(?), (?), (?), (?);', ['Josh', 'John', 'Marie', 'Gween'] ); console.log('Inserted:', inserted.affectedRows); /** Deleting the `getUsers` procedure, if it exists */ await conn.query('DROP PROCEDURE IF EXISTS getUsers'); /** Creating a procedure to get the users */ await conn.query(` CREATE PROCEDURE getUsers() BEGIN SELECT * FROM users ORDER BY name ASC; END `); /** Getting users */ const [procedureResult] = await conn.query>('CALL getUsers()'); procedureResult.forEach((users) => { /** By perform a `SELECT` or `SHOW`, The last item of `procedureResult` always be a `ResultSetHeader` */ if (isResultSetHeader(users)) { console.log('----------------'); console.log('Affected Rows:', users.affectedRows); } else { users.forEach((user) => { console.log('----------------'); console.log('id: ', user.id); console.log('name:', user.name); }); } }); await conn.end(); })(); /** Output * * Inserted: 4 * ---------------- * id: 4 * name: Gween * ---------------- * id: 2 * name: John * ---------------- * id: 1 * name: Josh * ---------------- * id: 3 * name: Marie * ---------------- * Affected Rows: 0 */","s":"Procedure Call Packet","u":"/node-mysql2/zh-CN/docs/examples/typescript/procedure-call/index","h":"","p":595},{"i":598,"t":"index.ts /** * The types are explicity for learning purpose * By extending the `RowDataPacket`, you can use your Interface in `query` and `execute` */ import mysql, { ConnectionOptions, ProcedureCallPacket, ResultSetHeader, RowDataPacket, } from 'mysql2/promise'; interface User extends RowDataPacket { /** id */ 0: number; /** name */ 1: string; } const isResultSetHeader = (data: unknown): data is ResultSetHeader => { if (!data || typeof data !== 'object') return false; const keys = [ 'fieldCount', 'affectedRows', 'insertId', 'info', 'serverStatus', 'warningStatus', 'changedRows', ]; return keys.every((key) => key in data); }; (async () => { const access: ConnectionOptions = { host: '', user: '', password: '', database: '', rowsAsArray: true, }; const conn = await mysql.createConnection(access); /** Deleting the `users` table, if it exists */ await conn.query('DROP TABLE IF EXISTS `users`;'); /** Creating a minimal user table */ await conn.query( 'CREATE TABLE `users` (`id` INT(11) AUTO_INCREMENT, `name` VARCHAR(50), PRIMARY KEY (`id`));' ); /** Inserting some users */ const [inserted] = await conn.execute( 'INSERT INTO `users`(`name`) VALUES(?), (?), (?), (?);', ['Josh', 'John', 'Marie', 'Gween'] ); console.log('Inserted:', inserted.affectedRows); /** Deleting the `getUsers` procedure, if it exists */ await conn.query('DROP PROCEDURE IF EXISTS getUsers'); /** Creating a procedure to get the users */ await conn.query(` CREATE PROCEDURE getUsers() BEGIN SELECT * FROM users ORDER BY name ASC; END `); /** Getting users */ const [procedureResult] = await conn.query>('CALL getUsers()'); procedureResult.forEach((users) => { /** By perform a `SELECT` or `SHOW`, The last item of `procedureResult` always be a `ResultSetHeader` */ if (isResultSetHeader(users)) { console.log('----------------'); console.log('Affected Rows:', users.affectedRows); } else { users.forEach((user) => { console.log('----------------'); console.log('id: ', user[0]); console.log('name:', user[1]); }); } }); await conn.end(); })(); /** Output * * Inserted: 4 * ---------------- * id: 4 * name: Gween * ---------------- * id: 2 * name: John * ---------------- * id: 1 * name: Josh * ---------------- * id: 3 * name: Marie * ---------------- * Affected Rows: 0 */","s":"Procedure Call Packet (Row as Array)","u":"/node-mysql2/zh-CN/docs/examples/typescript/procedure-call/row-as-array","h":"","p":597},{"i":600,"t":"index.ts /** * The types are explicity for learning purpose * By extending the `RowDataPacket`, you can use your Interface in `query` and `execute` */ import mysql, { ConnectionOptions, ResultSetHeader, RowDataPacket, } from 'mysql2/promise'; interface User extends RowDataPacket { id: number; name: string; } (async () => { const access: ConnectionOptions = { host: '', user: '', password: '', database: '', }; const conn = await mysql.createConnection(access); /** Deleting the `users` table, if it exists */ await conn.query